Intuit Capabilities
Naftiko 0.5 capability definitions for Intuit - 100 capabilities showing integration workflows and service orchestrations.
Orchestrates annual tax planning by pulling year-to-date financials from QuickBooks, estimating tax liability via the tax engine, generating optimization recommendations, and notifying the customer via Mailchimp.
naftiko: "0.5"
info:
label: "Annual Tax Planning Orchestrator"
description: "Orchestrates annual tax planning by pulling year-to-date financials from QuickBooks, estimating tax liability via the tax engine, generating optimization recommendations, and notifying the customer via Mailchimp."
tags:
- tax
- quickbooks
- financial-planning
- mailchimp
capability:
exposes:
- type: mcp
namespace: tax-planning
port: 8080
tools:
- name: generate-tax-plan
description: "Generate an annual tax plan for a small business."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks realm ID."
- name: customer_email
in: body
type: string
description: "The customer email."
steps:
- name: get-ytd-financials
type: call
call: "qbo.get-profit-loss"
with:
realm_id: "{{realm_id}}"
- name: estimate-tax
type: call
call: "tax-platform.estimate-liability"
with:
income: "{{get-ytd-financials.total_income}}"
deductions: "{{get-ytd-financials.total_expenses}}"
- name: get-recommendations
type: call
call: "tax-platform.optimize"
with:
estimated_tax: "{{estimate-tax.estimated_liability}}"
income: "{{get-ytd-financials.total_income}}"
- name: send-plan
type: call
call: "mailchimp.send-transactional"
with:
to: "{{customer_email}}"
template: "tax_planning_report"
variables: "{{estimate-tax.estimated_liability}},{{get-recommendations.potential_savings}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss?date_macro=This Year"
operations:
- name: get-profit-loss
method: GET
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: estimates
path: "/estimate"
operations:
- name: estimate-liability
method: POST
- name: optimization
path: "/optimize"
operations:
- name: optimize
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mandrill_api_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Takes a natural language bookkeeping question from a small business owner, retrieves relevant QuickBooks data, sends to Anthropic Claude for interpretation, and returns a plain-English answer.
naftiko: "0.5"
info:
label: "Anthropic-Powered Bookkeeping Assistant"
description: "Takes a natural language bookkeeping question from a small business owner, retrieves relevant QuickBooks data, sends to Anthropic Claude for interpretation, and returns a plain-English answer."
tags:
- ai-ml
- anthropic
- quickbooks
- small-business
- bookkeeping
capability:
exposes:
- type: mcp
namespace: bookkeeping-assistant
port: 8080
tools:
- name: ask-bookkeeping
description: "Given a natural language question and QuickBooks realm ID, pull relevant financial data and generate an AI-powered answer via Anthropic Claude."
inputParameters:
- name: question
in: body
type: string
description: "The bookkeeping question in natural language."
- name: realm_id
in: body
type: string
description: "The QuickBooks company realm ID."
steps:
- name: get-pnl
type: call
call: "qbo.get-profit-loss-ytd"
with:
realm_id: "{{realm_id}}"
- name: get-balance
type: call
call: "qbo.get-balance-sheet-current"
with:
realm_id: "{{realm_id}}"
- name: generate-answer
type: call
call: "anthropic.create-message"
with:
model: "claude-sonnet-4-20250514"
system: "You are an expert bookkeeper for small businesses. Use the provided QuickBooks financial data to answer accurately and in plain English."
context_pnl: "{{get-pnl.report_data}}"
context_balance: "{{get-balance.report_data}}"
user_message: "{{question}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: profit-loss
path: "/reports/ProfitAndLoss"
inputParameters:
- name: date_macro
in: query
value: "This Year-to-date"
operations:
- name: get-profit-loss-ytd
method: GET
- name: balance-sheet
path: "/reports/BalanceSheet"
inputParameters:
- name: date_macro
in: query
value: "Today"
operations:
- name: get-balance-sheet-current
method: GET
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: bearer
token: "$secrets.anthropic_api_key"
inputParameters:
- name: anthropic-version
in: header
value: "2023-06-01"
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
Queries Prometheus for API gateway latency and error rate metrics, correlates with Datadog APM traces, and posts a health summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "API Gateway Health Dashboard"
description: "Queries Prometheus for API gateway latency and error rate metrics, correlates with Datadog APM traces, and posts a health summary to Microsoft Teams."
tags:
- platform
- prometheus
- datadog
- microsoft-teams
- api-management
capability:
exposes:
- type: mcp
namespace: api-health
port: 8080
tools:
- name: check-api-health
description: "Given an API gateway service name, pull latency and error metrics from Prometheus and Datadog, then post a summary to Teams."
inputParameters:
- name: service_name
in: body
type: string
description: "The API gateway service identifier."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook URL."
steps:
- name: get-latency
type: call
call: "prometheus.query"
with:
query: "histogram_quantile(0.99, rate(http_request_duration_seconds_bucket{service='{{service_name}}'}[5m]))"
- name: get-error-rate
type: call
call: "datadog.query-metrics"
with:
query: "sum:http.requests.errors{service:{{service_name}}}.as_rate()"
- name: post-summary
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "API Health — {{service_name}}: P99 latency={{get-latency.value}}ms, Error rate={{get-error-rate.avg_value}}/sec."
consumes:
- type: http
namespace: prometheus
baseUri: "https://prometheus.intuit.com/api/v1"
authentication:
type: bearer
token: "$secrets.prometheus_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: metrics
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Pulls Mailchimp campaign report data, enriches with Google Analytics conversion metrics, and updates the associated Salesforce campaign record with performance results.
naftiko: "0.5"
info:
label: "Campaign Performance to CRM Sync"
description: "Pulls Mailchimp campaign report data, enriches with Google Analytics conversion metrics, and updates the associated Salesforce campaign record with performance results."
tags:
- marketing
- mailchimp
- google-analytics
- salesforce
- analytics
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: sync-campaign-to-crm
description: "Given a Mailchimp campaign ID and Salesforce campaign ID, pull email and web analytics data, then update the Salesforce campaign with results."
inputParameters:
- name: mailchimp_campaign_id
in: body
type: string
description: "The Mailchimp campaign ID."
- name: sfdc_campaign_id
in: body
type: string
description: "The Salesforce campaign ID to update."
- name: ga_property_id
in: body
type: string
description: "The Google Analytics 4 property ID."
steps:
- name: get-email-stats
type: call
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{mailchimp_campaign_id}}"
- name: get-web-conversions
type: call
call: "ga4.run-report"
with:
property_id: "{{ga_property_id}}"
campaign_id: "{{mailchimp_campaign_id}}"
- name: update-sfdc-campaign
type: call
call: "sfdc.update-campaign"
with:
campaign_id: "{{sfdc_campaign_id}}"
emails_sent: "{{get-email-stats.emails_sent}}"
open_rate: "{{get-email-stats.open_rate}}"
click_rate: "{{get-email-stats.click_rate}}"
conversions: "{{get-web-conversions.total_conversions}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: ga4
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
inputParameters:
- name: property_id
in: path
operations:
- name: run-report
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: campaigns
path: "/sobjects/Campaign/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
When a new tax regulation is added to the knowledge base, creates a Confluence page with the formatted content and notifies the tax team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Publisher"
description: "When a new tax regulation is added to the knowledge base, creates a Confluence page with the formatted content and notifies the tax team in Microsoft Teams."
tags:
- tax
- confluence
- microsoft-teams
- knowledge-management
capability:
exposes:
- type: mcp
namespace: tax-knowledge
port: 8080
tools:
- name: publish-tax-update
description: "Given a regulation title, content, and space key, create a Confluence page and notify the tax team in Teams."
inputParameters:
- name: space_key
in: body
type: string
description: "The Confluence space key."
- name: title
in: body
type: string
description: "The page title for the tax regulation update."
- name: content
in: body
type: string
description: "The formatted page content."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook for the tax team."
steps:
- name: create-page
type: call
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "{{title}}"
body: "{{content}}"
- name: notify-team
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "New tax regulation published: {{title}}. View at: {{create-page.url}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://intuit.atlassian.net/wiki/api/v2"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Queries Consul for a registered service's healthy instances, returning instance IPs, ports, and health check status for service mesh routing.
naftiko: "0.5"
info:
label: "Consul Service Discovery Lookup"
description: "Queries Consul for a registered service's healthy instances, returning instance IPs, ports, and health check status for service mesh routing."
tags:
- platform
- consul
- service-mesh
- infrastructure
capability:
exposes:
- type: mcp
namespace: service-discovery
port: 8080
tools:
- name: discover-service
description: "Given a Consul service name, return healthy instances with their addresses and ports."
inputParameters:
- name: service_name
in: body
type: string
description: "The Consul-registered service name."
call: "consul.get-health"
with:
service_name: "{{service_name}}"
outputParameters:
- name: instances
type: string
mapping: "$.nodes"
- name: healthy_count
type: string
mapping: "$.healthy_count"
consumes:
- type: http
namespace: consul
baseUri: "https://consul.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.consul_token"
resources:
- name: health
path: "/health/service/{{service_name}}"
inputParameters:
- name: service_name
in: path
- name: passing
in: query
value: "true"
operations:
- name: get-health
method: GET
Checks service health in Consul for Intuit microservices, returning service status, node count, and failing checks.
naftiko: "0.5"
info:
label: "Consul Service Health Check"
description: "Checks service health in Consul for Intuit microservices, returning service status, node count, and failing checks."
tags:
- infrastructure
- consul
- monitoring
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: check-service-health
description: "Check service health in Consul."
inputParameters:
- name: service_name
in: body
type: string
description: "The Consul service name."
call: "consul.get-health"
with:
service_name: "{{service_name}}"
outputParameters:
- name: status
type: string
mapping: "$[0].Checks[0].Status"
- name: node
type: string
mapping: "$[0].Node.Node"
- name: service_port
type: number
mapping: "$[0].Service.Port"
consumes:
- type: http
namespace: consul
baseUri: "https://consul.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.consul_token"
resources:
- name: health
path: "/health/service/{{service_name}}"
inputParameters:
- name: service_name
in: path
operations:
- name: get-health
method: GET
Retrieves credit score information from Credit Karma for Intuit financial wellness features, returning TransUnion score, Equifax score, and key factors.
naftiko: "0.5"
info:
label: "Credit Karma Score Retriever"
description: "Retrieves credit score information from Credit Karma for Intuit financial wellness features, returning TransUnion score, Equifax score, and key factors."
tags:
- credit
- financial-wellness
capability:
exposes:
- type: mcp
namespace: credit-scores
port: 8080
tools:
- name: get-credit-score
description: "Retrieve credit score from Credit Karma."
inputParameters:
- name: user_id
in: body
type: string
description: "The user ID."
call: "creditkarma.get-scores"
with:
user_id: "{{user_id}}"
outputParameters:
- name: transunion_score
type: number
mapping: "$.scores.transunion"
- name: equifax_score
type: number
mapping: "$.scores.equifax"
- name: key_factors
type: string
mapping: "$.factors"
consumes:
- type: http
namespace: creditkarma
baseUri: "https://api.creditkarma.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.creditkarma_token"
resources:
- name: scores
path: "/users/{{user_id}}/scores"
inputParameters:
- name: user_id
in: path
operations:
- name: get-scores
method: GET
Pulls customer activity data from QuickBooks, runs churn prediction via the Intuit AI platform, and creates a Salesforce opportunity for retention outreach on high-risk accounts.
naftiko: "0.5"
info:
label: "Customer Churn Prediction Pipeline"
description: "Pulls customer activity data from QuickBooks, runs churn prediction via the Intuit AI platform, and creates a Salesforce opportunity for retention outreach on high-risk accounts."
tags:
- ai-ml
- quickbooks
- salesforce
- customer-retention
- small-business
capability:
exposes:
- type: mcp
namespace: churn-prediction
port: 8080
tools:
- name: predict-churn-risk
description: "Given a QuickBooks customer ID, pull activity signals, run churn prediction, and create a Salesforce retention opportunity if high risk."
inputParameters:
- name: customer_id
in: body
type: string
description: "The QuickBooks Online customer ID."
- name: sfdc_account_id
in: body
type: string
description: "The corresponding Salesforce account ID."
steps:
- name: get-customer-activity
type: call
call: "qbo.get-customer"
with:
customer_id: "{{customer_id}}"
- name: predict-churn
type: call
call: "intuit-ai.predict-churn"
with:
customer_id: "{{customer_id}}"
last_transaction_date: "{{get-customer-activity.last_txn_date}}"
balance: "{{get-customer-activity.Balance}}"
- name: create-retention-opp
type: call
call: "sfdc.create-opportunity"
with:
account_id: "{{sfdc_account_id}}"
name: "Retention: {{get-customer-activity.DisplayName}} — churn risk {{predict-churn.risk_score}}%"
stage: "Prospecting"
type: "Retention"
description: "Churn risk score: {{predict-churn.risk_score}}%. Key factor: {{predict-churn.top_factor}}. Last activity: {{get-customer-activity.last_txn_date}}."
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: customers
path: "/customer/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: churn
path: "/predict/churn"
operations:
- name: predict-churn
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: create-opportunity
method: POST
Orchestrates subscription renewals by checking eligibility in the billing system, applying discounts from the promotion engine, processing payment via Stripe, and updating the CRM in Salesforce.
naftiko: "0.5"
info:
label: "Customer Subscription Renewal Orchestrator"
description: "Orchestrates subscription renewals by checking eligibility in the billing system, applying discounts from the promotion engine, processing payment via Stripe, and updating the CRM in Salesforce."
tags:
- billing
- subscriptions
- stripe
- salesforce
capability:
exposes:
- type: mcp
namespace: subscription-renewal
port: 8080
tools:
- name: process-renewal
description: "Process a customer subscription renewal."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The subscription ID."
- name: customer_id
in: body
type: string
description: "The customer ID."
steps:
- name: check-eligibility
type: call
call: "billing.check-renewal"
with:
subscription_id: "{{subscription_id}}"
- name: apply-discount
type: call
call: "promo-engine.get-best-offer"
with:
customer_id: "{{customer_id}}"
product: "{{check-eligibility.product_name}}"
- name: process-payment
type: call
call: "stripe.create-invoice"
with:
customer_id: "{{customer_id}}"
amount: "{{apply-discount.final_price}}"
description: "Renewal: {{check-eligibility.product_name}}"
- name: update-crm
type: call
call: "sfdc.update-opportunity"
with:
subscription_id: "{{subscription_id}}"
stage: "Closed Won"
amount: "{{apply-discount.final_price}}"
consumes:
- type: http
namespace: billing
baseUri: "https://billing.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.billing_token"
resources:
- name: renewals
path: "/subscriptions/{{subscription_id}}/renewal-check"
inputParameters:
- name: subscription_id
in: path
operations:
- name: check-renewal
method: GET
- type: http
namespace: promo-engine
baseUri: "https://promotions.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.promo_engine_token"
resources:
- name: offers
path: "/best-offer"
operations:
- name: get-best-offer
method: POST
- type: http
namespace: stripe
baseUri: "https://api.stripe.com/v1"
authentication:
type: bearer
token: "$secrets.stripe_secret_key"
resources:
- name: invoices
path: "/invoices"
operations:
- name: create-invoice
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: update-opportunity
method: POST
Monitors QuickBooks API health via Datadog, returning uptime percentage, average latency, error rate, and active synthetic checks.
naftiko: "0.5"
info:
label: "Datadog QuickBooks API Monitor"
description: "Monitors QuickBooks API health via Datadog, returning uptime percentage, average latency, error rate, and active synthetic checks."
tags:
- monitoring
- datadog
- quickbooks
capability:
exposes:
- type: mcp
namespace: api-monitoring
port: 8080
tools:
- name: get-api-health
description: "Monitor QuickBooks API health via Datadog."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name."
call: "datadog.get-slo"
with:
service_name: "{{service_name}}"
outputParameters:
- name: uptime_pct
type: string
mapping: "$.data.attributes.overall_status[0].sli_value"
- name: avg_latency
type: string
mapping: "$.data.attributes.latency"
- name: error_rate
type: string
mapping: "$.data.attributes.error_rate"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: slos
path: "/slo?tags=service:{{service_name}}"
inputParameters:
- name: service_name
in: query
operations:
- name: get-slo
method: GET
Queries Datadog for the current health status and error rate of a monitored service, returning the overall status and last triggered alert.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Queries Datadog for the current health status and error rate of a monitored service, returning the overall status and last triggered alert."
tags:
- platform
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-service-health
description: "Given a Datadog monitor ID, return the current status, last triggered timestamp, and associated message."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID."
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: overall_status
type: string
mapping: "$.overall_state"
- name: name
type: string
mapping: "$.name"
- name: message
type: string
mapping: "$.message"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Checks the latest GitHub Actions workflow run, correlates with Terraform Cloud workspace state, and posts deployment status to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Deployment Pipeline Status Aggregator"
description: "Checks the latest GitHub Actions workflow run, correlates with Terraform Cloud workspace state, and posts deployment status to a Microsoft Teams channel."
tags:
- engineering
- github
- terraform
- microsoft-teams
- ci-cd
capability:
exposes:
- type: mcp
namespace: deploy-status
port: 8080
tools:
- name: check-deployment
description: "Given a repo, workflow name, and Terraform workspace, aggregate deployment status and notify the team in Microsoft Teams."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in owner/repo format."
- name: workflow_name
in: body
type: string
description: "The GitHub Actions workflow filename."
- name: tf_org
in: body
type: string
description: "The Terraform Cloud organization."
- name: tf_workspace
in: body
type: string
description: "The Terraform Cloud workspace name."
- name: teams_channel_webhook
in: body
type: string
description: "The Microsoft Teams incoming webhook URL."
steps:
- name: get-workflow-run
type: call
call: "github.get-workflow-runs"
with:
repo: "{{repo}}"
workflow_name: "{{workflow_name}}"
- name: get-tf-status
type: call
call: "terraform.get-workspace"
with:
org_name: "{{tf_org}}"
workspace_name: "{{tf_workspace}}"
- name: notify-team
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_channel_webhook}}"
text: "Deployment update for {{repo}}: CI status={{get-workflow-run.conclusion}}, Terraform workspace={{tf_workspace}} ({{get-tf-status.resource_count}} resources, version {{get-tf-status.terraform_version}})"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/workflows/{{workflow_name}}/runs"
inputParameters:
- name: repo
in: path
- name: workflow_name
in: path
operations:
- name: get-workflow-runs
method: GET
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/{{org_name}}/workspaces/{{workspace_name}}"
inputParameters:
- name: org_name
in: path
- name: workspace_name
in: path
operations:
- name: get-workspace
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Queries an Elasticsearch index for recent log entries matching a given query string, returning timestamp, level, and message fields.
naftiko: "0.5"
info:
label: "Elasticsearch Log Query"
description: "Queries an Elasticsearch index for recent log entries matching a given query string, returning timestamp, level, and message fields."
tags:
- platform
- observability
- elasticsearch
capability:
exposes:
- type: mcp
namespace: log-search
port: 8080
tools:
- name: search-logs
description: "Given an index name and query string, search Elasticsearch for matching log entries."
inputParameters:
- name: index
in: body
type: string
description: "The Elasticsearch index name."
- name: query
in: body
type: string
description: "The Lucene query string to search for."
call: "elasticsearch.search"
with:
index: "{{index}}"
query: "{{query}}"
outputParameters:
- name: total_hits
type: string
mapping: "$.hits.total.value"
- name: results
type: string
mapping: "$.hits.hits"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://es.intuit.com"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: search
path: "/{{index}}/_search"
inputParameters:
- name: index
in: path
- name: query
in: query
operations:
- name: search
method: GET
Queries Elasticsearch for platform log entries across Intuit services, returning log count, error distribution, and top error messages.
naftiko: "0.5"
info:
label: "Elasticsearch Platform Log Query"
description: "Queries Elasticsearch for platform log entries across Intuit services, returning log count, error distribution, and top error messages."
tags:
- monitoring
- elasticsearch
- logging
capability:
exposes:
- type: mcp
namespace: platform-logs
port: 8080
tools:
- name: query-logs
description: "Query platform logs from Elasticsearch."
inputParameters:
- name: index
in: body
type: string
description: "The log index name."
- name: service
in: body
type: string
description: "The service name to filter."
call: "elasticsearch.search-logs"
with:
index: "{{index}}"
service: "{{service}}"
outputParameters:
- name: total_hits
type: number
mapping: "$.hits.total.value"
- name: error_count
type: number
mapping: "$.aggregations.errors.doc_count"
- name: top_error
type: string
mapping: "$.aggregations.top_errors.buckets[0].key"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://elasticsearch.intuit.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: search
path: "/{{index}}/_search"
inputParameters:
- name: index
in: path
operations:
- name: search-logs
method: POST
Orchestrates month-end close by reconciling bank accounts in QuickBooks, generating financial reports, creating review tasks in Salesforce, and publishing the close package to Confluence.
naftiko: "0.5"
info:
label: "End of Month Close Orchestrator"
description: "Orchestrates month-end close by reconciling bank accounts in QuickBooks, generating financial reports, creating review tasks in Salesforce, and publishing the close package to Confluence."
tags:
- accounting
- quickbooks
- salesforce
- confluence
capability:
exposes:
- type: mcp
namespace: month-end-close
port: 8080
tools:
- name: execute-close
description: "Execute the month-end close process."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks realm ID."
- name: period
in: body
type: string
description: "The closing period (YYYY-MM)."
steps:
- name: reconcile-accounts
type: call
call: "qbo.get-trial-balance"
with:
realm_id: "{{realm_id}}"
period: "{{period}}"
- name: generate-reports
type: call
call: "qbo.get-financial-package"
with:
realm_id: "{{realm_id}}"
period: "{{period}}"
- name: create-review-task
type: call
call: "sfdc.create-task"
with:
subject: "Month-end close review: {{period}}"
description: "Trial balance verified. P&L generated. Balance sheet generated."
priority: "High"
- name: publish-package
type: call
call: "confluence.create-page"
with:
space: "FINANCE"
title: "Month-End Close Package - {{period}}"
body: "Close package for {{period}}. Reconciliation complete. Reports attached."
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: trial-balance
path: "/reports/TrialBalance"
operations:
- name: get-trial-balance
method: GET
- name: reports
path: "/reports/ProfitAndLoss"
operations:
- name: get-financial-package
method: GET
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: confluence
baseUri: "https://intuit.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Fetches unreconciled QuickBooks transactions, classifies them using the Intuit AI categorization engine, and updates the transaction categories in QuickBooks Online.
naftiko: "0.5"
info:
label: "Expense Categorization and Reconciliation"
description: "Fetches unreconciled QuickBooks transactions, classifies them using the Intuit AI categorization engine, and updates the transaction categories in QuickBooks Online."
tags:
- accounting
- quickbooks
- ai-ml
- categorization
- reconciliation
capability:
exposes:
- type: mcp
namespace: smart-categorization
port: 8080
tools:
- name: categorize-transactions
description: "Given a QuickBooks account ID and date range, fetch uncategorized transactions, run AI categorization, and update each transaction."
inputParameters:
- name: account_id
in: body
type: string
description: "The QuickBooks bank account ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
steps:
- name: get-transactions
type: call
call: "qbo.query-transactions"
with:
account_id: "{{account_id}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: classify-expenses
type: call
call: "intuit-ai.classify-transactions"
with:
transactions: "{{get-transactions.results}}"
- name: update-categories
type: call
call: "qbo.batch-update"
with:
batch_items: "{{classify-expenses.categorized_transactions}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-transactions
method: GET
- name: batch
path: "/batch"
operations:
- name: batch-update
method: POST
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: classification
path: "/classify/transactions"
operations:
- name: classify-transactions
method: POST
Enables a feature flag, monitors error rates in Datadog for a configurable window, and automatically rolls back the flag and creates a GitHub issue if errors spike.
naftiko: "0.5"
info:
label: "Feature Flag Rollout with Monitoring"
description: "Enables a feature flag, monitors error rates in Datadog for a configurable window, and automatically rolls back the flag and creates a GitHub issue if errors spike."
tags:
- engineering
- platform
- datadog
- github
- feature-flags
capability:
exposes:
- type: mcp
namespace: feature-rollout
port: 8080
tools:
- name: safe-rollout
description: "Given a feature flag name and monitoring query, enable the flag, check error rates, and roll back with a GitHub issue on failure."
inputParameters:
- name: flag_name
in: body
type: string
description: "The feature flag identifier."
- name: environment
in: body
type: string
description: "The deployment environment (staging, production)."
- name: error_query
in: body
type: string
description: "The Datadog metrics query for error monitoring."
- name: github_repo
in: body
type: string
description: "The GitHub repo for rollback issues."
steps:
- name: enable-flag
type: call
call: "intuit-platform.set-feature-flag"
with:
flag_name: "{{flag_name}}"
environment: "{{environment}}"
enabled: "true"
- name: check-errors
type: call
call: "datadog.query-metrics"
with:
query: "{{error_query}}"
- name: rollback-flag
type: call
call: "intuit-platform.set-feature-flag"
with:
flag_name: "{{flag_name}}"
environment: "{{environment}}"
enabled: "false"
- name: file-rollback-issue
type: call
call: "github.create-issue"
with:
repo: "{{github_repo}}"
title: "Feature flag rollback: {{flag_name}} in {{environment}}"
body: "Flag {{flag_name}} was rolled back due to elevated errors. Error metric value: {{check-errors.avg_value}}. Investigate before re-enabling."
consumes:
- type: http
namespace: intuit-platform
baseUri: "https://platform.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_platform_token"
resources:
- name: feature-flags
path: "/flags/{{flag_name}}/environments/{{environment}}"
inputParameters:
- name: flag_name
in: path
- name: environment
in: path
operations:
- name: set-feature-flag
method: PUT
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: metrics
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issues
path: "/repos/{{repo}}/issues"
inputParameters:
- name: repo
in: path
operations:
- name: create-issue
method: POST
Retrieves the latest commit, open pull request count, and open issue count for a GitHub repository used by Intuit engineering teams.
naftiko: "0.5"
info:
label: "GitHub Repository Status"
description: "Retrieves the latest commit, open pull request count, and open issue count for a GitHub repository used by Intuit engineering teams."
tags:
- engineering
- github
- platform
capability:
exposes:
- type: mcp
namespace: github-repos
port: 8080
tools:
- name: get-repo-status
description: "Given an org and repo name, return the latest commit SHA, open PRs count, and open issues count."
inputParameters:
- name: owner
in: body
type: string
description: "The GitHub organization or owner."
- name: repo
in: body
type: string
description: "The GitHub repository name."
call: "github.get-repo"
with:
owner: "{{owner}}"
repo: "{{repo}}"
outputParameters:
- name: default_branch
type: string
mapping: "$.default_branch"
- name: open_issues_count
type: string
mapping: "$.open_issues_count"
- name: language
type: string
mapping: "$.language"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{owner}}/{{repo}}"
inputParameters:
- name: owner
in: path
- name: repo
in: path
operations:
- name: get-repo
method: GET
Checks the status of a GitLab CI/CD pipeline, retrieves job logs for failed stages, and posts a failure summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "GitLab CI Pipeline Monitor"
description: "Checks the status of a GitLab CI/CD pipeline, retrieves job logs for failed stages, and posts a failure summary to Microsoft Teams."
tags:
- engineering
- gitlab
- microsoft-teams
- ci-cd
capability:
exposes:
- type: mcp
namespace: gitlab-ci
port: 8080
tools:
- name: check-pipeline-status
description: "Given a GitLab project ID and pipeline ID, check status, get failed job logs, and notify the team in Microsoft Teams."
inputParameters:
- name: project_id
in: body
type: string
description: "The GitLab project ID."
- name: pipeline_id
in: body
type: string
description: "The GitLab pipeline ID."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook for CI notifications."
steps:
- name: get-pipeline
type: call
call: "gitlab.get-pipeline"
with:
project_id: "{{project_id}}"
pipeline_id: "{{pipeline_id}}"
- name: get-failed-jobs
type: call
call: "gitlab.get-pipeline-jobs"
with:
project_id: "{{project_id}}"
pipeline_id: "{{pipeline_id}}"
scope: "failed"
- name: notify-team
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Pipeline {{pipeline_id}} status: {{get-pipeline.status}}. Failed jobs: {{get-failed-jobs.count}}. Ref: {{get-pipeline.ref}}. View: {{get-pipeline.web_url}}"
consumes:
- type: http
namespace: gitlab
baseUri: "https://gitlab.intuit.com/api/v4"
authentication:
type: bearer
token: "$secrets.gitlab_token"
resources:
- name: pipelines
path: "/projects/{{project_id}}/pipelines/{{pipeline_id}}"
inputParameters:
- name: project_id
in: path
- name: pipeline_id
in: path
operations:
- name: get-pipeline
method: GET
- name: pipeline-jobs
path: "/projects/{{project_id}}/pipelines/{{pipeline_id}}/jobs"
inputParameters:
- name: project_id
in: path
- name: pipeline_id
in: path
- name: scope
in: query
operations:
- name: get-pipeline-jobs
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Retrieves merge request status from GitLab for Intuit engineering repositories, returning title, state, approvals, and pipeline status.
naftiko: "0.5"
info:
label: "GitLab Merge Request Status"
description: "Retrieves merge request status from GitLab for Intuit engineering repositories, returning title, state, approvals, and pipeline status."
tags:
- development
- gitlab
capability:
exposes:
- type: mcp
namespace: code-review
port: 8080
tools:
- name: get-mr-status
description: "Look up a GitLab merge request status."
inputParameters:
- name: project_id
in: body
type: string
description: "The GitLab project ID."
- name: mr_iid
in: body
type: string
description: "The merge request internal ID."
call: "gitlab.get-mr"
with:
project_id: "{{project_id}}"
mr_iid: "{{mr_iid}}"
outputParameters:
- name: title
type: string
mapping: "$.title"
- name: state
type: string
mapping: "$.state"
- name: approvals
type: number
mapping: "$.approvals_before_merge"
- name: pipeline_status
type: string
mapping: "$.head_pipeline.status"
consumes:
- type: http
namespace: gitlab
baseUri: "https://gitlab.intuit.com/api/v4"
authentication:
type: bearer
token: "$secrets.gitlab_token"
resources:
- name: merge-requests
path: "/projects/{{project_id}}/merge_requests/{{mr_iid}}"
inputParameters:
- name: project_id
in: path
- name: mr_iid
in: path
operations:
- name: get-mr
method: GET
Retrieves deployment pipeline status from Harness for Intuit CI/CD, returning execution status, stages completed, and deployment duration.
naftiko: "0.5"
info:
label: "Harness Deployment Pipeline Status"
description: "Retrieves deployment pipeline status from Harness for Intuit CI/CD, returning execution status, stages completed, and deployment duration."
tags:
- ci-cd
- harness
- deployment
capability:
exposes:
- type: mcp
namespace: deployment-pipelines
port: 8080
tools:
- name: get-deployment-status
description: "Retrieve Harness deployment pipeline status."
inputParameters:
- name: execution_id
in: body
type: string
description: "The pipeline execution ID."
call: "harness.get-execution"
with:
execution_id: "{{execution_id}}"
outputParameters:
- name: status
type: string
mapping: "$.data.execution.status"
- name: stages_completed
type: number
mapping: "$.data.execution.stagesCompleted"
- name: duration
type: string
mapping: "$.data.execution.totalDuration"
consumes:
- type: http
namespace: harness
baseUri: "https://app.harness.io/gateway/pipeline/api"
authentication:
type: bearer
token: "$secrets.harness_api_key"
resources:
- name: executions
path: "/pipelines/execution/{{execution_id}}"
inputParameters:
- name: execution_id
in: path
operations:
- name: get-execution
method: GET
Triggers a Harness continuous delivery pipeline, monitors the deployment status, and posts the result to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Harness Deployment Trigger"
description: "Triggers a Harness continuous delivery pipeline, monitors the deployment status, and posts the result to a Microsoft Teams channel."
tags:
- engineering
- harness
- microsoft-teams
- ci-cd
- deployment
capability:
exposes:
- type: mcp
namespace: harness-deploy
port: 8080
tools:
- name: trigger-and-monitor
description: "Given a Harness pipeline ID and environment, trigger the deployment, check status, and notify Teams."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The Harness pipeline identifier."
- name: org_id
in: body
type: string
description: "The Harness organization ID."
- name: project_id
in: body
type: string
description: "The Harness project ID."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook URL."
steps:
- name: trigger-pipeline
type: call
call: "harness.execute-pipeline"
with:
org_id: "{{org_id}}"
project_id: "{{project_id}}"
pipeline_id: "{{pipeline_id}}"
- name: get-execution
type: call
call: "harness.get-execution"
with:
org_id: "{{org_id}}"
project_id: "{{project_id}}"
execution_id: "{{trigger-pipeline.execution_id}}"
- name: notify-team
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Deployment {{pipeline_id}}: {{get-execution.status}}. Execution: {{trigger-pipeline.execution_id}}. Duration: {{get-execution.duration_ms}}ms."
consumes:
- type: http
namespace: harness
baseUri: "https://app.harness.io/pipeline/api"
authentication:
type: bearer
token: "$secrets.harness_api_key"
resources:
- name: pipelines
path: "/pipelines/execute/{{pipeline_id}}"
inputParameters:
- name: pipeline_id
in: path
- name: accountIdentifier
in: query
value: "$secrets.harness_account_id"
- name: orgIdentifier
in: query
- name: projectIdentifier
in: query
operations:
- name: execute-pipeline
method: POST
- name: executions
path: "/pipelines/execution/{{execution_id}}"
inputParameters:
- name: execution_id
in: path
- name: accountIdentifier
in: query
value: "$secrets.harness_account_id"
- name: orgIdentifier
in: query
- name: projectIdentifier
in: query
operations:
- name: get-execution
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
When a Datadog alert fires, retrieves alert details, creates a ServiceNow incident, and pages the on-call engineer via Microsoft Teams with runbook links.
naftiko: "0.5"
info:
label: "Incident Response Orchestrator"
description: "When a Datadog alert fires, retrieves alert details, creates a ServiceNow incident, and pages the on-call engineer via Microsoft Teams with runbook links."
tags:
- platform
- datadog
- microsoft-teams
- incident-management
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: handle-alert
description: "Given a Datadog monitor ID, fetch alert details, create a ServiceNow incident, and notify the on-call in Teams."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that triggered."
- name: oncall_email
in: body
type: string
description: "The on-call engineer email address."
- name: runbook_url
in: body
type: string
description: "The runbook URL for this alert type."
steps:
- name: get-alert
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Alert: {{get-alert.name}}"
description: "Datadog monitor {{monitor_id}} triggered. Status: {{get-alert.overall_state}}. Message: {{get-alert.message}}"
urgency: "1"
assigned_to: "{{oncall_email}}"
- name: page-oncall
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{oncall_email}}"
text: "ALERT: {{get-alert.name}} is {{get-alert.overall_state}}. Incident: {{create-incident.number}}. Runbook: {{runbook_url}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: "https://intuit.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Fetches overdue invoices from QuickBooks Online, looks up the customer contact, and sends a payment reminder via Mailchimp transactional email with invoice details.
naftiko: "0.5"
info:
label: "Invoice Overdue Notification Pipeline"
description: "Fetches overdue invoices from QuickBooks Online, looks up the customer contact, and sends a payment reminder via Mailchimp transactional email with invoice details."
tags:
- accounting
- quickbooks
- mailchimp
- collections
- automation
capability:
exposes:
- type: mcp
namespace: collections-automation
port: 8080
tools:
- name: send-overdue-reminder
description: "Given an overdue invoice ID, fetch invoice and customer details from QuickBooks, then send a payment reminder email via Mailchimp Transactional."
inputParameters:
- name: invoice_id
in: body
type: string
description: "The QuickBooks Online invoice ID."
steps:
- name: get-invoice
type: call
call: "qbo.get-invoice"
with:
invoice_id: "{{invoice_id}}"
- name: get-customer
type: call
call: "qbo.get-customer"
with:
customer_id: "{{get-invoice.CustomerRef_value}}"
- name: send-reminder
type: call
call: "mailchimp-tx.send-email"
with:
to_email: "{{get-customer.PrimaryEmailAddr}}"
to_name: "{{get-customer.DisplayName}}"
subject: "Payment Reminder: Invoice #{{invoice_id}} — ${{get-invoice.Balance}} overdue"
template_name: "overdue-invoice-reminder"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: invoices
path: "/invoice/{{invoice_id}}"
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- name: customers
path: "/customer/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: mailchimp-tx
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mandrill_api_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-email
method: POST
When a new employee is added, provisions a Keycloak identity, assigns realm roles based on department, and syncs the user profile to Salesforce as an internal contact.
naftiko: "0.5"
info:
label: "Keycloak User Provisioning Pipeline"
description: "When a new employee is added, provisions a Keycloak identity, assigns realm roles based on department, and syncs the user profile to Salesforce as an internal contact."
tags:
- platform
- keycloak
- salesforce
- identity-management
- security
capability:
exposes:
- type: mcp
namespace: identity-provisioning
port: 8080
tools:
- name: provision-user
description: "Given employee details, create a Keycloak user, assign roles, and sync to Salesforce."
inputParameters:
- name: email
in: body
type: string
description: "The employee email address."
- name: first_name
in: body
type: string
description: "The employee first name."
- name: last_name
in: body
type: string
description: "The employee last name."
- name: department
in: body
type: string
description: "The employee department for role assignment."
steps:
- name: create-user
type: call
call: "keycloak.create-user"
with:
email: "{{email}}"
firstName: "{{first_name}}"
lastName: "{{last_name}}"
enabled: "true"
- name: assign-roles
type: call
call: "keycloak.assign-role"
with:
user_id: "{{create-user.id}}"
role_name: "{{department}}-member"
- name: sync-to-sfdc
type: call
call: "sfdc.create-contact"
with:
email: "{{email}}"
first_name: "{{first_name}}"
last_name: "{{last_name}}"
department: "{{department}}"
keycloak_id: "{{create-user.id}}"
consumes:
- type: http
namespace: keycloak
baseUri: "https://auth.intuit.com/admin/realms/intuit"
authentication:
type: bearer
token: "$secrets.keycloak_admin_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- name: role-mappings
path: "/users/{{user_id}}/role-mappings/realm"
inputParameters:
- name: user_id
in: path
operations:
- name: assign-role
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: contacts
path: "/sobjects/Contact"
operations:
- name: create-contact
method: POST
Retrieves user session details from Keycloak for Intuit identity management, returning active sessions, last login, and client connections.
naftiko: "0.5"
info:
label: "Keycloak User Session Lookup"
description: "Retrieves user session details from Keycloak for Intuit identity management, returning active sessions, last login, and client connections."
tags:
- security
- keycloak
- identity
capability:
exposes:
- type: mcp
namespace: user-sessions
port: 8080
tools:
- name: get-sessions
description: "Look up user sessions in Keycloak."
inputParameters:
- name: user_id
in: body
type: string
description: "The Keycloak user ID."
call: "keycloak.get-sessions"
with:
user_id: "{{user_id}}"
outputParameters:
- name: active_sessions
type: number
mapping: "$.length"
- name: last_access
type: string
mapping: "$[0].lastAccess"
- name: client_id
type: string
mapping: "$[0].clients.keys[0]"
consumes:
- type: http
namespace: keycloak
baseUri: "https://auth.intuit.com/admin/realms/intuit"
authentication:
type: bearer
token: "$secrets.keycloak_admin_token"
resources:
- name: sessions
path: "/users/{{user_id}}/sessions"
inputParameters:
- name: user_id
in: path
operations:
- name: get-sessions
method: GET
Auto-populates Lacerte professional tax preparation forms by importing client financial data from linked accounts, W-2s, and 1099s for accountant review.
naftiko: "0.5"
info:
label: "Lacerte Tax Form Auto-Populator"
description: "Auto-populates Lacerte professional tax preparation forms by importing client financial data from linked accounts, W-2s, and 1099s for accountant review."
tags:
- tax-preparation
- lacerte
- form-automation
capability:
exposes:
- type: mcp
namespace: lacerte-forms
port: 8080
tools:
- name: auto-populate-tax-form
description: "Auto-populate a Lacerte tax form with imported financial data."
inputParameters:
- name: client_id
in: body
type: string
description: "The Lacerte client identifier."
- name: tax_year
in: body
type: integer
description: "The tax year to prepare."
- name: form_type
in: body
type: string
description: "Tax form type such as 1040, 1120, or 1065."
call: "lacerte-api.populate-form"
with:
client: "{{client_id}}"
year: "{{tax_year}}"
form: "{{form_type}}"
outputParameters:
- name: populated_fields
type: integer
mapping: "$.form.populatedFieldCount"
- name: review_flags
type: array
mapping: "$.form.reviewFlags"
- name: estimated_refund
type: number
mapping: "$.form.estimatedRefund"
consumes:
- type: http
namespace: lacerte-api
baseUri: "https://api.intuit.com/lacerte/v1"
authentication:
type: bearer
token: "$secrets.intuit_lacerte_api_token"
resources:
- name: forms
path: "/clients/{{client}}/tax-forms"
inputParameters:
- name: client
in: path
operations:
- name: populate-form
method: POST
Retrieves A/B test results from a Mailchimp campaign, determines the statistical winner, and sends the winning variant to the remaining audience automatically.
naftiko: "0.5"
info:
label: "Mailchimp A/B Test Analyzer"
description: "Retrieves A/B test results from a Mailchimp campaign, determines the statistical winner, and sends the winning variant to the remaining audience automatically."
tags:
- marketing
- mailchimp
- ab-testing
- email-campaigns
capability:
exposes:
- type: mcp
namespace: ab-testing
port: 8080
tools:
- name: finalize-ab-test
description: "Given a Mailchimp A/B campaign ID, pull test results, determine the winner, and send the winning variant."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The Mailchimp A/B test campaign ID."
steps:
- name: get-ab-results
type: call
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{campaign_id}}"
- name: send-winner
type: call
call: "mailchimp.send-campaign"
with:
campaign_id: "{{campaign_id}}"
winning_combination: "{{get-ab-results.winner_id}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- name: campaign-actions
path: "/campaigns/{{campaign_id}}/actions/send"
inputParameters:
- name: campaign_id
in: path
operations:
- name: send-campaign
method: POST
Looks up a subscriber in a Mailchimp audience by email hash and returns subscription status, tags, and merge fields.
naftiko: "0.5"
info:
label: "Mailchimp Audience Member Lookup"
description: "Looks up a subscriber in a Mailchimp audience by email hash and returns subscription status, tags, and merge fields."
tags:
- marketing
- mailchimp
- audience-management
capability:
exposes:
- type: mcp
namespace: mailchimp-audience
port: 8080
tools:
- name: get-subscriber
description: "Given a Mailchimp list ID and subscriber email hash, return subscription status, tags, and merge fields."
inputParameters:
- name: list_id
in: body
type: string
description: "The Mailchimp audience list ID."
- name: subscriber_hash
in: body
type: string
description: "The MD5 hash of the subscriber email address."
call: "mailchimp.get-member"
with:
list_id: "{{list_id}}"
subscriber_hash: "{{subscriber_hash}}"
outputParameters:
- name: email
type: string
mapping: "$.email_address"
- name: status
type: string
mapping: "$.status"
- name: tags
type: string
mapping: "$.tags"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: members
path: "/lists/{{list_id}}/members/{{subscriber_hash}}"
inputParameters:
- name: list_id
in: path
- name: subscriber_hash
in: path
operations:
- name: get-member
method: GET
Creates a segment in Mailchimp based on customer purchase data from QuickBooks, then creates and sends a targeted email campaign to that segment.
naftiko: "0.5"
info:
label: "Mailchimp Audience Segmentation and Campaign Launch"
description: "Creates a segment in Mailchimp based on customer purchase data from QuickBooks, then creates and sends a targeted email campaign to that segment."
tags:
- marketing
- mailchimp
- quickbooks
- segmentation
- email-campaigns
capability:
exposes:
- type: mcp
namespace: targeted-campaigns
port: 8080
tools:
- name: launch-targeted-campaign
description: "Given purchase criteria and campaign content, segment QuickBooks customers, create a Mailchimp segment, and send a campaign."
inputParameters:
- name: list_id
in: body
type: string
description: "The Mailchimp audience list ID."
- name: segment_name
in: body
type: string
description: "Name for the new segment."
- name: min_purchase_amount
in: body
type: string
description: "Minimum lifetime purchase amount for segment qualification."
- name: campaign_subject
in: body
type: string
description: "The email subject line."
- name: template_id
in: body
type: string
description: "The Mailchimp email template ID."
steps:
- name: query-customers
type: call
call: "qbo.query-customers"
with:
min_balance: "{{min_purchase_amount}}"
- name: create-segment
type: call
call: "mailchimp.create-segment"
with:
list_id: "{{list_id}}"
name: "{{segment_name}}"
conditions: "{{query-customers.email_list}}"
- name: create-campaign
type: call
call: "mailchimp.create-campaign"
with:
list_id: "{{list_id}}"
segment_id: "{{create-segment.id}}"
subject: "{{campaign_subject}}"
template_id: "{{template_id}}"
- name: send-campaign
type: call
call: "mailchimp.send-campaign"
with:
campaign_id: "{{create-campaign.id}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-customers
method: GET
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: segments
path: "/lists/{{list_id}}/segments"
inputParameters:
- name: list_id
in: path
operations:
- name: create-segment
method: POST
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- name: campaign-actions
path: "/campaigns/{{campaign_id}}/actions/send"
inputParameters:
- name: campaign_id
in: path
operations:
- name: send-campaign
method: POST
Retrieves campaign revenue attribution from Mailchimp for Intuit marketing, returning total revenue, orders, and average order value per campaign.
naftiko: "0.5"
info:
label: "Mailchimp Campaign Revenue Tracker"
description: "Retrieves campaign revenue attribution from Mailchimp for Intuit marketing, returning total revenue, orders, and average order value per campaign."
tags:
- marketing
- mailchimp
- analytics
capability:
exposes:
- type: mcp
namespace: campaign-revenue
port: 8080
tools:
- name: get-campaign-revenue
description: "Retrieve campaign revenue data from Mailchimp."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The Mailchimp campaign ID."
call: "mailchimp.get-ecommerce-report"
with:
campaign_id: "{{campaign_id}}"
outputParameters:
- name: total_revenue
type: string
mapping: "$.ecommerce.total_revenue"
- name: total_orders
type: number
mapping: "$.ecommerce.total_orders"
- name: avg_order_value
type: string
mapping: "$.ecommerce.average_order_revenue"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}/ecommerce-product-activity"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-ecommerce-report
method: GET
Retrieves performance metrics for a Mailchimp email campaign including open rate, click rate, bounce rate, and unsubscribe count.
naftiko: "0.5"
info:
label: "Mailchimp Campaign Stats"
description: "Retrieves performance metrics for a Mailchimp email campaign including open rate, click rate, bounce rate, and unsubscribe count."
tags:
- marketing
- mailchimp
- email-campaigns
capability:
exposes:
- type: mcp
namespace: mailchimp-analytics
port: 8080
tools:
- name: get-campaign-report
description: "Given a Mailchimp campaign ID, return open rate, click rate, bounce rate, and total recipients."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The Mailchimp campaign ID."
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{campaign_id}}"
outputParameters:
- name: open_rate
type: string
mapping: "$.opens.open_rate"
- name: click_rate
type: string
mapping: "$.clicks.click_rate"
- name: bounce_rate
type: string
mapping: "$.bounces.hard_bounces"
- name: emails_sent
type: string
mapping: "$.emails_sent"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
Pulls audience growth statistics from Mailchimp including new subscribers, unsubscribes, and net growth for a given month, and posts a summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "Mailchimp List Growth Tracker"
description: "Pulls audience growth statistics from Mailchimp including new subscribers, unsubscribes, and net growth for a given month, and posts a summary to Microsoft Teams."
tags:
- marketing
- mailchimp
- microsoft-teams
- audience-management
- analytics
capability:
exposes:
- type: mcp
namespace: audience-growth
port: 8080
tools:
- name: track-list-growth
description: "Given a Mailchimp list ID and date range, pull growth stats and post a summary to Microsoft Teams."
inputParameters:
- name: list_id
in: body
type: string
description: "The Mailchimp audience list ID."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook for marketing channel."
steps:
- name: get-growth
type: call
call: "mailchimp.get-list-growth"
with:
list_id: "{{list_id}}"
- name: post-summary
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Audience Growth Report — List {{list_id}}: Total members: {{get-growth.member_count}}. New this month: {{get-growth.month_subscribed}}. Unsubscribed: {{get-growth.month_unsubscribed}}. Net growth: {{get-growth.net_growth}}."
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: growth-history
path: "/lists/{{list_id}}/growth-history"
inputParameters:
- name: list_id
in: path
operations:
- name: get-list-growth
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Orchestrates subscriber re-engagement by identifying inactive users in Mailchimp, creating a win-back campaign, sending targeted emails, and tracking conversion in Salesforce.
naftiko: "0.5"
info:
label: "Mailchimp Subscriber Engagement Orchestrator"
description: "Orchestrates subscriber re-engagement by identifying inactive users in Mailchimp, creating a win-back campaign, sending targeted emails, and tracking conversion in Salesforce."
tags:
- marketing
- mailchimp
- salesforce
capability:
exposes:
- type: mcp
namespace: subscriber-engagement
port: 8080
tools:
- name: run-engagement-campaign
description: "Run a subscriber re-engagement campaign."
inputParameters:
- name: list_id
in: body
type: string
description: "The Mailchimp list ID."
- name: inactive_days
in: body
type: number
description: "Days of inactivity threshold."
steps:
- name: find-inactive
type: call
call: "mailchimp.get-inactive-members"
with:
list_id: "{{list_id}}"
inactive_days: "{{inactive_days}}"
- name: create-campaign
type: call
call: "mailchimp.create-campaign"
with:
list_id: "{{list_id}}"
segment_id: "{{find-inactive.segment_id}}"
subject: "We miss you! Special offer inside"
- name: track-in-crm
type: call
call: "sfdc.create-campaign"
with:
name: "Re-engagement: {{find-inactive.inactive_count}} subscribers"
status: "Planned"
expected_response: "15"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: members
path: "/lists/{{list_id}}/members"
inputParameters:
- name: list_id
in: path
operations:
- name: get-inactive-members
method: GET
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: campaigns
path: "/sobjects/Campaign"
operations:
- name: create-campaign
method: POST
Monitors Mint user spending against budget categories and triggers personalized alert notifications when spending approaches or exceeds configured thresholds.
naftiko: "0.5"
info:
label: "Mint Budget Alert Notification Pipeline"
description: "Monitors Mint user spending against budget categories and triggers personalized alert notifications when spending approaches or exceeds configured thresholds."
tags:
- personal-finance
- budgeting
- notifications
capability:
exposes:
- type: mcp
namespace: mint-budget-alerts
port: 8080
tools:
- name: check-budget-thresholds
description: "Check spending against budget thresholds and trigger alerts."
inputParameters:
- name: user_id
in: body
type: string
description: "The Mint user identifier."
- name: budget_category
in: body
type: string
description: "Budget category such as dining, groceries, or entertainment."
call: "mint-api.check-budget"
with:
user: "{{user_id}}"
category: "{{budget_category}}"
outputParameters:
- name: budget_amount
type: number
mapping: "$.budget.budgetAmount"
- name: spent_amount
type: number
mapping: "$.budget.spentAmount"
- name: percent_used
type: number
mapping: "$.budget.percentUsed"
consumes:
- type: http
namespace: mint-api
baseUri: "https://api.intuit.com/mint/v1"
authentication:
type: bearer
token: "$secrets.intuit_mint_api_token"
resources:
- name: budgets
path: "/users/{{user}}/budgets/{{category}}"
inputParameters:
- name: user
in: path
- name: category
in: path
operations:
- name: check-budget
method: GET
Fetches model accuracy metrics from Kubeflow, compares against threshold baselines in Datadog, and creates a GitHub issue if model drift is detected.
naftiko: "0.5"
info:
label: "ML Model Performance Monitor"
description: "Fetches model accuracy metrics from Kubeflow, compares against threshold baselines in Datadog, and creates a GitHub issue if model drift is detected."
tags:
- ai-ml
- kubeflow
- datadog
- github
- model-monitoring
capability:
exposes:
- type: mcp
namespace: ml-monitoring
port: 8080
tools:
- name: check-model-drift
description: "Given a Kubeflow experiment and run ID, check model performance metrics, compare against Datadog baselines, and file a GitHub issue on drift."
inputParameters:
- name: experiment_id
in: body
type: string
description: "The Kubeflow experiment ID."
- name: run_id
in: body
type: string
description: "The Kubeflow pipeline run ID."
- name: github_repo
in: body
type: string
description: "The GitHub repo for filing drift issues (owner/repo)."
steps:
- name: get-run-metrics
type: call
call: "kubeflow.get-run"
with:
experiment_id: "{{experiment_id}}"
run_id: "{{run_id}}"
- name: get-baseline
type: call
call: "datadog.query-metrics"
with:
query: "ml.model.accuracy.baseline{experiment:{{experiment_id}}}"
- name: file-drift-issue
type: call
call: "github.create-issue"
with:
repo: "{{github_repo}}"
title: "Model drift detected: experiment {{experiment_id}}, run {{run_id}}"
body: "Current accuracy: {{get-run-metrics.accuracy}}. Baseline: {{get-baseline.avg_value}}. Drift threshold exceeded. Please investigate retraining."
consumes:
- type: http
namespace: kubeflow
baseUri: "https://kubeflow.intuit.com/pipeline/apis/v2beta1"
authentication:
type: bearer
token: "$secrets.kubeflow_token"
resources:
- name: runs
path: "/experiments/{{experiment_id}}/runs/{{run_id}}"
inputParameters:
- name: experiment_id
in: path
- name: run_id
in: path
operations:
- name: get-run
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: metrics
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issues
path: "/repos/{{repo}}/issues"
inputParameters:
- name: repo
in: path
operations:
- name: create-issue
method: POST
Collects email engagement from Mailchimp, social metrics from LinkedIn, and web analytics from Google Analytics, then updates the Salesforce campaign with unified attribution data.
naftiko: "0.5"
info:
label: "Multi-Channel Marketing Attribution"
description: "Collects email engagement from Mailchimp, social metrics from LinkedIn, and web analytics from Google Analytics, then updates the Salesforce campaign with unified attribution data."
tags:
- marketing
- mailchimp
- linkedin
- google-analytics
- salesforce
- attribution
capability:
exposes:
- type: mcp
namespace: marketing-attribution
port: 8080
tools:
- name: aggregate-attribution
description: "Given campaign identifiers across platforms, pull metrics from each channel and update the Salesforce campaign with unified attribution."
inputParameters:
- name: mailchimp_campaign_id
in: body
type: string
description: "The Mailchimp campaign ID."
- name: linkedin_campaign_id
in: body
type: string
description: "The LinkedIn campaign ID."
- name: ga_property_id
in: body
type: string
description: "The Google Analytics 4 property ID."
- name: sfdc_campaign_id
in: body
type: string
description: "The Salesforce campaign ID."
steps:
- name: get-email-metrics
type: call
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{mailchimp_campaign_id}}"
- name: get-linkedin-metrics
type: call
call: "linkedin.get-campaign-analytics"
with:
campaign_id: "{{linkedin_campaign_id}}"
- name: get-web-metrics
type: call
call: "ga4.run-report"
with:
property_id: "{{ga_property_id}}"
- name: update-sfdc
type: call
call: "sfdc.update-campaign"
with:
campaign_id: "{{sfdc_campaign_id}}"
email_opens: "{{get-email-metrics.opens}}"
email_clicks: "{{get-email-metrics.clicks}}"
linkedin_impressions: "{{get-linkedin-metrics.impressions}}"
linkedin_clicks: "{{get-linkedin-metrics.clicks}}"
web_sessions: "{{get-web-metrics.sessions}}"
web_conversions: "{{get-web-metrics.conversions}}"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/rest"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: campaign-analytics
path: "/adAnalytics"
inputParameters:
- name: campaign_id
in: query
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: ga4
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
inputParameters:
- name: property_id
in: path
operations:
- name: run-report
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: campaigns
path: "/sobjects/Campaign/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: update-campaign
method: PATCH
When a new customer is created in QuickBooks Online, creates a matching Salesforce account, adds them to a Mailchimp welcome audience, and notifies the account owner in Microsoft Teams.
naftiko: "0.5"
info:
label: "New Customer Onboarding Pipeline"
description: "When a new customer is created in QuickBooks Online, creates a matching Salesforce account, adds them to a Mailchimp welcome audience, and notifies the account owner in Microsoft Teams."
tags:
- small-business
- quickbooks
- salesforce
- mailchimp
- microsoft-teams
- onboarding
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-new-customer
description: "Given a QuickBooks customer ID, fetch their details, create a Salesforce account, add to Mailchimp audience, and send a Teams notification."
inputParameters:
- name: customer_id
in: body
type: string
description: "The QuickBooks Online customer ID."
- name: account_owner_email
in: body
type: string
description: "The email of the account owner to notify."
steps:
- name: get-customer
type: call
call: "qbo.get-customer"
with:
customer_id: "{{customer_id}}"
- name: create-sfdc-account
type: call
call: "sfdc.create-account"
with:
name: "{{get-customer.DisplayName}}"
phone: "{{get-customer.PrimaryPhone}}"
email: "{{get-customer.PrimaryEmailAddr}}"
- name: add-to-audience
type: call
call: "mailchimp.add-member"
with:
list_id: "welcome-series"
email_address: "{{get-customer.PrimaryEmailAddr}}"
status: "subscribed"
merge_fields_FNAME: "{{get-customer.GivenName}}"
- name: notify-owner
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{account_owner_email}}"
text: "New customer onboarded: {{get-customer.DisplayName}}. Salesforce account: {{create-sfdc-account.id}}. Added to Mailchimp welcome series."
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: customers
path: "/customer/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: accounts
path: "/sobjects/Account"
operations:
- name: create-account
method: POST
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_api_key"
resources:
- name: members
path: "/lists/{{list_id}}/members"
inputParameters:
- name: list_id
in: path
operations:
- name: add-member
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Monitors application error rates via New Relic for Intuit services, returning error percentage, top errors, and affected transaction count.
naftiko: "0.5"
info:
label: "New Relic Error Rate Monitor"
description: "Monitors application error rates via New Relic for Intuit services, returning error percentage, top errors, and affected transaction count."
tags:
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: error-monitoring
port: 8080
tools:
- name: get-error-rate
description: "Monitor application error rate via New Relic."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-errors"
with:
app_id: "{{app_id}}"
outputParameters:
- name: error_rate
type: string
mapping: "$.metric_data.metrics[0].timeslices[0].values.error_percentage"
- name: count
type: number
mapping: "$.metric_data.metrics[0].timeslices[0].values.error_count"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.newrelic_api_key"
resources:
- name: metrics
path: "/applications/{{app_id}}/metrics/data.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-errors
method: GET
Pulls application performance metrics from New Relic including response time, throughput, and error rate for establishing performance baselines.
naftiko: "0.5"
info:
label: "New Relic Performance Baseline"
description: "Pulls application performance metrics from New Relic including response time, throughput, and error rate for establishing performance baselines."
tags:
- platform
- new-relic
- monitoring
- performance
capability:
exposes:
- type: mcp
namespace: newrelic-perf
port: 8080
tools:
- name: get-app-performance
description: "Given a New Relic application ID, return the current response time, throughput, and error rate metrics."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-app-metrics"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: string
mapping: "$.application_summary.response_time"
- name: throughput
type: string
mapping: "$.application_summary.throughput"
- name: error_rate
type: string
mapping: "$.application_summary.error_rate"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-metrics
method: GET
Retrieves NiFi data ingestion pipeline status for Intuit data platform, returning active threads, queued flowfiles, and bytes processed.
naftiko: "0.5"
info:
label: "NiFi Data Ingestion Pipeline Status"
description: "Retrieves NiFi data ingestion pipeline status for Intuit data platform, returning active threads, queued flowfiles, and bytes processed."
tags:
- data-engineering
- nifi
capability:
exposes:
- type: mcp
namespace: data-ingestion
port: 8080
tools:
- name: get-pipeline-status
description: "Retrieve NiFi data pipeline status."
inputParameters:
- name: process_group_id
in: body
type: string
description: "The NiFi process group ID."
call: "nifi.get-process-group"
with:
process_group_id: "{{process_group_id}}"
outputParameters:
- name: active_threads
type: number
mapping: "$.processGroupStatus.aggregateSnapshot.activeThreadCount"
- name: queued_count
type: number
mapping: "$.processGroupStatus.aggregateSnapshot.queuedCount"
- name: bytes_read
type: string
mapping: "$.processGroupStatus.aggregateSnapshot.bytesRead"
consumes:
- type: http
namespace: nifi
baseUri: "https://nifi.intuit.com/nifi-api"
authentication:
type: bearer
token: "$secrets.nifi_token"
resources:
- name: process-groups
path: "/flow/process-groups/{{process_group_id}}/status"
inputParameters:
- name: process_group_id
in: path
operations:
- name: get-process-group
method: GET
Queries Apache NiFi for processor group status and bulletin board errors, and creates a Datadog event for visibility when data pipeline throughput drops.
naftiko: "0.5"
info:
label: "NiFi Data Pipeline Health Check"
description: "Queries Apache NiFi for processor group status and bulletin board errors, and creates a Datadog event for visibility when data pipeline throughput drops."
tags:
- data
- apache-nifi
- datadog
- data-pipelines
capability:
exposes:
- type: mcp
namespace: nifi-monitoring
port: 8080
tools:
- name: check-pipeline-health
description: "Given a NiFi process group ID, check throughput and errors, and log a Datadog event on anomalies."
inputParameters:
- name: process_group_id
in: body
type: string
description: "The NiFi process group ID."
steps:
- name: get-pg-status
type: call
call: "nifi.get-process-group"
with:
process_group_id: "{{process_group_id}}"
- name: get-bulletins
type: call
call: "nifi.get-bulletins"
with:
process_group_id: "{{process_group_id}}"
- name: log-event
type: call
call: "datadog.create-event"
with:
title: "NiFi pipeline health: {{process_group_id}}"
text: "Throughput: {{get-pg-status.bytes_in}}/s in, {{get-pg-status.bytes_out}}/s out. Active threads: {{get-pg-status.active_threads}}. Bulletins: {{get-bulletins.count}}."
alert_type: "info"
consumes:
- type: http
namespace: nifi
baseUri: "https://nifi.intuit.com/nifi-api"
authentication:
type: bearer
token: "$secrets.nifi_token"
resources:
- name: process-groups
path: "/process-groups/{{process_group_id}}/status"
inputParameters:
- name: process_group_id
in: path
operations:
- name: get-process-group
method: GET
- name: bulletins
path: "/flow/process-groups/{{process_group_id}}/bulletin-board"
inputParameters:
- name: process_group_id
in: path
operations:
- name: get-bulletins
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
Takes a taxpayer question, retrieves relevant tax code context from Elasticsearch, sends to OpenAI for answer generation, and logs the interaction in Salesforce for compliance.
naftiko: "0.5"
info:
label: "OpenAI-Powered Tax Guidance Generator"
description: "Takes a taxpayer question, retrieves relevant tax code context from Elasticsearch, sends to OpenAI for answer generation, and logs the interaction in Salesforce for compliance."
tags:
- tax
- turbotax
- openai
- elasticsearch
- salesforce
- ai-ml
capability:
exposes:
- type: mcp
namespace: tax-guidance
port: 8080
tools:
- name: generate-tax-guidance
description: "Given a taxpayer question and return context, search tax knowledge base, generate AI guidance via OpenAI, and log to Salesforce."
inputParameters:
- name: question
in: body
type: string
description: "The taxpayer's tax question."
- name: taxpayer_id
in: body
type: string
description: "The taxpayer profile ID for logging."
- name: tax_year
in: body
type: string
description: "The tax year for context."
steps:
- name: search-tax-code
type: call
call: "elasticsearch.search-tax-kb"
with:
query: "{{question}}"
tax_year: "{{tax_year}}"
- name: generate-answer
type: call
call: "openai.chat-completion"
with:
model: "gpt-4"
system_prompt: "You are an Intuit tax expert. Use the following tax code references to answer accurately."
context: "{{search-tax-code.results}}"
user_message: "{{question}}"
- name: log-interaction
type: call
call: "sfdc.create-task"
with:
subject: "Tax guidance provided: {{taxpayer_id}}"
description: "Question: {{question}}. AI response generated. Tax year: {{tax_year}}. Sources: {{search-tax-code.source_count}} references."
type: "Tax_Guidance_Log"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://es.intuit.com"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: tax-knowledge
path: "/tax-knowledge-base/_search"
operations:
- name: search-tax-kb
method: POST
- type: http
namespace: openai
baseUri: "https://api.openai.com/v1"
authentication:
type: bearer
token: "$secrets.openai_api_key"
resources:
- name: chat
path: "/chat/completions"
operations:
- name: chat-completion
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
Extracts structured data from receipt images using OpenAI, returning vendor name, total amount, line items, and transaction date for QuickBooks integration.
naftiko: "0.5"
info:
label: "OpenAI Receipt Extraction Service"
description: "Extracts structured data from receipt images using OpenAI, returning vendor name, total amount, line items, and transaction date for QuickBooks integration."
tags:
- machine-learning
- openai
- expense-management
capability:
exposes:
- type: mcp
namespace: receipt-extraction
port: 8080
tools:
- name: extract-receipt
description: "Extract data from a receipt image using OpenAI."
inputParameters:
- name: image_url
in: body
type: string
description: "The receipt image URL."
call: "openai.extract-receipt"
with:
image_url: "{{image_url}}"
outputParameters:
- name: vendor
type: string
mapping: "$.choices[0].message.content.vendor"
- name: total
type: string
mapping: "$.choices[0].message.content.total"
- name: date
type: string
mapping: "$.choices[0].message.content.date"
consumes:
- type: http
namespace: openai
baseUri: "https://api.openai.com/v1"
authentication:
type: bearer
token: "$secrets.openai_api_key"
resources:
- name: completions
path: "/chat/completions"
operations:
- name: extract-receipt
method: POST
Retrieves payroll tax liability from QuickBooks Payroll, validates against IRS e-file requirements, and submits the quarterly 941 filing through the Intuit tax platform.
naftiko: "0.5"
info:
label: "Payroll Tax Filing Orchestrator"
description: "Retrieves payroll tax liability from QuickBooks Payroll, validates against IRS e-file requirements, and submits the quarterly 941 filing through the Intuit tax platform."
tags:
- payroll
- quickbooks
- tax
- compliance
- e-filing
capability:
exposes:
- type: mcp
namespace: payroll-tax-filing
port: 8080
tools:
- name: file-quarterly-941
description: "Given a company realm ID and quarter end date, pull payroll tax liabilities, validate, and submit the 941 filing."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks company realm ID."
- name: quarter_end
in: body
type: string
description: "The quarter end date in YYYY-MM-DD format."
steps:
- name: get-tax-liability
type: call
call: "qbo-payroll.get-tax-liability"
with:
realm_id: "{{realm_id}}"
period_end: "{{quarter_end}}"
- name: validate-filing
type: call
call: "tax-platform.validate-941"
with:
gross_wages: "{{get-tax-liability.total_gross}}"
federal_withholding: "{{get-tax-liability.federal_tax}}"
social_security: "{{get-tax-liability.ss_tax}}"
medicare: "{{get-tax-liability.medicare_tax}}"
- name: submit-941
type: call
call: "tax-platform.submit-941"
with:
realm_id: "{{realm_id}}"
quarter_end: "{{quarter_end}}"
filing_data: "{{validate-filing.validated_payload}}"
consumes:
- type: http
namespace: qbo-payroll
baseUri: "https://payroll.api.intuit.com/v1/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: tax-liability
path: "/tax-liability"
inputParameters:
- name: period_end
in: query
operations:
- name: get-tax-liability
method: GET
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: validate
path: "/payroll/941/validate"
operations:
- name: validate-941
method: POST
- name: submit
path: "/payroll/941/submit"
operations:
- name: submit-941
method: POST
Manages the ProConnect Tax Online client document exchange portal, enabling secure upload, review, and e-signature workflows between tax professionals and their clients.
naftiko: "0.5"
info:
label: "ProConnect Client Document Portal"
description: "Manages the ProConnect Tax Online client document exchange portal, enabling secure upload, review, and e-signature workflows between tax professionals and their clients."
tags:
- tax-preparation
- proconnect
- document-management
capability:
exposes:
- type: mcp
namespace: proconnect-documents
port: 8080
tools:
- name: manage-client-documents
description: "Upload or retrieve client tax documents through the ProConnect portal."
inputParameters:
- name: firm_id
in: body
type: string
description: "The tax firm identifier."
- name: client_id
in: body
type: string
description: "The client identifier."
- name: document_type
in: body
type: string
description: "Document type such as w2, 1099, or engagement-letter."
call: "proconnect-api.manage-documents"
with:
firm: "{{firm_id}}"
client: "{{client_id}}"
type: "{{document_type}}"
outputParameters:
- name: document_id
type: string
mapping: "$.document.id"
- name: upload_status
type: string
mapping: "$.document.status"
- name: signature_required
type: boolean
mapping: "$.document.signatureRequired"
consumes:
- type: http
namespace: proconnect-api
baseUri: "https://api.intuit.com/proconnect/v1"
authentication:
type: bearer
token: "$secrets.intuit_proconnect_api_token"
resources:
- name: documents
path: "/firms/{{firm}}/clients/{{client}}/documents"
inputParameters:
- name: firm
in: path
- name: client
in: path
operations:
- name: manage-documents
method: POST
Queries Prometheus for currently firing alerts matching a given alertname pattern, returning severity and summary annotation.
naftiko: "0.5"
info:
label: "Prometheus Alert Query"
description: "Queries Prometheus for currently firing alerts matching a given alertname pattern, returning severity and summary annotation."
tags:
- platform
- monitoring
- prometheus
capability:
exposes:
- type: mcp
namespace: prometheus-alerts
port: 8080
tools:
- name: get-active-alerts
description: "Query Prometheus for active alerts, optionally filtered by alertname pattern."
inputParameters:
- name: filter
in: body
type: string
description: "PromQL alertname filter expression."
call: "prometheus.get-alerts"
with:
filter: "{{filter}}"
outputParameters:
- name: alerts
type: string
mapping: "$.data.alerts"
consumes:
- type: http
namespace: prometheus
baseUri: "https://prometheus.intuit.com/api/v1"
authentication:
type: bearer
token: "$secrets.prometheus_token"
resources:
- name: alerts
path: "/alerts"
inputParameters:
- name: filter
in: query
operations:
- name: get-alerts
method: GET
Queries Prometheus for service health metrics across Intuit platform, returning request rate, error rate, and latency percentiles.
naftiko: "0.5"
info:
label: "Prometheus Service Metrics Query"
description: "Queries Prometheus for service health metrics across Intuit platform, returning request rate, error rate, and latency percentiles."
tags:
- monitoring
- prometheus
capability:
exposes:
- type: mcp
namespace: service-metrics
port: 8080
tools:
- name: query-metrics
description: "Query service metrics from Prometheus."
inputParameters:
- name: service
in: body
type: string
description: "The service name."
- name: query
in: body
type: string
description: "The PromQL query."
call: "prometheus.query"
with:
service: "{{service}}"
query: "{{query}}"
outputParameters:
- name: value
type: string
mapping: "$.data.result[0].value[1]"
- name: metric
type: string
mapping: "$.data.result[0].metric.__name__"
consumes:
- type: http
namespace: prometheus
baseUri: "https://prometheus.intuit.com"
authentication:
type: bearer
token: "$secrets.prometheus_token"
resources:
- name: queries
path: "/api/v1/query"
operations:
- name: query
method: GET
Generates QuickBooks profit and loss and balance sheet reports, exports them to Google Drive, and notifies the finance team in Microsoft Teams with download links.
naftiko: "0.5"
info:
label: "Quarterly Financial Close Orchestrator"
description: "Generates QuickBooks profit and loss and balance sheet reports, exports them to Google Drive, and notifies the finance team in Microsoft Teams with download links."
tags:
- accounting
- quickbooks
- google-drive
- microsoft-teams
- financial-reporting
capability:
exposes:
- type: mcp
namespace: financial-close
port: 8080
tools:
- name: run-quarterly-close
description: "Given a fiscal quarter date range, generate P&L and balance sheet from QuickBooks, upload to Google Drive, and notify the finance team."
inputParameters:
- name: start_date
in: body
type: string
description: "Quarter start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Quarter end date in YYYY-MM-DD format."
- name: drive_folder_id
in: body
type: string
description: "The Google Drive folder ID for financial reports."
- name: teams_channel_webhook
in: body
type: string
description: "The Microsoft Teams webhook for the finance channel."
steps:
- name: get-pnl
type: call
call: "qbo.get-profit-loss"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: get-balance-sheet
type: call
call: "qbo.get-balance-sheet"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: upload-to-drive
type: call
call: "gdrive.upload-file"
with:
folder_id: "{{drive_folder_id}}"
file_name: "Q_Close_{{start_date}}_{{end_date}}.pdf"
content: "{{get-pnl.report_data}}"
- name: notify-finance
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_channel_webhook}}"
text: "Quarterly close reports ready ({{start_date}} to {{end_date}}). P&L net income: {{get-pnl.net_income}}. Balance sheet total assets: {{get-balance-sheet.total_assets}}. Download: {{upload-to-drive.webViewLink}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: profit-loss
path: "/reports/ProfitAndLoss"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-profit-loss
method: GET
- name: balance-sheet
path: "/reports/BalanceSheet"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-balance-sheet
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Retrieves 1099 contractor payment data from QuickBooks Online, returning contractor name, total payments, tax ID status, and filing readiness.
naftiko: "0.5"
info:
label: "QuickBooks 1099 Contractor Report"
description: "Retrieves 1099 contractor payment data from QuickBooks Online, returning contractor name, total payments, tax ID status, and filing readiness."
tags:
- tax
- quickbooks
- compliance
capability:
exposes:
- type: mcp
namespace: qbo-contractors
port: 8080
tools:
- name: get-1099-data
description: "Retrieve 1099 contractor data from QuickBooks."
inputParameters:
- name: tax_year
in: body
type: string
description: "The tax year."
call: "qbo.get-1099-report"
with:
tax_year: "{{tax_year}}"
outputParameters:
- name: contractor_count
type: number
mapping: "$.Report.Rows.Row.length"
- name: total_payments
type: string
mapping: "$.Report.Rows.Summary.TotalPayments"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/TransactionListByVendor?date_macro=This Year"
operations:
- name: get-1099-report
method: GET
Retrieves accounts receivable aging report from QuickBooks Online, returning current, 30-day, 60-day, and 90-day aging buckets.
naftiko: "0.5"
info:
label: "QuickBooks Account Receivable Aging"
description: "Retrieves accounts receivable aging report from QuickBooks Online, returning current, 30-day, 60-day, and 90-day aging buckets."
tags:
- accounting
- quickbooks
- receivables
capability:
exposes:
- type: mcp
namespace: qbo-receivables
port: 8080
tools:
- name: get-ar-aging
description: "Retrieve AR aging report from QuickBooks Online."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks company realm ID."
call: "qbo.get-ar-aging"
with:
realm_id: "{{realm_id}}"
outputParameters:
- name: current
type: string
mapping: "$.Rows.Row[0].ColData[1].value"
- name: days_30
type: string
mapping: "$.Rows.Row[0].ColData[2].value"
- name: days_60
type: string
mapping: "$.Rows.Row[0].ColData[3].value"
- name: days_90_plus
type: string
mapping: "$.Rows.Row[0].ColData[4].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/AgedReceivables"
operations:
- name: get-ar-aging
method: GET
Retrieves accounts payable aging report from QuickBooks Online, returning current, 30-day, 60-day, and 90+ day outstanding vendor balances.
naftiko: "0.5"
info:
label: "QuickBooks Accounts Payable Aging"
description: "Retrieves accounts payable aging report from QuickBooks Online, returning current, 30-day, 60-day, and 90+ day outstanding vendor balances."
tags:
- accounting
- quickbooks
- payables
capability:
exposes:
- type: mcp
namespace: qbo-payables
port: 8080
tools:
- name: get-ap-aging
description: "Retrieve AP aging report from QuickBooks Online."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks realm ID."
call: "qbo.get-ap-aging"
with:
realm_id: "{{realm_id}}"
outputParameters:
- name: current
type: string
mapping: "$.Rows.Row[0].ColData[1].value"
- name: days_30
type: string
mapping: "$.Rows.Row[0].ColData[2].value"
- name: days_90_plus
type: string
mapping: "$.Rows.Row[0].ColData[4].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/AgedPayables"
operations:
- name: get-ap-aging
method: GET
Retrieves the balance sheet report from QuickBooks Online, returning total assets, total liabilities, and total equity for a given date.
naftiko: "0.5"
info:
label: "QuickBooks Balance Sheet Report"
description: "Retrieves the balance sheet report from QuickBooks Online, returning total assets, total liabilities, and total equity for a given date."
tags:
- accounting
- quickbooks
- reporting
capability:
exposes:
- type: mcp
namespace: qbo-balance-sheet
port: 8080
tools:
- name: get-balance-sheet
description: "Retrieve balance sheet from QuickBooks Online."
inputParameters:
- name: as_of_date
in: body
type: string
description: "The balance sheet date."
call: "qbo.get-balance-sheet"
with:
as_of_date: "{{as_of_date}}"
outputParameters:
- name: total_assets
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: total_liabilities
type: string
mapping: "$.Rows.Row[1].Summary.ColData[1].value"
- name: total_equity
type: string
mapping: "$.Rows.Row[2].Summary.ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/BalanceSheet?date_macro=Custom&start_date={{as_of_date}}&end_date={{as_of_date}}"
inputParameters:
- name: as_of_date
in: query
operations:
- name: get-balance-sheet
method: GET
Retrieves bank feed transactions from QuickBooks Online for reconciliation, returning transaction date, amount, payee name, and match status.
naftiko: "0.5"
info:
label: "QuickBooks Bank Feed Transaction Lookup"
description: "Retrieves bank feed transactions from QuickBooks Online for reconciliation, returning transaction date, amount, payee name, and match status."
tags:
- accounting
- quickbooks
- banking
capability:
exposes:
- type: mcp
namespace: qbo-bankfeed
port: 8080
tools:
- name: get-bank-transaction
description: "Look up a bank feed transaction in QuickBooks."
inputParameters:
- name: transaction_id
in: body
type: string
description: "The bank feed transaction ID."
call: "qbo.get-bank-transaction"
with:
transaction_id: "{{transaction_id}}"
outputParameters:
- name: date
type: string
mapping: "$.BankTransaction.TxnDate"
- name: amount
type: string
mapping: "$.BankTransaction.TotalAmt"
- name: payee
type: string
mapping: "$.BankTransaction.PayeeName"
- name: match_status
type: string
mapping: "$.BankTransaction.MatchStatus"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: transactions
path: "/banktransaction/{{transaction_id}}"
inputParameters:
- name: transaction_id
in: path
operations:
- name: get-bank-transaction
method: GET
Retrieves bill payment details from QuickBooks Online, returning vendor name, payment amount, payment method, and check number.
naftiko: "0.5"
info:
label: "QuickBooks Bill Payment Lookup"
description: "Retrieves bill payment details from QuickBooks Online, returning vendor name, payment amount, payment method, and check number."
tags:
- accounting
- quickbooks
- payables
capability:
exposes:
- type: mcp
namespace: qbo-bill-payments
port: 8080
tools:
- name: get-bill-payment
description: "Look up a bill payment in QuickBooks Online."
inputParameters:
- name: payment_id
in: body
type: string
description: "The bill payment ID."
call: "qbo.get-bill-payment"
with:
payment_id: "{{payment_id}}"
outputParameters:
- name: vendor
type: string
mapping: "$.BillPayment.VendorRef.name"
- name: amount
type: string
mapping: "$.BillPayment.TotalAmt"
- name: pay_type
type: string
mapping: "$.BillPayment.PayType"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: bill-payments
path: "/billpayment/{{payment_id}}"
inputParameters:
- name: payment_id
in: path
operations:
- name: get-bill-payment
method: GET
Generates a budget versus actual comparison report from QuickBooks Online, highlighting variances across income and expense categories for a specified fiscal period.
naftiko: "0.5"
info:
label: "QuickBooks Budget vs Actual Report"
description: "Generates a budget versus actual comparison report from QuickBooks Online, highlighting variances across income and expense categories for a specified fiscal period."
tags:
- accounting
- quickbooks
- budgeting
capability:
exposes:
- type: mcp
namespace: qbo-budgeting
port: 8080
tools:
- name: get-budget-vs-actual
description: "Retrieve a budget versus actual variance report for a given fiscal period from QuickBooks Online."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks Online company realm ID."
- name: fiscal_period
in: body
type: string
description: "The fiscal period to report on, such as 2026-Q1."
call: "qbo.get-budget-report"
with:
realm_id: "{{realm_id}}"
period: "{{fiscal_period}}"
outputParameters:
- name: total_budgeted_income
type: string
mapping: "$.Report.Rows.budgetedIncome"
- name: total_actual_income
type: string
mapping: "$.Report.Rows.actualIncome"
- name: total_budgeted_expense
type: string
mapping: "$.Report.Rows.budgetedExpense"
- name: total_actual_expense
type: string
mapping: "$.Report.Rows.actualExpense"
- name: net_variance
type: string
mapping: "$.Report.Rows.netVariance"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: budget-report
path: "/reports/BudgetSummary"
inputParameters:
- name: fiscal_period
in: query
operations:
- name: get-budget-report
method: GET
Evaluates QuickBooks small business customers for QuickBooks Capital loan eligibility based on revenue trends, cash flow patterns, and business health metrics.
naftiko: "0.5"
info:
label: "QuickBooks Capital Loan Eligibility Checker"
description: "Evaluates QuickBooks small business customers for QuickBooks Capital loan eligibility based on revenue trends, cash flow patterns, and business health metrics."
tags:
- small-business-lending
- quickbooks-capital
- eligibility
capability:
exposes:
- type: mcp
namespace: qb-capital
port: 8080
tools:
- name: check-loan-eligibility
description: "Check QuickBooks Capital loan eligibility for a business."
inputParameters:
- name: company_id
in: body
type: string
description: "The QuickBooks company identifier."
- name: requested_amount
in: body
type: number
description: "Requested loan amount in USD."
call: "capital-api.check-eligibility"
with:
company: "{{company_id}}"
amount: "{{requested_amount}}"
outputParameters:
- name: eligible
type: boolean
mapping: "$.eligibility.isEligible"
- name: max_approved_amount
type: number
mapping: "$.eligibility.maxApprovedAmount"
- name: estimated_rate
type: number
mapping: "$.eligibility.estimatedRate"
consumes:
- type: http
namespace: capital-api
baseUri: "https://api.intuit.com/quickbooks-capital/v1"
authentication:
type: bearer
token: "$secrets.intuit_capital_api_token"
resources:
- name: eligibility
path: "/companies/{{company}}/eligibility"
inputParameters:
- name: company
in: path
operations:
- name: check-eligibility
method: GET
Retrieves the cash flow statement from QuickBooks Online, returning operating cash flow, investing activities, financing activities, and net cash change.
naftiko: "0.5"
info:
label: "QuickBooks Cash Flow Statement"
description: "Retrieves the cash flow statement from QuickBooks Online, returning operating cash flow, investing activities, financing activities, and net cash change."
tags:
- accounting
- quickbooks
- reporting
capability:
exposes:
- type: mcp
namespace: qbo-cashflow
port: 8080
tools:
- name: get-cash-flow
description: "Retrieve cash flow statement from QuickBooks Online."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date."
- name: end_date
in: body
type: string
description: "Report end date."
call: "qbo.get-cashflow"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: operating
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: investing
type: string
mapping: "$.Rows.Row[1].Summary.ColData[1].value"
- name: financing
type: string
mapping: "$.Rows.Row[2].Summary.ColData[1].value"
- name: net_change
type: string
mapping: "$.Rows.Row[3].Summary.ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/CashFlow?start_date={{start_date}}&end_date={{end_date}}"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-cashflow
method: GET
Retrieves profit and loss by class from QuickBooks Online for multi-department reporting, returning revenue and expenses segmented by business class.
naftiko: "0.5"
info:
label: "QuickBooks Class Tracking Report"
description: "Retrieves profit and loss by class from QuickBooks Online for multi-department reporting, returning revenue and expenses segmented by business class."
tags:
- accounting
- quickbooks
- reporting
capability:
exposes:
- type: mcp
namespace: qbo-class-tracking
port: 8080
tools:
- name: get-class-report
description: "Retrieve P&L by class from QuickBooks Online."
inputParameters:
- name: class_name
in: body
type: string
description: "The QuickBooks class name."
call: "qbo.get-pl-by-class"
with:
class_name: "{{class_name}}"
outputParameters:
- name: revenue
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: expenses
type: string
mapping: "$.Rows.Row[1].Summary.ColData[1].value"
- name: net_income
type: string
mapping: "$.Rows.Row[2].Summary.ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss?class={{class_name}}"
inputParameters:
- name: class_name
in: query
operations:
- name: get-pl-by-class
method: GET
Synchronizes inventory levels across multiple sales channels connected to QuickBooks Commerce, preventing overselling and maintaining accurate stock counts across Shopify, Amazon, and eBay.
naftiko: "0.5"
info:
label: "QuickBooks Commerce Multi-Channel Inventory Sync"
description: "Synchronizes inventory levels across multiple sales channels connected to QuickBooks Commerce, preventing overselling and maintaining accurate stock counts across Shopify, Amazon, and eBay."
tags:
- e-commerce
- quickbooks-commerce
- inventory-sync
capability:
exposes:
- type: mcp
namespace: commerce-inventory
port: 8080
tools:
- name: sync-multi-channel-inventory
description: "Synchronize inventory across connected sales channels."
inputParameters:
- name: company_id
in: body
type: string
description: "The QuickBooks company identifier."
- name: product_sku
in: body
type: string
description: "The product SKU to synchronize."
call: "commerce-api.sync-inventory"
with:
company: "{{company_id}}"
sku: "{{product_sku}}"
outputParameters:
- name: channels_synced
type: array
mapping: "$.sync.channelsSynced"
- name: current_stock
type: integer
mapping: "$.sync.currentStock"
- name: sync_conflicts
type: array
mapping: "$.sync.conflicts"
consumes:
- type: http
namespace: commerce-api
baseUri: "https://api.intuit.com/quickbooks-commerce/v1"
authentication:
type: bearer
token: "$secrets.intuit_commerce_api_token"
resources:
- name: inventory-sync
path: "/companies/{{company}}/inventory/sync"
inputParameters:
- name: company
in: path
operations:
- name: sync-inventory
method: POST
Queries QuickBooks Online for a customer's current open balance and returns total receivables and last payment date.
naftiko: "0.5"
info:
label: "QuickBooks Customer Balance"
description: "Queries QuickBooks Online for a customer's current open balance and returns total receivables and last payment date."
tags:
- accounting
- quickbooks
- receivables
capability:
exposes:
- type: mcp
namespace: qbo-customers
port: 8080
tools:
- name: get-customer-balance
description: "Given a QuickBooks customer ID, return the customer name, open balance, and last payment received date."
inputParameters:
- name: customer_id
in: body
type: string
description: "The QuickBooks Online customer ID."
call: "qbo.get-customer"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: display_name
type: string
mapping: "$.Customer.DisplayName"
- name: balance
type: string
mapping: "$.Customer.Balance"
- name: currency
type: string
mapping: "$.Customer.CurrencyRef.value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: customers
path: "/customer/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
Generates a customer statement from QuickBooks Online, returning open balance, last payment date, and aging summary for a specific customer.
naftiko: "0.5"
info:
label: "QuickBooks Customer Statement Generator"
description: "Generates a customer statement from QuickBooks Online, returning open balance, last payment date, and aging summary for a specific customer."
tags:
- accounting
- quickbooks
- receivables
capability:
exposes:
- type: mcp
namespace: qbo-statements
port: 8080
tools:
- name: generate-statement
description: "Generate a customer statement from QuickBooks."
inputParameters:
- name: customer_id
in: body
type: string
description: "The QuickBooks customer ID."
call: "qbo.get-customer-balance"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: open_balance
type: string
mapping: "$.Customer.Balance"
- name: display_name
type: string
mapping: "$.Customer.DisplayName"
- name: last_payment
type: string
mapping: "$.Customer.LastPaymentDate"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: customers
path: "/customer/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer-balance
method: GET
Retrieves employee details from QuickBooks Online payroll, returning employee name, hire date, pay rate, and employment status.
naftiko: "0.5"
info:
label: "QuickBooks Employee Lookup"
description: "Retrieves employee details from QuickBooks Online payroll, returning employee name, hire date, pay rate, and employment status."
tags:
- payroll
- quickbooks
- hr
capability:
exposes:
- type: mcp
namespace: qbo-employees
port: 8080
tools:
- name: get-employee
description: "Look up an employee in QuickBooks Online."
inputParameters:
- name: employee_id
in: body
type: string
description: "The QuickBooks employee ID."
call: "qbo.get-employee"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: display_name
type: string
mapping: "$.Employee.DisplayName"
- name: hire_date
type: string
mapping: "$.Employee.HiredDate"
- name: active
type: string
mapping: "$.Employee.Active"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: employees
path: "/employee/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-employee
method: GET
Generates an expense report from QuickBooks Online by category, returning top expense categories, total expenses, and month-over-month change.
naftiko: "0.5"
info:
label: "QuickBooks Expense Report Generator"
description: "Generates an expense report from QuickBooks Online by category, returning top expense categories, total expenses, and month-over-month change."
tags:
- accounting
- quickbooks
- expenses
capability:
exposes:
- type: mcp
namespace: qbo-expenses
port: 8080
tools:
- name: get-expense-report
description: "Generate an expense report from QuickBooks."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date."
- name: end_date
in: body
type: string
description: "Report end date."
call: "qbo.get-expense-report"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_expenses
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: top_category
type: string
mapping: "$.Rows.Row[0].Rows.Row[0].ColData[0].value"
- name: top_category_amount
type: string
mapping: "$.Rows.Row[0].Rows.Row[0].ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss?start_date={{start_date}}&end_date={{end_date}}"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-expense-report
method: GET
Retrieves inventory valuation summary from QuickBooks Online, returning total inventory value, item count, and COGS for inventory-based businesses.
naftiko: "0.5"
info:
label: "QuickBooks Inventory Valuation"
description: "Retrieves inventory valuation summary from QuickBooks Online, returning total inventory value, item count, and COGS for inventory-based businesses."
tags:
- accounting
- quickbooks
- inventory
capability:
exposes:
- type: mcp
namespace: qbo-inventory
port: 8080
tools:
- name: get-inventory-valuation
description: "Retrieve inventory valuation from QuickBooks."
inputParameters:
- name: as_of_date
in: body
type: string
description: "The valuation date."
call: "qbo.get-inventory-report"
with:
as_of_date: "{{as_of_date}}"
outputParameters:
- name: total_value
type: string
mapping: "$.Rows.Row[0].Summary.ColData[3].value"
- name: item_count
type: number
mapping: "$.Rows.Row.length"
- name: total_cogs
type: string
mapping: "$.Rows.Row[0].Summary.ColData[2].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/InventoryValuationSummary?report_date={{as_of_date}}"
inputParameters:
- name: as_of_date
in: query
operations:
- name: get-inventory-report
method: GET
Retrieves a QuickBooks Online invoice by ID and returns customer name, amount due, due date, and payment status.
naftiko: "0.5"
info:
label: "QuickBooks Invoice Lookup"
description: "Retrieves a QuickBooks Online invoice by ID and returns customer name, amount due, due date, and payment status."
tags:
- accounting
- quickbooks
- invoicing
capability:
exposes:
- type: mcp
namespace: qbo-invoicing
port: 8080
tools:
- name: get-invoice
description: "Given a QuickBooks invoice ID, return the invoice details including customer, amount, due date, and status."
inputParameters:
- name: invoice_id
in: body
type: string
description: "The QuickBooks Online invoice ID."
call: "qbo.get-invoice"
with:
invoice_id: "{{invoice_id}}"
outputParameters:
- name: customer_name
type: string
mapping: "$.Invoice.CustomerRef.name"
- name: total_amount
type: string
mapping: "$.Invoice.TotalAmt"
- name: due_date
type: string
mapping: "$.Invoice.DueDate"
- name: balance
type: string
mapping: "$.Invoice.Balance"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: invoices
path: "/invoice/{{invoice_id}}"
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
Creates a journal entry in QuickBooks Online for manual adjustments, returning the journal entry ID, transaction date, and total amount.
naftiko: "0.5"
info:
label: "QuickBooks Journal Entry Creator"
description: "Creates a journal entry in QuickBooks Online for manual adjustments, returning the journal entry ID, transaction date, and total amount."
tags:
- accounting
- quickbooks
capability:
exposes:
- type: mcp
namespace: qbo-journal
port: 8080
tools:
- name: create-journal-entry
description: "Create a journal entry in QuickBooks Online."
inputParameters:
- name: debit_account
in: body
type: string
description: "The debit account name."
- name: credit_account
in: body
type: string
description: "The credit account name."
- name: amount
in: body
type: string
description: "The journal entry amount."
call: "qbo.create-journal"
with:
debit_account: "{{debit_account}}"
credit_account: "{{credit_account}}"
amount: "{{amount}}"
outputParameters:
- name: journal_id
type: string
mapping: "$.JournalEntry.Id"
- name: txn_date
type: string
mapping: "$.JournalEntry.TxnDate"
- name: total
type: string
mapping: "$.JournalEntry.TotalAmt"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: journals
path: "/journalentry"
operations:
- name: create-journal
method: POST
Pulls profit and loss reports from multiple QuickBooks Online companies, aggregates the financials, and uploads a consolidated report to Google Drive for the parent entity.
naftiko: "0.5"
info:
label: "QuickBooks Multi-Entity Consolidation"
description: "Pulls profit and loss reports from multiple QuickBooks Online companies, aggregates the financials, and uploads a consolidated report to Google Drive for the parent entity."
tags:
- accounting
- quickbooks
- google-drive
- financial-reporting
- multi-entity
capability:
exposes:
- type: mcp
namespace: entity-consolidation
port: 8080
tools:
- name: consolidate-financials
description: "Given multiple QuickBooks realm IDs and a date range, pull P&L from each, aggregate, and upload to Google Drive."
inputParameters:
- name: realm_ids
in: body
type: string
description: "Comma-separated list of QuickBooks company realm IDs."
- name: start_date
in: body
type: string
description: "Consolidation period start date."
- name: end_date
in: body
type: string
description: "Consolidation period end date."
- name: drive_folder_id
in: body
type: string
description: "Google Drive folder for the consolidated report."
steps:
- name: get-entity-reports
type: call
call: "qbo.get-profit-loss"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: consolidate
type: call
call: "intuit-ai.consolidate-reports"
with:
reports: "{{get-entity-reports.results}}"
realm_ids: "{{realm_ids}}"
- name: upload-report
type: call
call: "gdrive.upload-file"
with:
folder_id: "{{drive_folder_id}}"
file_name: "Consolidated_PnL_{{start_date}}_{{end_date}}.pdf"
content: "{{consolidate.consolidated_report}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-profit-loss
method: GET
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: consolidation
path: "/finance/consolidate"
operations:
- name: consolidate-reports
method: POST
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
Automates QuickBooks Online bank transaction categorization using configurable rules, reducing manual bookkeeping effort by auto-matching transactions to accounts and classes.
naftiko: "0.5"
info:
label: "QuickBooks Online Bank Rule Automation"
description: "Automates QuickBooks Online bank transaction categorization using configurable rules, reducing manual bookkeeping effort by auto-matching transactions to accounts and classes."
tags:
- bookkeeping
- quickbooks-online
- bank-rules
capability:
exposes:
- type: mcp
namespace: qbo-bank-rules
port: 8080
tools:
- name: manage-bank-rules
description: "Create or apply bank categorization rules for a QuickBooks company."
inputParameters:
- name: company_id
in: body
type: string
description: "The QuickBooks Online company identifier."
- name: rule_action
in: body
type: string
description: "Action such as create, apply, or list."
- name: rule_criteria
in: body
type: object
description: "Rule matching criteria including payee patterns and amount ranges."
call: "qbo-api.manage-bank-rules"
with:
company: "{{company_id}}"
action: "{{rule_action}}"
criteria: "{{rule_criteria}}"
outputParameters:
- name: rule_id
type: string
mapping: "$.rule.id"
- name: transactions_matched
type: integer
mapping: "$.rule.transactionsMatched"
- name: auto_categorized
type: integer
mapping: "$.rule.autoCategorized"
consumes:
- type: http
namespace: qbo-api
baseUri: "https://api.intuit.com/quickbooks/v1"
authentication:
type: bearer
token: "$secrets.intuit_qbo_api_token"
resources:
- name: bank-rules
path: "/companies/{{company}}/bank-rules"
inputParameters:
- name: company
in: path
operations:
- name: manage-bank-rules
method: POST
Retrieves payment details from QuickBooks Online by payment ID, returning amount, date, payment method, and linked invoice.
naftiko: "0.5"
info:
label: "QuickBooks Payment Lookup"
description: "Retrieves payment details from QuickBooks Online by payment ID, returning amount, date, payment method, and linked invoice."
tags:
- accounting
- quickbooks
- payments
capability:
exposes:
- type: mcp
namespace: qbo-payments
port: 8080
tools:
- name: get-payment
description: "Given a QuickBooks payment ID, return the payment amount, date, method, and associated invoice reference."
inputParameters:
- name: payment_id
in: body
type: string
description: "The QuickBooks Online payment ID."
call: "qbo.get-payment"
with:
payment_id: "{{payment_id}}"
outputParameters:
- name: total_amount
type: string
mapping: "$.Payment.TotalAmt"
- name: txn_date
type: string
mapping: "$.Payment.TxnDate"
- name: payment_method
type: string
mapping: "$.Payment.PaymentMethodRef.name"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: payments
path: "/payment/{{payment_id}}"
inputParameters:
- name: payment_id
in: path
operations:
- name: get-payment
method: GET
Manages employee direct deposit enrollment for QuickBooks Payroll, handling bank account verification, split deposit configurations, and compliance validations.
naftiko: "0.5"
info:
label: "QuickBooks Payroll Direct Deposit Enrollment"
description: "Manages employee direct deposit enrollment for QuickBooks Payroll, handling bank account verification, split deposit configurations, and compliance validations."
tags:
- payroll
- direct-deposit
- employee-management
capability:
exposes:
- type: mcp
namespace: payroll-direct-deposit
port: 8080
tools:
- name: enroll-direct-deposit
description: "Enroll or update an employee direct deposit configuration."
inputParameters:
- name: company_id
in: body
type: string
description: "The QuickBooks company identifier."
- name: employee_id
in: body
type: string
description: "The employee identifier."
- name: routing_number
in: body
type: string
description: "Bank routing number for deposit."
call: "payroll-api.enroll-direct-deposit"
with:
company: "{{company_id}}"
employee: "{{employee_id}}"
routing: "{{routing_number}}"
outputParameters:
- name: enrollment_status
type: string
mapping: "$.enrollment.status"
- name: verification_method
type: string
mapping: "$.enrollment.verificationMethod"
- name: effective_date
type: string
mapping: "$.enrollment.effectiveDate"
consumes:
- type: http
namespace: payroll-api
baseUri: "https://api.intuit.com/quickbooks-payroll/v1"
authentication:
type: bearer
token: "$secrets.intuit_payroll_api_token"
resources:
- name: direct-deposits
path: "/companies/{{company}}/employees/{{employee}}/direct-deposit"
inputParameters:
- name: company
in: path
- name: employee
in: path
operations:
- name: enroll-direct-deposit
method: POST
Retrieves payroll run summary from QuickBooks Payroll including total gross pay, total deductions, and net pay for a given pay period.
naftiko: "0.5"
info:
label: "QuickBooks Payroll Run Summary"
description: "Retrieves payroll run summary from QuickBooks Payroll including total gross pay, total deductions, and net pay for a given pay period."
tags:
- payroll
- quickbooks
- small-business
capability:
exposes:
- type: mcp
namespace: qbo-payroll
port: 8080
tools:
- name: get-payroll-summary
description: "Given a payroll ID, return the gross pay total, deductions total, and net pay for the pay period."
inputParameters:
- name: payroll_id
in: body
type: string
description: "The QuickBooks Payroll run ID."
call: "qbo-payroll.get-payroll"
with:
payroll_id: "{{payroll_id}}"
outputParameters:
- name: gross_pay
type: string
mapping: "$.payroll.totalGrossPay"
- name: total_deductions
type: string
mapping: "$.payroll.totalDeductions"
- name: net_pay
type: string
mapping: "$.payroll.totalNetPay"
consumes:
- type: http
namespace: qbo-payroll
baseUri: "https://payroll.api.intuit.com/v1/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: payrolls
path: "/payroll/{{payroll_id}}"
inputParameters:
- name: payroll_id
in: path
operations:
- name: get-payroll
method: GET
Generates a profit and loss report from QuickBooks Online for a given date range, returning income, expenses, and net income totals.
naftiko: "0.5"
info:
label: "QuickBooks Profit and Loss Report"
description: "Generates a profit and loss report from QuickBooks Online for a given date range, returning income, expenses, and net income totals."
tags:
- accounting
- quickbooks
- financial-reporting
capability:
exposes:
- type: mcp
namespace: qbo-reports
port: 8080
tools:
- name: get-profit-loss
description: "Given start and end dates, return the QuickBooks profit and loss report with income, expense, and net income totals."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Report end date in YYYY-MM-DD format."
call: "qbo.get-profit-loss"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_income
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: total_expenses
type: string
mapping: "$.Rows.Row[1].Summary.ColData[1].value"
- name: net_income
type: string
mapping: "$.Rows.Row[2].Summary.ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-profit-loss
method: GET
Retrieves purchase order details from QuickBooks Online, returning vendor name, order amount, status, and expected delivery date.
naftiko: "0.5"
info:
label: "QuickBooks Purchase Order Lookup"
description: "Retrieves purchase order details from QuickBooks Online, returning vendor name, order amount, status, and expected delivery date."
tags:
- accounting
- quickbooks
- procurement
capability:
exposes:
- type: mcp
namespace: qbo-purchase-orders
port: 8080
tools:
- name: get-purchase-order
description: "Look up a purchase order in QuickBooks."
inputParameters:
- name: po_id
in: body
type: string
description: "The purchase order ID."
call: "qbo.get-po"
with:
po_id: "{{po_id}}"
outputParameters:
- name: vendor
type: string
mapping: "$.PurchaseOrder.VendorRef.name"
- name: total
type: string
mapping: "$.PurchaseOrder.TotalAmt"
- name: status
type: string
mapping: "$.PurchaseOrder.POStatus"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: purchase-orders
path: "/purchaseorder/{{po_id}}"
inputParameters:
- name: po_id
in: path
operations:
- name: get-po
method: GET
Creates a recurring invoice in QuickBooks Online from a template, attaches line items, and sends the invoice to the customer email automatically.
naftiko: "0.5"
info:
label: "QuickBooks Recurring Invoice Generator"
description: "Creates a recurring invoice in QuickBooks Online from a template, attaches line items, and sends the invoice to the customer email automatically."
tags:
- accounting
- quickbooks
- invoicing
- automation
capability:
exposes:
- type: mcp
namespace: recurring-invoicing
port: 8080
tools:
- name: create-and-send-invoice
description: "Given customer and line item details, create a QuickBooks invoice and send it to the customer."
inputParameters:
- name: customer_id
in: body
type: string
description: "The QuickBooks customer ID."
- name: line_items
in: body
type: string
description: "JSON array of line items with item_id, quantity, and unit_price."
- name: due_days
in: body
type: string
description: "Number of days until invoice is due."
steps:
- name: create-invoice
type: call
call: "qbo.create-invoice"
with:
customer_id: "{{customer_id}}"
line_items: "{{line_items}}"
due_days: "{{due_days}}"
- name: send-invoice
type: call
call: "qbo.send-invoice"
with:
invoice_id: "{{create-invoice.Invoice_Id}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: invoices
path: "/invoice"
operations:
- name: create-invoice
method: POST
- name: invoice-send
path: "/invoice/{{invoice_id}}/send"
inputParameters:
- name: invoice_id
in: path
operations:
- name: send-invoice
method: POST
Retrieves recent sales transactions from QuickBooks, validates tax rates against the Intuit tax compliance engine, and flags discrepancies in a Salesforce case.
naftiko: "0.5"
info:
label: "QuickBooks Sales Tax Compliance Check"
description: "Retrieves recent sales transactions from QuickBooks, validates tax rates against the Intuit tax compliance engine, and flags discrepancies in a Salesforce case."
tags:
- tax
- quickbooks
- compliance
- salesforce
- sales-tax
capability:
exposes:
- type: mcp
namespace: sales-tax-compliance
port: 8080
tools:
- name: audit-sales-tax
description: "Given a date range, pull QuickBooks sales, validate tax rates, and create a Salesforce case for any discrepancies."
inputParameters:
- name: start_date
in: body
type: string
description: "Audit period start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Audit period end date in YYYY-MM-DD format."
steps:
- name: get-sales
type: call
call: "qbo.query-sales"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: validate-tax-rates
type: call
call: "tax-platform.validate-sales-tax"
with:
transactions: "{{get-sales.results}}"
- name: flag-discrepancies
type: call
call: "sfdc.create-case"
with:
subject: "Sales tax discrepancies: {{start_date}} to {{end_date}}"
description: "Transactions audited: {{validate-tax-rates.total_checked}}. Discrepancies found: {{validate-tax-rates.discrepancy_count}}. Total variance: ${{validate-tax-rates.total_variance}}."
type: "Tax_Compliance"
priority: "Medium"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-sales
method: GET
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: sales-tax
path: "/validate/sales-tax"
operations:
- name: validate-sales-tax
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
Tracks business mileage for QuickBooks Self-Employed users, automatically classifying trips as business or personal and calculating IRS-standard deductions.
naftiko: "0.5"
info:
label: "QuickBooks Self-Employed Mileage Tracker"
description: "Tracks business mileage for QuickBooks Self-Employed users, automatically classifying trips as business or personal and calculating IRS-standard deductions."
tags:
- self-employed
- mileage-tracking
- tax-deductions
capability:
exposes:
- type: mcp
namespace: mileage-tracker
port: 8080
tools:
- name: get-mileage-summary
description: "Retrieve mileage tracking summary and tax deduction estimate."
inputParameters:
- name: user_id
in: body
type: string
description: "The QuickBooks Self-Employed user identifier."
- name: tax_year
in: body
type: integer
description: "The tax year for the mileage summary."
call: "qbse-api.get-mileage-summary"
with:
user: "{{user_id}}"
year: "{{tax_year}}"
outputParameters:
- name: total_business_miles
type: number
mapping: "$.mileage.totalBusinessMiles"
- name: estimated_deduction
type: number
mapping: "$.mileage.estimatedDeduction"
- name: trips_classified
type: integer
mapping: "$.mileage.tripsClassified"
consumes:
- type: http
namespace: qbse-api
baseUri: "https://api.intuit.com/quickbooks-self-employed/v1"
authentication:
type: bearer
token: "$secrets.intuit_qbse_api_token"
resources:
- name: mileage
path: "/users/{{user}}/mileage"
inputParameters:
- name: user
in: path
operations:
- name: get-mileage-summary
method: GET
Retrieves tax summary report from QuickBooks Online, returning sales tax collected, sales tax paid, and net tax liability by tax agency.
naftiko: "0.5"
info:
label: "QuickBooks Tax Summary Report"
description: "Retrieves tax summary report from QuickBooks Online, returning sales tax collected, sales tax paid, and net tax liability by tax agency."
tags:
- tax
- quickbooks
- compliance
capability:
exposes:
- type: mcp
namespace: qbo-tax-summary
port: 8080
tools:
- name: get-tax-summary
description: "Retrieve tax summary from QuickBooks Online."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date."
- name: end_date
in: body
type: string
description: "Report end date."
call: "qbo.get-tax-summary"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: tax_collected
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: tax_paid
type: string
mapping: "$.Rows.Row[1].Summary.ColData[1].value"
- name: net_liability
type: string
mapping: "$.Rows.Row[2].Summary.ColData[1].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/TaxSummary?start_date={{start_date}}&end_date={{end_date}}"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-tax-summary
method: GET
Retrieves time tracking report from QuickBooks Online, returning total hours, billable hours, and hours by employee for service-based businesses.
naftiko: "0.5"
info:
label: "QuickBooks Time Tracking Report"
description: "Retrieves time tracking report from QuickBooks Online, returning total hours, billable hours, and hours by employee for service-based businesses."
tags:
- time-tracking
- quickbooks
- payroll
capability:
exposes:
- type: mcp
namespace: qbo-time-tracking
port: 8080
tools:
- name: get-time-report
description: "Retrieve time tracking report from QuickBooks."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date."
- name: end_date
in: body
type: string
description: "Report end date."
call: "qbo.get-time-activities"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_hours
type: string
mapping: "$.Rows.Row[0].Summary.ColData[1].value"
- name: billable_hours
type: string
mapping: "$.Rows.Row[0].Summary.ColData[2].value"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/TimeActivityDetail?start_date={{start_date}}&end_date={{end_date}}"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-time-activities
method: GET
Syncs financial data from QuickBooks to TurboTax by extracting the profit and loss report, mapping to tax categories, importing into the tax return, and verifying data integrity.
naftiko: "0.5"
info:
label: "QuickBooks to TurboTax Data Sync Pipeline"
description: "Syncs financial data from QuickBooks to TurboTax by extracting the profit and loss report, mapping to tax categories, importing into the tax return, and verifying data integrity."
tags:
- tax
- quickbooks
- turbotax
- integration
capability:
exposes:
- type: mcp
namespace: qb-tt-sync
port: 8080
tools:
- name: sync-to-turbotax
description: "Sync QuickBooks financial data to TurboTax."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks realm ID."
- name: return_id
in: body
type: string
description: "The TurboTax return ID."
steps:
- name: extract-financials
type: call
call: "qbo.get-profit-loss"
with:
realm_id: "{{realm_id}}"
- name: map-categories
type: call
call: "tax-platform.map-to-schedule-c"
with:
income: "{{extract-financials.total_income}}"
expenses: "{{extract-financials.total_expenses}}"
- name: import-data
type: call
call: "tax-platform.import-financial-data"
with:
return_id: "{{return_id}}"
mapped_data: "{{map-categories.mapped_data_id}}"
- name: verify-integrity
type: call
call: "tax-platform.verify-import"
with:
return_id: "{{return_id}}"
import_id: "{{import-data.import_id}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss"
operations:
- name: get-profit-loss
method: GET
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: mapping
path: "/schedule-c/map"
operations:
- name: map-to-schedule-c
method: POST
- name: import
path: "/returns/{{return_id}}/import"
inputParameters:
- name: return_id
in: path
operations:
- name: import-financial-data
method: POST
- name: verify
path: "/returns/{{return_id}}/verify"
inputParameters:
- name: return_id
in: path
operations:
- name: verify-import
method: POST
Retrieves trial balance report from QuickBooks Online, returning total debits, total credits, and account-level balances for period-end close.
naftiko: "0.5"
info:
label: "QuickBooks Trial Balance Lookup"
description: "Retrieves trial balance report from QuickBooks Online, returning total debits, total credits, and account-level balances for period-end close."
tags:
- accounting
- quickbooks
capability:
exposes:
- type: mcp
namespace: qbo-trial-balance
port: 8080
tools:
- name: get-trial-balance
description: "Retrieve trial balance from QuickBooks Online."
inputParameters:
- name: as_of_date
in: body
type: string
description: "The trial balance date."
call: "qbo.get-trial-balance"
with:
as_of_date: "{{as_of_date}}"
outputParameters:
- name: total_debits
type: string
mapping: "$.Columns.Column[1].ColTitle"
- name: total_credits
type: string
mapping: "$.Columns.Column[2].ColTitle"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/TrialBalance?end_date={{as_of_date}}"
inputParameters:
- name: as_of_date
in: query
operations:
- name: get-trial-balance
method: GET
Retrieves vendor details from QuickBooks Online including display name, balance, and primary contact information.
naftiko: "0.5"
info:
label: "QuickBooks Vendor Lookup"
description: "Retrieves vendor details from QuickBooks Online including display name, balance, and primary contact information."
tags:
- accounting
- quickbooks
- vendor-management
capability:
exposes:
- type: mcp
namespace: qbo-vendors
port: 8080
tools:
- name: get-vendor
description: "Given a QuickBooks vendor ID, return the display name, open balance, and primary email."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The QuickBooks Online vendor ID."
call: "qbo.get-vendor"
with:
vendor_id: "{{vendor_id}}"
outputParameters:
- name: display_name
type: string
mapping: "$.Vendor.DisplayName"
- name: balance
type: string
mapping: "$.Vendor.Balance"
- name: email
type: string
mapping: "$.Vendor.PrimaryEmailAddr.Address"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: vendors
path: "/vendor/{{vendor_id}}"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
Pulls invoice and payment data from QuickBooks, cross-references with Salesforce closed-won opportunities, and generates a reconciliation summary uploaded to Google Drive.
naftiko: "0.5"
info:
label: "Revenue Recognition Reconciler"
description: "Pulls invoice and payment data from QuickBooks, cross-references with Salesforce closed-won opportunities, and generates a reconciliation summary uploaded to Google Drive."
tags:
- accounting
- quickbooks
- salesforce
- google-drive
- revenue-recognition
capability:
exposes:
- type: mcp
namespace: revenue-reconciliation
port: 8080
tools:
- name: reconcile-revenue
description: "Given a date range, pull QBO invoices and Salesforce won deals, reconcile, and upload the summary to Google Drive."
inputParameters:
- name: start_date
in: body
type: string
description: "Reconciliation period start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Reconciliation period end date in YYYY-MM-DD format."
- name: drive_folder_id
in: body
type: string
description: "The Google Drive folder ID for reconciliation reports."
steps:
- name: get-invoices
type: call
call: "qbo.query-invoices"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: get-won-deals
type: call
call: "sfdc.query-opportunities"
with:
close_date_start: "{{start_date}}"
close_date_end: "{{end_date}}"
stage: "Closed Won"
- name: upload-reconciliation
type: call
call: "gdrive.upload-file"
with:
folder_id: "{{drive_folder_id}}"
file_name: "Revenue_Recon_{{start_date}}_{{end_date}}.csv"
content: "QBO invoices: {{get-invoices.total_count}}, total: {{get-invoices.total_amount}}. SFDC won deals: {{get-won-deals.total_count}}, total: {{get-won-deals.total_amount}}."
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-invoices
method: GET
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
Retrieves a Salesforce account by ID including name, industry, annual revenue, and owner details for CRM integration.
naftiko: "0.5"
info:
label: "Salesforce Account Lookup"
description: "Retrieves a Salesforce account by ID including name, industry, annual revenue, and owner details for CRM integration."
tags:
- sales
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: sfdc-accounts
port: 8080
tools:
- name: get-account
description: "Given a Salesforce account ID, return the account name, industry, annual revenue, and owner name."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
call: "sfdc.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: industry
type: string
mapping: "$.Industry"
- name: annual_revenue
type: string
mapping: "$.AnnualRevenue"
consumes:
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Retrieves small business sales opportunity details from Salesforce, returning opportunity name, stage, expected revenue, and close date.
naftiko: "0.5"
info:
label: "Salesforce SMB Opportunity Lookup"
description: "Retrieves small business sales opportunity details from Salesforce, returning opportunity name, stage, expected revenue, and close date."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: smb-sales
port: 8080
tools:
- name: get-opportunity
description: "Look up an SMB sales opportunity in Salesforce."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID."
call: "sfdc.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: stage
type: string
mapping: "$.StageName"
- name: amount
type: string
mapping: "$.Amount"
- name: close_date
type: string
mapping: "$.CloseDate"
consumes:
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
Pulls financial data from QuickBooks, runs a credit risk assessment through the Intuit AI engine, and creates a Salesforce lead for the lending team if the business qualifies.
naftiko: "0.5"
info:
label: "Small Business Lending Pre-Qualification"
description: "Pulls financial data from QuickBooks, runs a credit risk assessment through the Intuit AI engine, and creates a Salesforce lead for the lending team if the business qualifies."
tags:
- small-business
- quickbooks
- ai-ml
- lending
- salesforce
capability:
exposes:
- type: mcp
namespace: lending-prequalification
port: 8080
tools:
- name: prequalify-business
description: "Given a QuickBooks realm ID, pull financials, run AI credit assessment, and create a Salesforce lead for qualified businesses."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks company realm ID."
- name: business_name
in: body
type: string
description: "The business name for the lending lead."
- name: contact_email
in: body
type: string
description: "The business owner contact email."
steps:
- name: get-financials
type: call
call: "qbo.get-profit-loss"
with:
start_date: "2025-01-01"
end_date: "2025-12-31"
- name: assess-credit
type: call
call: "intuit-ai.assess-credit"
with:
revenue: "{{get-financials.total_income}}"
expenses: "{{get-financials.total_expenses}}"
net_income: "{{get-financials.net_income}}"
- name: create-lending-lead
type: call
call: "sfdc.create-lead"
with:
company: "{{business_name}}"
email: "{{contact_email}}"
lead_source: "QuickBooks_Lending"
description: "Pre-qualified: credit score {{assess-credit.score}}/100. Annual revenue: {{get-financials.total_income}}. Net income: {{get-financials.net_income}}. Risk tier: {{assess-credit.risk_tier}}."
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: get-profit-loss
method: GET
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: credit
path: "/assess/credit"
operations:
- name: assess-credit
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: leads
path: "/sobjects/Lead"
operations:
- name: create-lead
method: POST
Processes a small business loan application by retrieving financial data from QuickBooks, running credit assessment, generating loan terms, and notifying the applicant via email.
naftiko: "0.5"
info:
label: "Small Business Loan Application Orchestrator"
description: "Processes a small business loan application by retrieving financial data from QuickBooks, running credit assessment, generating loan terms, and notifying the applicant via email."
tags:
- lending
- quickbooks
- salesforce
capability:
exposes:
- type: mcp
namespace: smb-lending
port: 8080
tools:
- name: process-loan-application
description: "Process a small business loan application."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks company realm ID."
- name: requested_amount
in: body
type: string
description: "Requested loan amount."
steps:
- name: get-financials
type: call
call: "qbo.get-profit-loss"
with:
realm_id: "{{realm_id}}"
- name: assess-credit
type: call
call: "lending-engine.assess"
with:
revenue: "{{get-financials.total_income}}"
expenses: "{{get-financials.total_expenses}}"
requested_amount: "{{requested_amount}}"
- name: generate-terms
type: call
call: "lending-engine.generate-terms"
with:
risk_score: "{{assess-credit.risk_score}}"
amount: "{{requested_amount}}"
- name: create-case
type: call
call: "sfdc.create-case"
with:
subject: "SMB Loan Application - Realm {{realm_id}}"
description: "Requested: {{requested_amount}}. Risk score: {{assess-credit.risk_score}}. Offered rate: {{generate-terms.interest_rate}}."
type: "Lending_Application"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/ProfitAndLoss"
operations:
- name: get-profit-loss
method: GET
- type: http
namespace: lending-engine
baseUri: "https://lending.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.lending_engine_token"
resources:
- name: assessment
path: "/assess"
operations:
- name: assess
method: POST
- name: terms
path: "/terms"
operations:
- name: generate-terms
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
Assesses small business financial health by pulling key ratios from QuickBooks, checking credit score via the lending engine, generating a health report, and sending insights via Mailchimp.
naftiko: "0.5"
info:
label: "SMB Financial Health Assessment Pipeline"
description: "Assesses small business financial health by pulling key ratios from QuickBooks, checking credit score via the lending engine, generating a health report, and sending insights via Mailchimp."
tags:
- financial-wellness
- quickbooks
- mailchimp
capability:
exposes:
- type: mcp
namespace: financial-health
port: 8080
tools:
- name: assess-health
description: "Assess small business financial health."
inputParameters:
- name: realm_id
in: body
type: string
description: "The QuickBooks realm ID."
- name: customer_email
in: body
type: string
description: "Business owner email."
steps:
- name: get-financials
type: call
call: "qbo.get-key-ratios"
with:
realm_id: "{{realm_id}}"
- name: check-credit
type: call
call: "lending-engine.get-business-score"
with:
realm_id: "{{realm_id}}"
- name: generate-report
type: call
call: "health-engine.create-assessment"
with:
current_ratio: "{{get-financials.current_ratio}}"
debt_ratio: "{{get-financials.debt_ratio}}"
credit_score: "{{check-credit.score}}"
- name: send-insights
type: call
call: "mailchimp.send-transactional"
with:
to: "{{customer_email}}"
template: "financial_health_report"
variables: "{{generate-report.health_grade}},{{generate-report.recommendations}}"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: reports
path: "/reports/BalanceSheet"
operations:
- name: get-key-ratios
method: GET
- type: http
namespace: lending-engine
baseUri: "https://lending.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.lending_engine_token"
resources:
- name: scores
path: "/business-score"
operations:
- name: get-business-score
method: POST
- type: http
namespace: health-engine
baseUri: "https://financial-health.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.health_engine_token"
resources:
- name: assessments
path: "/assess"
operations:
- name: create-assessment
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mandrill_api_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Orchestrates tax document collection by checking required forms in the tax engine, requesting missing documents via email, tracking upload status, and creating audit trail in Salesforce.
naftiko: "0.5"
info:
label: "Tax Document Collection Orchestrator"
description: "Orchestrates tax document collection by checking required forms in the tax engine, requesting missing documents via email, tracking upload status, and creating audit trail in Salesforce."
tags:
- tax
- turbotax
- salesforce
- compliance
capability:
exposes:
- type: mcp
namespace: tax-documents
port: 8080
tools:
- name: collect-documents
description: "Orchestrate tax document collection for a return."
inputParameters:
- name: return_id
in: body
type: string
description: "The tax return ID."
- name: taxpayer_email
in: body
type: string
description: "Taxpayer email address."
steps:
- name: check-requirements
type: call
call: "tax-platform.check-documents"
with:
return_id: "{{return_id}}"
- name: request-missing
type: call
call: "email-service.send-document-request"
with:
to: "{{taxpayer_email}}"
missing_docs: "{{check-requirements.missing_documents}}"
return_id: "{{return_id}}"
- name: create-tracking
type: call
call: "sfdc.create-task"
with:
subject: "Document collection: Return {{return_id}}"
description: "Missing documents: {{check-requirements.missing_count}}. Request sent to {{taxpayer_email}}."
priority: "Medium"
consumes:
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: documents
path: "/returns/{{return_id}}/documents/check"
inputParameters:
- name: return_id
in: path
operations:
- name: check-documents
method: GET
- type: http
namespace: email-service
baseUri: "https://email.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.email_service_token"
resources:
- name: emails
path: "/send"
operations:
- name: send-document-request
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
Analyzes a tax return using the Intuit AI fraud scoring model, checks against known fraud patterns in Elasticsearch, and creates a Salesforce case for review if the risk score exceeds threshold.
naftiko: "0.5"
info:
label: "Tax Fraud Detection Pipeline"
description: "Analyzes a tax return using the Intuit AI fraud scoring model, checks against known fraud patterns in Elasticsearch, and creates a Salesforce case for review if the risk score exceeds threshold."
tags:
- tax
- turbotax
- ai-ml
- fraud-detection
- elasticsearch
- salesforce
capability:
exposes:
- type: mcp
namespace: fraud-detection
port: 8080
tools:
- name: screen-tax-return
description: "Given a tax return ID, run fraud scoring, check known patterns, and escalate to Salesforce if high risk."
inputParameters:
- name: return_id
in: body
type: string
description: "The Intuit tax return ID to screen."
steps:
- name: score-return
type: call
call: "intuit-ai.score-fraud"
with:
return_id: "{{return_id}}"
- name: check-patterns
type: call
call: "elasticsearch.search-fraud"
with:
return_id: "{{return_id}}"
risk_score: "{{score-return.risk_score}}"
- name: escalate-case
type: call
call: "sfdc.create-case"
with:
subject: "Fraud review: Return {{return_id}} — risk score {{score-return.risk_score}}"
description: "AI fraud score: {{score-return.risk_score}}/100. Matched patterns: {{check-patterns.matched_count}}. Top signal: {{score-return.top_risk_factor}}. Requires manual review."
type: "Fraud_Review"
priority: "High"
consumes:
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: fraud
path: "/fraud/score"
operations:
- name: score-fraud
method: POST
- type: http
namespace: elasticsearch
baseUri: "https://es.intuit.com"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: fraud-index
path: "/fraud-patterns/_search"
operations:
- name: search-fraud
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
Validates a tax return via the Intuit Tax engine, submits the e-file to the IRS gateway, and logs the submission in Salesforce as a case for tracking.
naftiko: "0.5"
info:
label: "Tax Return Submission Orchestrator"
description: "Validates a tax return via the Intuit Tax engine, submits the e-file to the IRS gateway, and logs the submission in Salesforce as a case for tracking."
tags:
- tax
- turbotax
- salesforce
- e-filing
- compliance
capability:
exposes:
- type: mcp
namespace: tax-efile
port: 8080
tools:
- name: submit-tax-return
description: "Given a tax return ID and taxpayer ID, validate the return, submit to the IRS e-file gateway, and create a Salesforce tracking case."
inputParameters:
- name: return_id
in: body
type: string
description: "The Intuit tax return ID."
- name: taxpayer_id
in: body
type: string
description: "The taxpayer profile ID."
steps:
- name: validate-return
type: call
call: "tax-platform.validate-return"
with:
return_id: "{{return_id}}"
- name: submit-efile
type: call
call: "tax-platform.submit-efile"
with:
return_id: "{{return_id}}"
taxpayer_id: "{{taxpayer_id}}"
- name: create-tracking-case
type: call
call: "sfdc.create-case"
with:
subject: "E-file submitted: Return {{return_id}} for taxpayer {{taxpayer_id}}"
description: "Validation status: {{validate-return.status}}. E-file confirmation: {{submit-efile.confirmation_number}}. Submitted: {{submit-efile.submitted_at}}."
type: "Tax_Filing"
priority: "Medium"
consumes:
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: validation
path: "/returns/{{return_id}}/validate"
inputParameters:
- name: return_id
in: path
operations:
- name: validate-return
method: POST
- name: efile
path: "/returns/{{return_id}}/efile"
inputParameters:
- name: return_id
in: path
operations:
- name: submit-efile
method: POST
- type: http
namespace: sfdc
baseUri: "https://intuit.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.sfdc_access_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
Pulls TurboTax filing volume metrics from Datadog, cross-references with AWS scaling group capacity, and posts a capacity summary to a Microsoft Teams channel for operations.
naftiko: "0.5"
info:
label: "Tax Season Capacity Planning"
description: "Pulls TurboTax filing volume metrics from Datadog, cross-references with AWS scaling group capacity, and posts a capacity summary to a Microsoft Teams channel for operations."
tags:
- tax
- turbotax
- datadog
- amazon-web-services
- microsoft-teams
- capacity-planning
capability:
exposes:
- type: mcp
namespace: tax-capacity
port: 8080
tools:
- name: check-tax-capacity
description: "Pull TurboTax filing throughput from Datadog, check AWS Auto Scaling group capacity, and post a summary to Microsoft Teams."
inputParameters:
- name: datadog_query
in: body
type: string
description: "The Datadog metrics query for filing throughput."
- name: asg_name
in: body
type: string
description: "The AWS Auto Scaling group name."
- name: teams_webhook
in: body
type: string
description: "The Microsoft Teams webhook URL for the ops channel."
steps:
- name: get-filing-metrics
type: call
call: "datadog.query-metrics"
with:
query: "{{datadog_query}}"
- name: get-asg-status
type: call
call: "aws.describe-asg"
with:
asg_name: "{{asg_name}}"
- name: notify-ops
type: call
call: "msteams.post-webhook"
with:
webhook_url: "{{teams_webhook}}"
text: "Tax Season Capacity: Filing rate={{get-filing-metrics.avg_value}}/min. ASG {{asg_name}}: {{get-asg-status.desired_capacity}}/{{get-asg-status.max_size}} instances. Utilization: {{get-asg-status.utilization_pct}}%."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: metrics
path: "/query"
inputParameters:
- name: query
in: query
operations:
- name: query-metrics
method: GET
- type: http
namespace: aws
baseUri: "https://autoscaling.us-west-2.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_session_token"
resources:
- name: auto-scaling-groups
path: "/"
inputParameters:
- name: Action
in: query
value: "DescribeAutoScalingGroups"
- name: AutoScalingGroupNames.member.1
in: query
operations:
- name: describe-asg
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: webhooks
path: "/teams/webhook"
operations:
- name: post-webhook
method: POST
Retrieves Terraform workspace status for Intuit infrastructure, returning current state version, resource count, and last apply timestamp.
naftiko: "0.5"
info:
label: "Terraform Infrastructure Status"
description: "Retrieves Terraform workspace status for Intuit infrastructure, returning current state version, resource count, and last apply timestamp."
tags:
- infrastructure
- terraform
capability:
exposes:
- type: mcp
namespace: infra-status
port: 8080
tools:
- name: get-workspace-status
description: "Retrieve Terraform workspace status."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Terraform workspace name."
call: "terraform.get-workspace"
with:
workspace_name: "{{workspace_name}}"
outputParameters:
- name: state_version
type: string
mapping: "$.data.attributes.current-state-version-id"
- name: resource_count
type: number
mapping: "$.data.attributes.resource-count"
- name: last_apply
type: string
mapping: "$.data.attributes.latest-change-at"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/intuit/workspaces/{{workspace_name}}"
inputParameters:
- name: workspace_name
in: path
operations:
- name: get-workspace
method: GET
Checks the latest run status of a Terraform Cloud workspace including plan status, resource count, and last applied timestamp.
naftiko: "0.5"
info:
label: "Terraform Workspace Status"
description: "Checks the latest run status of a Terraform Cloud workspace including plan status, resource count, and last applied timestamp."
tags:
- platform
- infrastructure
- terraform
capability:
exposes:
- type: mcp
namespace: terraform-ops
port: 8080
tools:
- name: get-workspace-status
description: "Given a Terraform Cloud organization and workspace name, return the latest run status and resource count."
inputParameters:
- name: org_name
in: body
type: string
description: "The Terraform Cloud organization name."
- name: workspace_name
in: body
type: string
description: "The Terraform Cloud workspace name."
call: "terraform.get-workspace"
with:
org_name: "{{org_name}}"
workspace_name: "{{workspace_name}}"
outputParameters:
- name: workspace_id
type: string
mapping: "$.data.id"
- name: terraform_version
type: string
mapping: "$.data.attributes.terraform-version"
- name: resource_count
type: string
mapping: "$.data.attributes.resource-count"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/{{org_name}}/workspaces/{{workspace_name}}"
inputParameters:
- name: org_name
in: path
- name: workspace_name
in: path
operations:
- name: get-workspace
method: GET
Checks the processing status of a tax document uploaded to the Intuit Tax platform, returning extraction completeness and any validation errors.
naftiko: "0.5"
info:
label: "TurboTax Document Status"
description: "Checks the processing status of a tax document uploaded to the Intuit Tax platform, returning extraction completeness and any validation errors."
tags:
- tax
- turbotax
- document-processing
capability:
exposes:
- type: mcp
namespace: tax-documents
port: 8080
tools:
- name: get-document-status
description: "Given a tax document ID, return the OCR extraction status, validation state, and any flagged errors."
inputParameters:
- name: document_id
in: body
type: string
description: "The Intuit tax document upload ID."
call: "tax-platform.get-document"
with:
document_id: "{{document_id}}"
outputParameters:
- name: status
type: string
mapping: "$.document.processingStatus"
- name: form_type
type: string
mapping: "$.document.detectedFormType"
- name: validation_errors
type: string
mapping: "$.document.validationErrors"
consumes:
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: documents
path: "/documents/{{document_id}}"
inputParameters:
- name: document_id
in: path
operations:
- name: get-document
method: GET
Retrieves tax filing status from the TurboTax platform, returning filing state, IRS acceptance status, refund amount, and estimated refund date.
naftiko: "0.5"
info:
label: "TurboTax Filing Status Lookup"
description: "Retrieves tax filing status from the TurboTax platform, returning filing state, IRS acceptance status, refund amount, and estimated refund date."
tags:
- tax
- turbotax
capability:
exposes:
- type: mcp
namespace: tax-filing
port: 8080
tools:
- name: get-filing-status
description: "Look up a TurboTax filing status."
inputParameters:
- name: filing_id
in: body
type: string
description: "The tax filing ID."
call: "turbotax.get-status"
with:
filing_id: "{{filing_id}}"
outputParameters:
- name: filing_state
type: string
mapping: "$.filing.state"
- name: irs_status
type: string
mapping: "$.filing.irsAcceptanceStatus"
- name: refund_amount
type: string
mapping: "$.filing.estimatedRefund"
- name: refund_date
type: string
mapping: "$.filing.estimatedRefundDate"
consumes:
- type: http
namespace: turbotax
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: filings
path: "/filings/{{filing_id}}/status"
inputParameters:
- name: filing_id
in: path
operations:
- name: get-status
method: GET
Matches TurboTax Live customers with qualified tax experts based on tax situation complexity, language preferences, and expert availability for real-time consultations.
naftiko: "0.5"
info:
label: "TurboTax Live Expert Matching Orchestrator"
description: "Matches TurboTax Live customers with qualified tax experts based on tax situation complexity, language preferences, and expert availability for real-time consultations."
tags:
- turbotax
- expert-matching
- tax-consultation
capability:
exposes:
- type: mcp
namespace: expert-matching
port: 8080
tools:
- name: match-tax-expert
description: "Match a customer with an available TurboTax Live tax expert."
inputParameters:
- name: customer_id
in: body
type: string
description: "The TurboTax customer identifier."
- name: tax_situation
in: body
type: string
description: "Tax situation category such as self-employed, investments, or rental-income."
- name: language_preference
in: body
type: string
description: "Preferred language for the consultation."
call: "ttlive-api.match-expert"
with:
customer: "{{customer_id}}"
situation: "{{tax_situation}}"
language: "{{language_preference}}"
outputParameters:
- name: expert_id
type: string
mapping: "$.match.expertId"
- name: expert_name
type: string
mapping: "$.match.expertName"
- name: estimated_wait_time
type: integer
mapping: "$.match.estimatedWaitMinutes"
consumes:
- type: http
namespace: ttlive-api
baseUri: "https://api.intuit.com/turbotax-live/v1"
authentication:
type: bearer
token: "$secrets.intuit_ttlive_api_token"
resources:
- name: expert-matches
path: "/expert-matching"
operations:
- name: match-expert
method: POST
Takes taxpayer income and withholding data, runs the Intuit tax calculation engine, cross-references with historical refund data, and returns a refund estimate with confidence interval.
naftiko: "0.5"
info:
label: "TurboTax Refund Estimator"
description: "Takes taxpayer income and withholding data, runs the Intuit tax calculation engine, cross-references with historical refund data, and returns a refund estimate with confidence interval."
tags:
- tax
- turbotax
- ai-ml
- refund-estimation
capability:
exposes:
- type: mcp
namespace: refund-estimator
port: 8080
tools:
- name: estimate-refund
description: "Given income and withholding inputs, calculate estimated refund using the Intuit tax engine and AI confidence model."
inputParameters:
- name: taxpayer_id
in: body
type: string
description: "The taxpayer profile ID."
- name: gross_income
in: body
type: string
description: "The total gross income."
- name: federal_withholding
in: body
type: string
description: "The total federal tax withheld."
- name: filing_status
in: body
type: string
description: "The filing status (single, married_joint, etc.)."
steps:
- name: calculate-tax
type: call
call: "tax-platform.calculate"
with:
gross_income: "{{gross_income}}"
withholding: "{{federal_withholding}}"
filing_status: "{{filing_status}}"
- name: get-confidence
type: call
call: "intuit-ai.refund-confidence"
with:
taxpayer_id: "{{taxpayer_id}}"
estimated_refund: "{{calculate-tax.refund_amount}}"
filing_status: "{{filing_status}}"
consumes:
- type: http
namespace: tax-platform
baseUri: "https://tax.api.intuit.com/v2"
authentication:
type: bearer
token: "$secrets.tax_platform_token"
resources:
- name: calculate
path: "/calculate"
operations:
- name: calculate
method: POST
- type: http
namespace: intuit-ai
baseUri: "https://ai.api.intuit.com/v1"
authentication:
type: bearer
token: "$secrets.intuit_ai_token"
resources:
- name: refund-confidence
path: "/predict/refund-confidence"
operations:
- name: refund-confidence
method: POST
Fetches an unpaid vendor bill from QuickBooks, creates a bill payment, and sends a payment confirmation notification to the vendor via Mailchimp transactional email.
naftiko: "0.5"
info:
label: "Vendor Bill to Payment Orchestrator"
description: "Fetches an unpaid vendor bill from QuickBooks, creates a bill payment, and sends a payment confirmation notification to the vendor via Mailchimp transactional email."
tags:
- accounting
- quickbooks
- mailchimp
- accounts-payable
- payments
capability:
exposes:
- type: mcp
namespace: ap-payments
port: 8080
tools:
- name: pay-vendor-bill
description: "Given a QuickBooks bill ID, create a payment for the bill, fetch vendor details, and send a payment confirmation email."
inputParameters:
- name: bill_id
in: body
type: string
description: "The QuickBooks Online bill ID."
- name: payment_account_id
in: body
type: string
description: "The QuickBooks bank account ID for payment."
steps:
- name: get-bill
type: call
call: "qbo.get-bill"
with:
bill_id: "{{bill_id}}"
- name: create-payment
type: call
call: "qbo.create-bill-payment"
with:
vendor_id: "{{get-bill.VendorRef_value}}"
total_amount: "{{get-bill.Balance}}"
bill_id: "{{bill_id}}"
account_id: "{{payment_account_id}}"
- name: get-vendor
type: call
call: "qbo.get-vendor"
with:
vendor_id: "{{get-bill.VendorRef_value}}"
- name: send-confirmation
type: call
call: "mailchimp-tx.send-email"
with:
to_email: "{{get-vendor.PrimaryEmailAddr}}"
to_name: "{{get-vendor.DisplayName}}"
subject: "Payment confirmation: ${{get-bill.Balance}} for bill #{{bill_id}}"
template_name: "vendor-payment-confirmation"
consumes:
- type: http
namespace: qbo
baseUri: "https://quickbooks.api.intuit.com/v3/company/{{realm_id}}"
authentication:
type: bearer
token: "$secrets.qbo_access_token"
resources:
- name: bills
path: "/bill/{{bill_id}}"
inputParameters:
- name: bill_id
in: path
operations:
- name: get-bill
method: GET
- name: bill-payments
path: "/billpayment"
operations:
- name: create-bill-payment
method: POST
- name: vendors
path: "/vendor/{{vendor_id}}"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: mailchimp-tx
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: bearer
token: "$secrets.mandrill_api_key"
resources:
- name: messages
path: "/messages/send-template"
operations:
- name: send-email
method: POST