Intuit Capabilities

Naftiko 0.5 capability definitions for Intuit - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

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