Moodys Capabilities

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

Sort
Expand

Checks the latest build status for an Azure DevOps pipeline used by the analytics and technology platform teams.

naftiko: "0.5"
info:
  label: "Azure DevOps Pipeline Status"
  description: "Checks the latest build status for an Azure DevOps pipeline used by the analytics and technology platform teams."
  tags:
    - devops
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: ci-cd
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Check the latest Azure DevOps build for a pipeline."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/moodys/MoodysAnalytics/_apis/build"
      authentication:
        type: basic
        username: "$secrets.azdo_user"
        password: "$secrets.azdo_pat"
      resources:
        - name: builds
          path: "/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: query
          operations:
            - name: get-builds
              method: GET

Triggers a ratings calculation pipeline in Azure DevOps and returns the run ID and status.

naftiko: "0.5"
info:
  label: "Azure DevOps Ratings Pipeline Trigger"
  description: "Triggers a ratings calculation pipeline in Azure DevOps and returns the run ID and status."
  tags:
    - ci-cd
    - ratings
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: ratings-pipeline
      port: 8080
      tools:
        - name: trigger-ratings-pipeline
          description: "Trigger the ratings calculation pipeline for a given entity set."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The Azure DevOps pipeline ID."
            - name: entity_set
              in: body
              type: string
              description: "The entity set to process."
          call: "azuredevops.run-pipeline"
          with:
            pipeline_id: "{{pipeline_id}}"
            entity_set: "{{entity_set}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/moodys"
      authentication:
        type: bearer
        token: "$secrets.azuredevops_token"
      resources:
        - name: pipelines
          path: "/ratings/_apis/pipelines/{{pipeline_id}}/runs?api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: path
          operations:
            - name: run-pipeline
              method: POST

Retrieves current market data for a financial instrument from Bloomberg Enterprise Data, including price, yield, and spread.

naftiko: "0.5"
info:
  label: "Bloomberg Market Data Fetch"
  description: "Retrieves current market data for a financial instrument from Bloomberg Enterprise Data, including price, yield, and spread."
  tags:
    - data
    - market-data
    - bloomberg-enterprise-data
capability:
  exposes:
    - type: mcp
      namespace: market-data
      port: 8080
      tools:
        - name: get-market-data
          description: "Fetch current market data for a security by ISIN or Bloomberg ticker."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The ISIN or Bloomberg ticker."
            - name: identifier_type
              in: body
              type: string
              description: "Type of identifier (ISIN, TICKER)."
          call: "bloomberg.get-pricing"
          with:
            identifier: "{{identifier}}"
            identifier_type: "{{identifier_type}}"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: pricing
          path: "/pricing?identifier={{identifier}}&identifierType={{identifier_type}}"
          inputParameters:
            - name: identifier
              in: query
            - name: identifier_type
              in: query
          operations:
            - name: get-pricing
              method: GET

Fetches current bond spread data for an issuer from Bloomberg Enterprise Data, returning option-adjusted spread, Z-spread, and benchmark yield.

naftiko: "0.5"
info:
  label: "Bond Spread Lookup"
  description: "Fetches current bond spread data for an issuer from Bloomberg Enterprise Data, returning option-adjusted spread, Z-spread, and benchmark yield."
  tags:
    - fixed-income
    - spreads
    - bloomberg-enterprise-data
capability:
  exposes:
    - type: mcp
      namespace: bond-spreads
      port: 8080
      tools:
        - name: get-bond-spread
          description: "Look up bond spread data by issuer identifier."
          inputParameters:
            - name: issuer_id
              in: body
              type: string
              description: "The issuer identifier."
          call: "bloomberg.get-spread"
          with:
            issuer_id: "{{issuer_id}}"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: spreads
          path: "/spreads?identifier={{issuer_id}}"
          inputParameters:
            - name: issuer_id
              in: query
          operations:
            - name: get-spread
              method: GET

Delivers client data feeds by extracting data from Snowflake, packaging it according to client specifications, uploading to the client's designated endpoint, and logging the delivery in Salesforce and ServiceNow.

naftiko: "0.5"
info:
  label: "Client Data Delivery Pipeline"
  description: "Delivers client data feeds by extracting data from Snowflake, packaging it according to client specifications, uploading to the client's designated endpoint, and logging the delivery in Salesforce and ServiceNow."
  tags:
    - data
    - data-delivery
    - snowflake
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: data-delivery
      port: 8080
      tools:
        - name: deliver-client-data
          description: "Given a client ID and data product, extract, package, and deliver the data feed."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "The Salesforce client account ID."
            - name: data_product
              in: body
              type: string
              description: "The data product name."
            - name: delivery_date
              in: body
              type: string
              description: "The delivery date in YYYY-MM-DD format."
          steps:
            - name: extract-data
              type: call
              call: "snowflake.execute-query"
              with:
                client_id: "{{client_id}}"
                data_product: "{{data_product}}"
                delivery_date: "{{delivery_date}}"
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-delivery-log"
              with:
                client_id: "{{client_id}}"
                data_product: "{{data_product}}"
                delivery_date: "{{delivery_date}}"
                record_count: "{{extract-data.rowCount}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Data delivery: {{data_product}} for {{client_id}}"
                category: "data_delivery"
                description: "Delivered {{extract-data.rowCount}} records of {{data_product}} to client {{client_id}} on {{delivery_date}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: delivery-logs
          path: "/sobjects/Data_Delivery__c"
          operations:
            - name: create-delivery-log
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.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

Onboards new analytics clients by creating accounts in Salesforce, provisioning data access in Snowflake, setting up a ServiceNow support profile, and sending welcome communications via Microsoft Teams and Outlook.

naftiko: "0.5"
info:
  label: "Client Onboarding Pipeline"
  description: "Onboards new analytics clients by creating accounts in Salesforce, provisioning data access in Snowflake, setting up a ServiceNow support profile, and sending welcome communications via Microsoft Teams and Outlook."
  tags:
    - data
    - client-onboarding
    - salesforce
    - snowflake
    - servicenow
    - microsoft-teams
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: client-onboarding
      port: 8080
      tools:
        - name: onboard-analytics-client
          description: "Given client details, set up accounts, provision access, and send welcome communications."
          inputParameters:
            - name: client_name
              in: body
              type: string
              description: "The client company name."
            - name: contact_email
              in: body
              type: string
              description: "The primary contact email."
            - name: data_products
              in: body
              type: string
              description: "Comma-separated list of subscribed data products."
          steps:
            - name: create-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{client_name}}"
                contact_email: "{{contact_email}}"
                products: "{{data_products}}"
            - name: provision-access
              type: call
              call: "snowflake.execute-query"
              with:
                client_id: "{{create-account.id}}"
                data_products: "{{data_products}}"
            - name: create-support-profile
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New client onboarding: {{client_name}}"
                category: "client_onboarding"
                description: "New client {{client_name}}. Products: {{data_products}}. Account: {{create-account.id}}."
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "client-success-team"
                channel_id: "onboarding"
                message: "New client onboarded: {{client_name}}. Products: {{data_products}}. Salesforce: {{create-account.id}}."
            - name: send-welcome
              type: call
              call: "outlook.send-mail"
              with:
                recipient: "{{contact_email}}"
                subject: "Welcome to Moody's Analytics"
                body: "Welcome {{client_name}}! Your data products ({{data_products}}) are now active. Support case: {{create-support-profile.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/onboarding@moodys.com/sendMail"
          operations:
            - name: send-mail
              method: POST

Assesses climate risk exposure for an entity by querying physical and transition risk scores from Snowflake, returning climate VaR, carbon intensity, and stranded asset probability.

naftiko: "0.5"
info:
  label: "Climate Risk Exposure Assessment"
  description: "Assesses climate risk exposure for an entity by querying physical and transition risk scores from Snowflake, returning climate VaR, carbon intensity, and stranded asset probability."
  tags:
    - esg
    - climate-risk
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: climate-risk
      port: 8080
      tools:
        - name: get-climate-risk
          description: "Retrieve climate risk exposure by entity ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "snowflake.get-climate-risk"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-climate-risk
              method: POST

Searches the Moody's methodology knowledge base in Confluence for rating methodology documents by keyword, returning titles, authors, and publication dates.

naftiko: "0.5"
info:
  label: "Confluence Methodology Document Search"
  description: "Searches the Moody's methodology knowledge base in Confluence for rating methodology documents by keyword, returning titles, authors, and publication dates."
  tags:
    - methodology
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: methodology-docs
      port: 8080
      tools:
        - name: search-methodologies
          description: "Search methodology documents by keyword."
          inputParameters:
            - name: keyword
              in: body
              type: string
              description: "The search keyword."
          call: "confluence.search-methodologies"
          with:
            keyword: "{{keyword}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: methodology-content
          path: "/content/search?cql=text~'{{keyword}}'+and+space=METHODOLOGY"
          inputParameters:
            - name: keyword
              in: query
          operations:
            - name: search-methodologies
              method: GET

Retrieves counterparty credit exposure data from Snowflake, returning gross and net exposure, collateral held, and exposure-at-default.

naftiko: "0.5"
info:
  label: "Counterparty Exposure Lookup"
  description: "Retrieves counterparty credit exposure data from Snowflake, returning gross and net exposure, collateral held, and exposure-at-default."
  tags:
    - credit-risk
    - counterparty
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: counterparty-exposure
      port: 8080
      tools:
        - name: get-counterparty-exposure
          description: "Look up counterparty exposure by counterparty ID."
          inputParameters:
            - name: counterparty_id
              in: body
              type: string
              description: "The counterparty identifier."
          call: "snowflake.get-exposure"
          with:
            counterparty_id: "{{counterparty_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-exposure
              method: POST

Monitors covenant compliance for leveraged loans by pulling covenant test results from Snowflake, checking breach status, logging findings in Salesforce, and alerting the credit surveillance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Covenant Compliance Monitoring Pipeline"
  description: "Monitors covenant compliance for leveraged loans by pulling covenant test results from Snowflake, checking breach status, logging findings in Salesforce, and alerting the credit surveillance team via Microsoft Teams."
  tags:
    - covenants
    - surveillance
    - snowflake
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: covenant-monitoring
      port: 8080
      tools:
        - name: check-covenant-compliance
          description: "Given a deal ID, check covenant compliance and escalate breaches."
          inputParameters:
            - name: deal_id
              in: body
              type: string
              description: "The deal identifier."
            - name: test_date
              in: body
              type: string
              description: "The covenant test date."
          steps:
            - name: pull-covenant-data
              type: call
              call: "snowflake.execute-query"
              with:
                deal_id: "{{deal_id}}"
                test_date: "{{test_date}}"
            - name: log-results
              type: call
              call: "salesforce.create-covenant-log"
              with:
                deal_id: "{{deal_id}}"
                test_date: "{{test_date}}"
                status: "{{pull-covenant-data.compliance_status}}"
            - name: alert-surveillance
              type: call
              call: "msteams.post-message"
              with:
                team_id: "surveillance-team"
                channel_id: "covenants"
                message: "Covenant test for deal {{deal_id}} on {{test_date}}: {{pull-covenant-data.compliance_status}}. {{pull-covenant-data.breach_count}} breaches detected."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: covenant-logs
          path: "/sobjects/Covenant_Log__c"
          operations:
            - name: create-covenant-log
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Generates a portfolio concentration report by querying Snowflake for sector and geography exposure, then storing the report in SharePoint and notifying the portfolio team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Credit Portfolio Concentration Report"
  description: "Generates a portfolio concentration report by querying Snowflake for sector and geography exposure, then storing the report in SharePoint and notifying the portfolio team via Microsoft Teams."
  tags:
    - portfolio
    - concentration
    - snowflake
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: portfolio-concentration
      port: 8080
      tools:
        - name: generate-concentration-report
          description: "Given a portfolio ID, generate sector and geography concentration analysis."
          inputParameters:
            - name: portfolio_id
              in: body
              type: string
              description: "The portfolio identifier."
            - name: as_of_date
              in: body
              type: string
              description: "The as-of date in YYYY-MM-DD format."
          steps:
            - name: pull-exposure-data
              type: call
              call: "snowflake.execute-query"
              with:
                portfolio_id: "{{portfolio_id}}"
                as_of_date: "{{as_of_date}}"
            - name: store-report
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "analytics_site"
                folder_path: "Concentration/{{portfolio_id}}/{{as_of_date}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "portfolio-team"
                channel_id: "reports"
                message: "Concentration report ready for portfolio {{portfolio_id}} as of {{as_of_date}}. Location: {{store-report.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves the current credit rating for an entity by identifier from the Moody's ratings database, returning rating, outlook, and last action date.

naftiko: "0.5"
info:
  label: "Credit Rating Lookup"
  description: "Retrieves the current credit rating for an entity by identifier from the Moody's ratings database, returning rating, outlook, and last action date."
  tags:
    - credit-ratings
    - ratings
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: credit-ratings
      port: 8080
      tools:
        - name: get-credit-rating
          description: "Look up a credit rating by entity identifier. Returns current rating, outlook, and last rating action."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The Moody's entity identifier."
          call: "salesforce.get-rating"
          with:
            entity_id: "{{entity_id}}"
          outputParameters:
            - name: rating
              type: string
              mapping: "$.records[0].Current_Rating__c"
            - name: outlook
              type: string
              mapping: "$.records[0].Rating_Outlook__c"
            - name: last_action_date
              type: string
              mapping: "$.records[0].Last_Action_Date__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: ratings
          path: "/query/?q=SELECT+Current_Rating__c,Rating_Outlook__c,Last_Action_Date__c+FROM+Credit_Rating__c+WHERE+Entity_ID__c='{{entity_id}}'"
          inputParameters:
            - name: entity_id
              in: query
          operations:
            - name: get-rating
              method: GET

Executes a credit risk model by pulling financial data from Snowflake, running the model in Databricks, storing results in Salesforce, and notifying the analytics team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Credit Risk Model Execution Pipeline"
  description: "Executes a credit risk model by pulling financial data from Snowflake, running the model in Databricks, storing results in Salesforce, and notifying the analytics team via Microsoft Teams."
  tags:
    - risk-analytics
    - credit-risk
    - snowflake
    - databricks
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: risk-modeling
      port: 8080
      tools:
        - name: run-credit-risk-model
          description: "Given a portfolio ID, execute the credit risk model pipeline."
          inputParameters:
            - name: portfolio_id
              in: body
              type: string
              description: "The portfolio identifier."
            - name: model_version
              in: body
              type: string
              description: "The model version to execute."
          steps:
            - name: pull-financial-data
              type: call
              call: "snowflake.execute-query"
              with:
                portfolio_id: "{{portfolio_id}}"
            - name: run-model
              type: call
              call: "databricks.invoke-model"
              with:
                endpoint_name: "credit-risk-model-{{model_version}}"
                portfolio_id: "{{portfolio_id}}"
            - name: store-results
              type: call
              call: "salesforce.update-risk-scores"
              with:
                portfolio_id: "{{portfolio_id}}"
                model_version: "{{model_version}}"
                results: "{{run-model.predictions}}"
            - name: notify-analytics
              type: call
              call: "msteams.post-message"
              with:
                team_id: "analytics-team"
                channel_id: "risk-models"
                message: "Credit risk model v{{model_version}} executed for portfolio {{portfolio_id}}. {{pull-financial-data.rowCount}} entities scored. Results stored in Salesforce."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://moodys.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: model-serving
          path: "/serving-endpoints/{{endpoint_name}}/invocations"
          inputParameters:
            - name: endpoint_name
              in: path
          operations:
            - name: invoke-model
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: risk-scores
          path: "/services/apexrest/risk/scores"
          operations:
            - name: update-risk-scores
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Monitors data quality by running validation checks in Snowflake, logging issues in ServiceNow, creating Jira tasks for data engineering fixes, and alerting the data team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Data Quality Monitoring Pipeline"
  description: "Monitors data quality by running validation checks in Snowflake, logging issues in ServiceNow, creating Jira tasks for data engineering fixes, and alerting the data team via Microsoft Teams."
  tags:
    - data
    - data-quality
    - snowflake
    - servicenow
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: run-data-quality-check
          description: "Given a dataset name, run quality validation checks and report issues."
          inputParameters:
            - name: dataset_name
              in: body
              type: string
              description: "The Snowflake dataset name."
            - name: check_type
              in: body
              type: string
              description: "Type of check (completeness, accuracy, timeliness)."
          steps:
            - name: run-validation
              type: call
              call: "snowflake.execute-query"
              with:
                dataset_name: "{{dataset_name}}"
                check_type: "{{check_type}}"
            - name: log-issues
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Data quality: {{check_type}} - {{dataset_name}}"
                category: "data_quality"
                description: "{{check_type}} check on {{dataset_name}}: {{run-validation.issue_count}} issues found."
            - name: create-fix-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "DATA"
                summary: "DQ fix: {{dataset_name}} - {{check_type}}"
                description: "{{run-validation.issue_count}} {{check_type}} issues in {{dataset_name}}. ServiceNow: {{log-issues.number}}."
                issue_type: "Bug"
            - name: alert-data-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "data-engineering-team"
                channel_id: "data-quality"
                message: "Data quality alert: {{run-validation.issue_count}} {{check_type}} issues in {{dataset_name}}. Jira: {{create-fix-task.key}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.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: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Submits a batch of entities to a Databricks credit scoring model endpoint and returns predicted default probabilities and risk tiers.

naftiko: "0.5"
info:
  label: "Databricks Credit Model Scoring"
  description: "Submits a batch of entities to a Databricks credit scoring model endpoint and returns predicted default probabilities and risk tiers."
  tags:
    - machine-learning
    - credit-scoring
    - databricks
capability:
  exposes:
    - type: mcp
      namespace: credit-model
      port: 8080
      tools:
        - name: score-entities
          description: "Submit entity batch to credit scoring model."
          inputParameters:
            - name: model_name
              in: body
              type: string
              description: "The model name."
            - name: entity_ids
              in: body
              type: string
              description: "Comma-separated entity IDs to score."
          call: "databricks.invoke-model"
          with:
            model_name: "{{model_name}}"
            entity_ids: "{{entity_ids}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://moodys.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving-endpoints
          path: "/serving-endpoints/{{model_name}}/invocations"
          inputParameters:
            - name: model_name
              in: path
          operations:
            - name: invoke-model
              method: POST

Checks the status of a deployed ML model endpoint in Databricks used for credit risk scoring and default prediction.

naftiko: "0.5"
info:
  label: "Databricks Model Endpoint Status"
  description: "Checks the status of a deployed ML model endpoint in Databricks used for credit risk scoring and default prediction."
  tags:
    - risk-analytics
    - databricks
    - machine-learning
capability:
  exposes:
    - type: mcp
      namespace: ml-models
      port: 8080
      tools:
        - name: get-model-status
          description: "Check the status of a Databricks model serving endpoint."
          inputParameters:
            - name: endpoint_name
              in: body
              type: string
              description: "The model serving endpoint name."
          call: "databricks.get-endpoint"
          with:
            endpoint_name: "{{endpoint_name}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://moodys.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/serving-endpoints/{{endpoint_name}}"
          inputParameters:
            - name: endpoint_name
              in: path
          operations:
            - name: get-endpoint
              method: GET

Checks the health of the Moody's analytics platform by querying Datadog for key infrastructure metrics including CPU, memory, and error rates.

naftiko: "0.5"
info:
  label: "Datadog Analytics Platform Health Check"
  description: "Checks the health of the Moody's analytics platform by querying Datadog for key infrastructure metrics including CPU, memory, and error rates."
  tags:
    - monitoring
    - infrastructure
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: platform-health
      port: 8080
      tools:
        - name: check-platform-health
          description: "Retrieve analytics platform health metrics from Datadog."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The service name to check."
          call: "datadog.get-metrics"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        header: "DD-API-KEY"
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query?query=avg:system.cpu.user{service:{{service_name}}}"
          inputParameters:
            - name: service_name
              in: query
          operations:
            - name: get-metrics
              method: GET

Queries the debt maturity profile for an issuer from Snowflake, returning outstanding amounts by maturity bucket and currency.

naftiko: "0.5"
info:
  label: "Debt Maturity Profile Query"
  description: "Queries the debt maturity profile for an issuer from Snowflake, returning outstanding amounts by maturity bucket and currency."
  tags:
    - fixed-income
    - maturity
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: debt-maturity
      port: 8080
      tools:
        - name: get-maturity-profile
          description: "Retrieve debt maturity profile by issuer ID."
          inputParameters:
            - name: issuer_id
              in: body
              type: string
              description: "The issuer identifier."
          call: "snowflake.get-maturity-profile"
          with:
            issuer_id: "{{issuer_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-maturity-profile
              method: POST

Retrieves historical default probability trends for an entity from Snowflake, returning monthly PD values over a specified lookback window.

naftiko: "0.5"
info:
  label: "Default Probability Trend Query"
  description: "Retrieves historical default probability trends for an entity from Snowflake, returning monthly PD values over a specified lookback window."
  tags:
    - credit-risk
    - default-probability
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: default-trends
      port: 8080
      tools:
        - name: get-default-trend
          description: "Retrieve default probability trend by entity ID and lookback months."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
            - name: months
              in: body
              type: string
              description: "Number of months to look back."
          call: "snowflake.get-pd-trend"
          with:
            entity_id: "{{entity_id}}"
            months: "{{months}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-pd-trend
              method: POST

Generates economic forecast dashboards by pulling macroeconomic data from Snowflake, refreshing Power BI visualizations, uploading commentary to Confluence, and notifying the economics team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Economic Forecast Dashboard Pipeline"
  description: "Generates economic forecast dashboards by pulling macroeconomic data from Snowflake, refreshing Power BI visualizations, uploading commentary to Confluence, and notifying the economics team via Microsoft Teams."
  tags:
    - research
    - economics
    - snowflake
    - power-bi
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: economic-forecasts
      port: 8080
      tools:
        - name: generate-economic-forecast
          description: "Given a region and forecast type, generate the economic forecast dashboard."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The geographic region."
            - name: forecast_type
              in: body
              type: string
              description: "Forecast type (gdp, inflation, unemployment, rates)."
          steps:
            - name: pull-macro-data
              type: call
              call: "snowflake.execute-query"
              with:
                region: "{{region}}"
                forecast_type: "{{forecast_type}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "economic-forecast-dataset"
            - name: publish-commentary
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ECON"
                title: "Economic Forecast: {{region}} - {{forecast_type}}"
                body: "{{region}} {{forecast_type}} forecast updated with {{pull-macro-data.rowCount}} data points."
            - name: notify-economics
              type: call
              call: "msteams.post-message"
              with:
                team_id: "economics-team"
                channel_id: "forecasts"
                message: "Economic forecast for {{region}} ({{forecast_type}}) updated. Dashboard refreshed. Commentary: {{publish-commentary._links.webui}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.post-message"
              with:
                team_id: "hr-team"
                channel_id: "new-hires"
                message: "Welcome to Moody's, {{get-employee.first_name}}! Onboarding ticket: {{open-ticket.number}}. Documents: {{provision-folder.webUrl}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.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: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Computes ESG scores by pulling environmental, social, and governance data from Snowflake, running scoring models in Databricks, updating Salesforce records, and publishing results to Confluence.

naftiko: "0.5"
info:
  label: "ESG Score Computation Pipeline"
  description: "Computes ESG scores by pulling environmental, social, and governance data from Snowflake, running scoring models in Databricks, updating Salesforce records, and publishing results to Confluence."
  tags:
    - risk-analytics
    - esg
    - snowflake
    - databricks
    - salesforce
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: esg-scoring
      port: 8080
      tools:
        - name: compute-esg-score
          description: "Given an entity ID, compute comprehensive ESG scores."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
            - name: assessment_year
              in: body
              type: string
              description: "The assessment year."
          steps:
            - name: pull-esg-data
              type: call
              call: "snowflake.execute-query"
              with:
                entity_id: "{{entity_id}}"
                year: "{{assessment_year}}"
            - name: run-scoring-model
              type: call
              call: "databricks.invoke-model"
              with:
                endpoint_name: "esg-scoring-model"
                entity_id: "{{entity_id}}"
            - name: store-scores
              type: call
              call: "salesforce.update-esg-score"
              with:
                entity_id: "{{entity_id}}"
                e_score: "{{run-scoring-model.environmental_score}}"
                s_score: "{{run-scoring-model.social_score}}"
                g_score: "{{run-scoring-model.governance_score}}"
            - name: publish-assessment
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ESG"
                title: "ESG Assessment: {{entity_id}} - {{assessment_year}}"
                body: "E: {{run-scoring-model.environmental_score}}, S: {{run-scoring-model.social_score}}, G: {{run-scoring-model.governance_score}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://moodys.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: model-serving
          path: "/serving-endpoints/{{endpoint_name}}/invocations"
          inputParameters:
            - name: endpoint_name
              in: path
          operations:
            - name: invoke-model
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: esg-scores
          path: "/sobjects/ESG_Score__c/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: update-esg-score
              method: PATCH
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 1"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-1
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-1"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 10"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-10
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-10"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-10
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://moodys.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 11"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-11
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-11"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 11 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-11
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 12"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-12
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-12"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "financial-services.workflow_12"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-12
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 13"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-13
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-13"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-13
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 14"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-14
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-14"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-14
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 15"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-15
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-15"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#financial-services"
                text: "Completed workflow 15: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-15
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 16"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-16
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-16"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "FINANC"
                title: "Report 16"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-16
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 17"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-17
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-17"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_17"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-17
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 18"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-18
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-18"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "FINA"
                summary: "Task from workflow 18"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-18
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 19"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-19
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-19"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "financial-services"
                message: "Workflow 19 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-19
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 2"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-2
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-2"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 20"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-20
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-20"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_20"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-20
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://moodys-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 21"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-21
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-21"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-21
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 22"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-22
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-22"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-22
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://moodys.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 23"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-23
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-23"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 23 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-23
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 24"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-24
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-24"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "financial-services.workflow_24"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-24
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 25"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-25
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-25"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-25
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 26"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-26
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-26"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-26
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 27"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-27
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-27"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#financial-services"
                text: "Completed workflow 27: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-27
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 28"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-28
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-28"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "FINANC"
                title: "Report 28"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-28
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 29"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-29
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-29"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_29"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-29
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 3"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-3
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-3"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#financial-services"
                text: "Completed workflow 3: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-3
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 30"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-30
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-30"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "FINA"
                summary: "Task from workflow 30"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-30
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 31"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-31
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-31"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "financial-services"
                message: "Workflow 31 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-31
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 32"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-32
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-32"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_32"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-32
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://moodys-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 33"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-33
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-33"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-33
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 34"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-34
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-34"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-34
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://moodys.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 35"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-35
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-35"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 35 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-35
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 4"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-4
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-4"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "FINANC"
                title: "Report 4"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-4
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 5"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-5
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-5"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_5"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-5
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 6"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-6
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-6"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "FINA"
                summary: "Task from workflow 6"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-6
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 7"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-7
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-7"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "financial-services"
                message: "Workflow 7 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-7
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 8"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-8
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-8"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_8"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-8
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://moodys-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys.

naftiko: "0.5"
info:
  label: "Moodys Workflow 9"
  description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
  tags:
    - financial-services
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: financial-services
      port: 8080
      tools:
        - name: moodys-workflow-9
          description: "Orchestrates financial-services operations including data retrieval, processing, and automated notification for Moodys."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "moodys-ops.run-workflow-9"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: moodys-ops
      baseUri: "https://api.moodys.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-9
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 1"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-1
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-1"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-1
          path: "/data-1/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-1
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 10"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-10
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-10"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-10
          path: "/data-10/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-10
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 11"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-11
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-11"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-11
          path: "/data-11/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-11
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 12"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-12
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-12"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-12
          path: "/data-12/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-12
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 13"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-13
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-13"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-13
          path: "/data-13/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-13
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 14"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-14
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-14"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-14
          path: "/data-14/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-14
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 15"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-15
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-15"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-15
          path: "/data-15/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-15
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 2"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-2
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-2"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-2
          path: "/data-2/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-2
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 3"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-3
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-3"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-3
          path: "/data-3/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-3
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 4"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-4
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-4"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-4
          path: "/data-4/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-4
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 5"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-5
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-5"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-5
          path: "/data-5/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-5
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 6"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-6
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-6"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-6
          path: "/data-6/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-6
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 7"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-7
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-7"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-7
          path: "/data-7/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-7
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 8"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-8
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-8"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-8
          path: "/data-8/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-8
              method: GET

Retrieves operational data for Moodys financial-services workflows.

naftiko: "0.5"
info:
  label: "Moodys Data Lookup 9"
  description: "Retrieves operational data for Moodys financial-services workflows."
  tags:
    - financial-services
    - operations
capability:
  exposes:
    - type: mcp
      namespace: moodys-data
      port: 8080
      tools:
        - name: get-data-9
          description: "Retrieves operational data for Moodys financial-services workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "moodys-data.get-data-9"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: moodys-data
      baseUri: "https://api.moodys.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_token"
      resources:
        - name: data-9
          path: "/data-9/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-9
              method: GET

Conducts an industry default study by extracting default history from Snowflake, generating documentation in Confluence, creating a Jira task for peer review, and notifying the credit research team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Industry Default Study Pipeline"
  description: "Conducts an industry default study by extracting default history from Snowflake, generating documentation in Confluence, creating a Jira task for peer review, and notifying the credit research team via Microsoft Teams."
  tags:
    - default-study
    - research
    - snowflake
    - confluence
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: default-study
      port: 8080
      tools:
        - name: run-default-study
          description: "Given a sector and period, run a default study and route for review."
          inputParameters:
            - name: sector
              in: body
              type: string
              description: "The industry sector."
            - name: period
              in: body
              type: string
              description: "The study period (e.g., 2020-2025)."
          steps:
            - name: extract-defaults
              type: call
              call: "snowflake.execute-query"
              with:
                sector: "{{sector}}"
                period: "{{period}}"
            - name: publish-study
              type: call
              call: "confluence.create-page"
              with:
                space: "RESEARCH"
                title: "Default Study: {{sector}} ({{period}})"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project: "RESEARCH"
                summary: "Review default study: {{sector}} ({{period}})"
                issue_type: "Task"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "credit-research"
                channel_id: "studies"
                message: "Default study published: {{sector}} ({{period}}). {{extract-defaults.rowCount}} events. Review: {{create-review-task.key}}. Read: {{publish-study._links.webui}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves issuer financial statements from the Salesforce CRM, returning revenue, EBITDA, total debt, and net income for a specified fiscal year.

naftiko: "0.5"
info:
  label: "Issuer Financial Statement Retrieval"
  description: "Retrieves issuer financial statements from the Salesforce CRM, returning revenue, EBITDA, total debt, and net income for a specified fiscal year."
  tags:
    - financials
    - issuer
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: issuer-financials
      port: 8080
      tools:
        - name: get-issuer-financials
          description: "Retrieve financial statements by issuer ID and fiscal year."
          inputParameters:
            - name: issuer_id
              in: body
              type: string
              description: "The Salesforce issuer account ID."
            - name: fiscal_year
              in: body
              type: string
              description: "The fiscal year."
          call: "salesforce.get-financials"
          with:
            issuer_id: "{{issuer_id}}"
            fiscal_year: "{{fiscal_year}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: financials
          path: "/query/?q=SELECT+Revenue__c,EBITDA__c,Total_Debt__c,Net_Income__c+FROM+Financial_Statement__c+WHERE+Issuer_ID__c='{{issuer_id}}'+AND+Fiscal_Year__c='{{fiscal_year}}'"
          inputParameters:
            - name: issuer_id
              in: query
            - name: fiscal_year
              in: query
          operations:
            - name: get-financials
              method: GET

Monitors rated issuers for credit events by querying market data from Bloomberg, checking financial triggers in Snowflake, creating a surveillance case in ServiceNow, and alerting the ratings team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Issuer Surveillance Alert Pipeline"
  description: "Monitors rated issuers for credit events by querying market data from Bloomberg, checking financial triggers in Snowflake, creating a surveillance case in ServiceNow, and alerting the ratings team via Microsoft Teams."
  tags:
    - credit-ratings
    - surveillance
    - bloomberg-enterprise-data
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: issuer-surveillance
      port: 8080
      tools:
        - name: check-issuer-surveillance
          description: "Given an entity ID, check for credit event triggers and alert if needed."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The rated entity identifier."
            - name: trigger_type
              in: body
              type: string
              description: "Type of trigger to check (spread_widening, downgrade_trigger, covenant_breach)."
          steps:
            - name: get-market-signals
              type: call
              call: "bloomberg.get-pricing"
              with:
                identifier: "{{entity_id}}"
                identifier_type: "ENTITY"
            - name: check-financial-triggers
              type: call
              call: "snowflake.execute-query"
              with:
                entity_id: "{{entity_id}}"
                trigger_type: "{{trigger_type}}"
            - name: create-surveillance-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Surveillance alert: {{entity_id}} - {{trigger_type}}"
                category: "issuer_surveillance"
                description: "Trigger: {{trigger_type}}. Market signal: {{get-market-signals.spread}}. Financial check: {{check-financial-triggers.trigger_status}}."
            - name: alert-ratings-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "ratings-team"
                channel_id: "surveillance"
                message: "SURVEILLANCE ALERT: {{entity_id}} triggered {{trigger_type}}. Case: {{create-surveillance-case.number}}. Spread: {{get-market-signals.spread}}."
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: pricing
          path: "/pricing?identifier={{identifier}}&identifierType={{identifier_type}}"
          inputParameters:
            - name: identifier
              in: query
            - name: identifier_type
              in: query
          operations:
            - name: get-pricing
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.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: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira implementation task, and notifies the change advisory board via Microsoft Teams.

naftiko: "0.5"
info:
  label: "IT Change Request Pipeline"
  description: "Creates an IT change request in ServiceNow, links documentation from Confluence, creates a Jira implementation task, and notifies the change advisory board via Microsoft Teams."
  tags:
    - it-service
    - change-management
    - servicenow
    - confluence
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: submit-change-request
          description: "Given change details, create a ServiceNow change, link docs, and notify the CAB."
          inputParameters:
            - name: change_summary
              in: body
              type: string
              description: "Summary of the change."
            - name: change_type
              in: body
              type: string
              description: "Type of change."
            - name: doc_page_id
              in: body
              type: string
              description: "Confluence page ID."
          steps:
            - name: create-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "{{change_summary}}"
                type: "{{change_type}}"
            - name: get-doc
              type: call
              call: "confluence.get-page"
              with:
                page_id: "{{doc_page_id}}"
            - name: create-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ITOPS"
                summary: "Implement: {{change_summary}}"
                description: "Change: {{create-change.number}}. Docs: {{get-doc._links.webui}}."
                issue_type: "Task"
            - name: notify-cab
              type: call
              call: "msteams.post-message"
              with:
                team_id: "it-team"
                channel_id: "change-advisory"
                message: "Change request {{create-change.number}}: {{change_summary}}. Type: {{change_type}}. Jira: {{create-task.key}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves a Jira issue by key for project tracking across analytics and technology teams.

naftiko: "0.5"
info:
  label: "Jira Issue Lookup"
  description: "Retrieves a Jira issue by key for project tracking across analytics and technology teams."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: project-tracking
      port: 8080
      tools:
        - name: get-jira-issue
          description: "Look up a Jira issue by key."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

Manages rating methodology updates by creating the methodology document in Confluence, uploading supporting analysis to SharePoint, creating review tasks in Jira, and notifying the methodology committee via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Methodology Update Workflow"
  description: "Manages rating methodology updates by creating the methodology document in Confluence, uploading supporting analysis to SharePoint, creating review tasks in Jira, and notifying the methodology committee via Microsoft Teams."
  tags:
    - credit-ratings
    - methodology
    - confluence
    - sharepoint
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: methodology-updates
      port: 8080
      tools:
        - name: initiate-methodology-update
          description: "Given methodology details, create documents, route for review, and notify committee."
          inputParameters:
            - name: methodology_name
              in: body
              type: string
              description: "The methodology name."
            - name: sector
              in: body
              type: string
              description: "The sector the methodology applies to."
            - name: change_summary
              in: body
              type: string
              description: "Summary of proposed changes."
          steps:
            - name: create-methodology-doc
              type: call
              call: "confluence.create-page"
              with:
                space_key: "METHODOLOGY"
                title: "Update: {{methodology_name}}"
                body: "Sector: {{sector}}. Proposed changes: {{change_summary}}."
            - name: upload-analysis
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "methodology_site"
                folder_path: "Updates/{{methodology_name}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "METH"
                summary: "Methodology review: {{methodology_name}}"
                description: "{{change_summary}}. Doc: {{create-methodology-doc._links.webui}}. Analysis: {{upload-analysis.webUrl}}."
                issue_type: "Task"
            - name: notify-committee
              type: call
              call: "msteams.post-message"
              with:
                team_id: "methodology-committee"
                channel_id: "updates"
                message: "Methodology update proposed: {{methodology_name}} ({{sector}}). Review: {{create-review-task.key}}. Doc: {{create-methodology-doc._links.webui}}."
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Sends a formatted notification to a Microsoft Teams channel for cross-team communication across research, ratings, and analytics groups.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification to a Microsoft Teams channel for cross-team communication across research, ratings, and analytics groups."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: team-notifications
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Post a message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The message body."
          call: "msteams.post-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            message: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Runs portfolio stress tests by loading scenario parameters from Snowflake, executing models in Databricks, storing results in Salesforce, uploading reports to SharePoint, and notifying the risk team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Portfolio Stress Testing Pipeline"
  description: "Runs portfolio stress tests by loading scenario parameters from Snowflake, executing models in Databricks, storing results in Salesforce, uploading reports to SharePoint, and notifying the risk team via Microsoft Teams."
  tags:
    - risk-analytics
    - stress-testing
    - snowflake
    - databricks
    - salesforce
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: stress-testing
      port: 8080
      tools:
        - name: run-stress-test
          description: "Given a portfolio and stress scenario, execute the full stress testing pipeline."
          inputParameters:
            - name: portfolio_id
              in: body
              type: string
              description: "The portfolio identifier."
            - name: scenario_name
              in: body
              type: string
              description: "The stress scenario name (e.g., recession, rate_shock, geopolitical)."
          steps:
            - name: load-scenario
              type: call
              call: "snowflake.execute-query"
              with:
                scenario_name: "{{scenario_name}}"
                portfolio_id: "{{portfolio_id}}"
            - name: execute-stress-model
              type: call
              call: "databricks.invoke-model"
              with:
                endpoint_name: "stress-test-model"
                portfolio_id: "{{portfolio_id}}"
                scenario: "{{scenario_name}}"
            - name: store-results
              type: call
              call: "salesforce.create-stress-result"
              with:
                portfolio_id: "{{portfolio_id}}"
                scenario: "{{scenario_name}}"
                results: "{{execute-stress-model.predictions}}"
            - name: upload-report
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "risk_site"
                folder_path: "StressTests/{{portfolio_id}}/{{scenario_name}}"
            - name: notify-risk-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "risk-team"
                channel_id: "stress-tests"
                message: "Stress test complete: {{scenario_name}} on portfolio {{portfolio_id}}. Results: {{upload-report.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: databricks
      baseUri: "https://moodys.cloud.databricks.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: model-serving
          path: "/serving-endpoints/{{endpoint_name}}/invocations"
          inputParameters:
            - name: endpoint_name
              in: path
          operations:
            - name: invoke-model
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: stress-results
          path: "/sobjects/Stress_Test_Result__c"
          operations:
            - name: create-stress-result
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Triggers a refresh of the credit analytics Power BI dashboard and returns the refresh status.

naftiko: "0.5"
info:
  label: "Power BI Credit Dashboard Data Sync"
  description: "Triggers a refresh of the credit analytics Power BI dashboard and returns the refresh status."
  tags:
    - analytics
    - dashboard
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: credit-dashboard
      port: 8080
      tools:
        - name: refresh-credit-dashboard
          description: "Trigger a Power BI dashboard refresh by dataset ID."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Triggers a dataset refresh in Power BI for analytics dashboards used by credit research and risk teams.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a dataset refresh in Power BI for analytics dashboards used by credit research and risk teams."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: bi-refresh
      port: 8080
      tools:
        - name: refresh-dashboard
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates a credit rating action by updating the rating in Salesforce, publishing the research note to Confluence, distributing market data via Bloomberg, and notifying the ratings team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Rating Action Publication Workflow"
  description: "Orchestrates a credit rating action by updating the rating in Salesforce, publishing the research note to Confluence, distributing market data via Bloomberg, and notifying the ratings team via Microsoft Teams."
  tags:
    - credit-ratings
    - publication
    - salesforce
    - confluence
    - bloomberg-enterprise-data
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: rating-actions
      port: 8080
      tools:
        - name: publish-rating-action
          description: "Given an entity and new rating, update all systems and publish the action."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The rated entity identifier."
            - name: new_rating
              in: body
              type: string
              description: "The new credit rating."
            - name: outlook
              in: body
              type: string
              description: "The rating outlook (stable, positive, negative)."
            - name: rationale
              in: body
              type: string
              description: "Brief rationale for the rating action."
          steps:
            - name: update-rating
              type: call
              call: "salesforce.update-rating"
              with:
                entity_id: "{{entity_id}}"
                new_rating: "{{new_rating}}"
                outlook: "{{outlook}}"
            - name: publish-research-note
              type: call
              call: "confluence.create-page"
              with:
                space_key: "RATINGS"
                title: "Rating Action: {{entity_id}} - {{new_rating}}"
                body: "Rating changed to {{new_rating}} with {{outlook}} outlook. Rationale: {{rationale}}."
            - name: distribute-data
              type: call
              call: "bloomberg.publish-rating"
              with:
                entity_id: "{{entity_id}}"
                rating: "{{new_rating}}"
                outlook: "{{outlook}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "ratings-team"
                channel_id: "rating-actions"
                message: "Rating action published: {{entity_id}} -> {{new_rating}} ({{outlook}}). Research note: {{publish-research-note._links.webui}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: ratings
          path: "/sobjects/Credit_Rating__c/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: update-rating
              method: PATCH
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: rating-feed
          path: "/ratings/publish"
          operations:
            - name: publish-rating
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Queries the rating migration matrix from Snowflake for a specified time horizon, returning transition probabilities between rating categories.

naftiko: "0.5"
info:
  label: "Rating Migration Matrix Query"
  description: "Queries the rating migration matrix from Snowflake for a specified time horizon, returning transition probabilities between rating categories."
  tags:
    - ratings
    - migration
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: rating-migration
      port: 8080
      tools:
        - name: get-migration-matrix
          description: "Retrieve rating migration matrix for a given time horizon."
          inputParameters:
            - name: horizon_years
              in: body
              type: string
              description: "The time horizon in years."
            - name: asset_class
              in: body
              type: string
              description: "The asset class (corporate, sovereign, structured)."
          call: "snowflake.get-migration"
          with:
            horizon_years: "{{horizon_years}}"
            asset_class: "{{asset_class}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-migration
              method: POST

Analyzes recovery rates for a sector by extracting historical default and recovery data from Snowflake, generating a report in SharePoint, logging results in Salesforce, and alerting the research team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Recovery Rate Analysis Pipeline"
  description: "Analyzes recovery rates for a sector by extracting historical default and recovery data from Snowflake, generating a report in SharePoint, logging results in Salesforce, and alerting the research team via Microsoft Teams."
  tags:
    - recovery-rates
    - analytics
    - snowflake
    - sharepoint
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: recovery-analysis
      port: 8080
      tools:
        - name: analyze-recovery-rates
          description: "Given a sector and time period, analyze historical recovery rates."
          inputParameters:
            - name: sector
              in: body
              type: string
              description: "The industry sector."
            - name: start_year
              in: body
              type: string
              description: "The start year."
            - name: end_year
              in: body
              type: string
              description: "The end year."
          steps:
            - name: extract-recovery-data
              type: call
              call: "snowflake.execute-query"
              with:
                sector: "{{sector}}"
                start_year: "{{start_year}}"
                end_year: "{{end_year}}"
            - name: create-report-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "research_site"
                folder_path: "Recovery/{{sector}}/{{start_year}}-{{end_year}}"
            - name: log-analysis
              type: call
              call: "salesforce.create-analysis-record"
              with:
                sector: "{{sector}}"
                record_count: "{{extract-recovery-data.rowCount}}"
            - name: notify-research
              type: call
              call: "msteams.post-message"
              with:
                team_id: "research-team"
                channel_id: "recovery"
                message: "Recovery rate analysis complete for {{sector}} ({{start_year}}-{{end_year}}). {{extract-recovery-data.rowCount}} defaults analyzed. Report: {{create-report-folder.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: analysis-records
          path: "/sobjects/Analysis_Record__c"
          operations:
            - name: create-analysis-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Prepares regulatory compliance filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Filing Workflow"
  description: "Prepares regulatory compliance filings by extracting compliance data from Snowflake, generating filing documents in SharePoint, creating a review task in Jira, and notifying the compliance team via Microsoft Teams."
  tags:
    - compliance
    - regulatory
    - snowflake
    - sharepoint
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: regulatory-compliance
      port: 8080
      tools:
        - name: prepare-compliance-filing
          description: "Given a filing type and period, extract data, generate documents, and route for review."
          inputParameters:
            - name: filing_type
              in: body
              type: string
              description: "The regulatory filing type (e.g., SEC, ESMA, annual_report)."
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period."
          steps:
            - name: extract-compliance-data
              type: call
              call: "snowflake.execute-query"
              with:
                filing_type: "{{filing_type}}"
                period: "{{reporting_period}}"
            - name: generate-filing-docs
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "compliance_site"
                folder_path: "Filings/{{filing_type}}/{{reporting_period}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "COMP"
                summary: "Compliance filing: {{filing_type}} - {{reporting_period}}"
                description: "Data extracted: {{extract-compliance-data.rowCount}} records. Docs: {{generate-filing-docs.webUrl}}."
                issue_type: "Task"
            - name: notify-compliance
              type: call
              call: "msteams.post-message"
              with:
                team_id: "compliance-team"
                channel_id: "filings"
                message: "Compliance filing {{filing_type}} for {{reporting_period}} ready for review. Jira: {{create-review-task.key}}. Docs: {{generate-filing-docs.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Publishes a research report by creating the document in Confluence, uploading supporting data to SharePoint, updating the Salesforce research catalog, and notifying subscribers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Research Report Publishing Pipeline"
  description: "Publishes a research report by creating the document in Confluence, uploading supporting data to SharePoint, updating the Salesforce research catalog, and notifying subscribers via Microsoft Teams."
  tags:
    - research
    - publication
    - confluence
    - sharepoint
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: research-publishing
      port: 8080
      tools:
        - name: publish-research-report
          description: "Given report details, publish across Confluence, SharePoint, and Salesforce, then notify subscribers."
          inputParameters:
            - name: report_title
              in: body
              type: string
              description: "The research report title."
            - name: sector
              in: body
              type: string
              description: "The sector covered."
            - name: analyst_id
              in: body
              type: string
              description: "The lead analyst's employee ID."
            - name: report_type
              in: body
              type: string
              description: "Type of report (sector_update, issuer_comment, methodology)."
          steps:
            - name: create-report-page
              type: call
              call: "confluence.create-page"
              with:
                space_key: "RESEARCH"
                title: "{{report_title}}"
                body: "Sector: {{sector}}. Type: {{report_type}}. Analyst: {{analyst_id}}."
            - name: upload-data
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "research_site"
                folder_path: "Reports/{{sector}}/{{report_title}}"
            - name: update-catalog
              type: call
              call: "salesforce.create-research-entry"
              with:
                title: "{{report_title}}"
                sector: "{{sector}}"
                analyst_id: "{{analyst_id}}"
                type: "{{report_type}}"
                url: "{{create-report-page._links.webui}}"
            - name: notify-subscribers
              type: call
              call: "msteams.post-message"
              with:
                team_id: "research-team"
                channel_id: "publications"
                message: "New research report: {{report_title}} ({{sector}} - {{report_type}}). Read: {{create-report-page._links.webui}}."
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: research-entries
          path: "/sobjects/Research_Report__c"
          operations:
            - name: create-research-entry
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Searches Moody's research reports by keyword, sector, or entity from the Confluence knowledge base, returning matching report titles and links.

naftiko: "0.5"
info:
  label: "Research Report Search"
  description: "Searches Moody's research reports by keyword, sector, or entity from the Confluence knowledge base, returning matching report titles and links."
  tags:
    - research
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: research-reports
      port: 8080
      tools:
        - name: search-research-reports
          description: "Search research reports by keyword. Returns report titles, authors, and URLs."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search keyword or phrase."
          call: "confluence.search-content"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content/search?cql=text~'{{query}}'+and+space=RESEARCH"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-content
              method: GET

Retrieves a company's risk assessment score from the analytics platform, including probability of default, loss given default, and credit score.

naftiko: "0.5"
info:
  label: "Risk Assessment Score Retrieval"
  description: "Retrieves a company's risk assessment score from the analytics platform, including probability of default, loss given default, and credit score."
  tags:
    - risk-analytics
    - credit-risk
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: risk-scores
      port: 8080
      tools:
        - name: get-risk-score
          description: "Look up a risk assessment score by company identifier. Returns PD, LGD, and composite score."
          inputParameters:
            - name: company_id
              in: body
              type: string
              description: "The company identifier."
          call: "snowflake.get-risk-score"
          with:
            company_id: "{{company_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-risk-score
              method: POST

Retrieves pending travel approval requests for credit analysts from SAP Concur, returning trip details, estimated cost, and approval status.

naftiko: "0.5"
info:
  label: "SAP Concur Analyst Travel Approval"
  description: "Retrieves pending travel approval requests for credit analysts from SAP Concur, returning trip details, estimated cost, and approval status."
  tags:
    - travel
    - expense
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: travel-approvals
      port: 8080
      tools:
        - name: get-travel-requests
          description: "Retrieve pending travel requests for an analyst."
          inputParameters:
            - name: analyst_id
              in: body
              type: string
              description: "The analyst employee ID."
          call: "concur.get-travel-requests"
          with:
            analyst_id: "{{analyst_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: travel-requests
          path: "/travelrequest/requests?owner={{analyst_id}}&status=PENDING"
          inputParameters:
            - name: analyst_id
              in: query
          operations:
            - name: get-travel-requests
              method: GET

Retrieves a travel expense report status from SAP Concur for analyst and research team travel.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Status"
  description: "Retrieves a travel expense report status from SAP Concur for analyst and research team travel."
  tags:
    - finance
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: travel-expense
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a SAP Concur expense report by report ID."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET

Generates sector outlook reports by querying industry data from Snowflake, pulling rating distribution from Salesforce, creating the report in Confluence, and distributing via SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Sector Outlook Report Pipeline"
  description: "Generates sector outlook reports by querying industry data from Snowflake, pulling rating distribution from Salesforce, creating the report in Confluence, and distributing via SharePoint and Microsoft Teams."
  tags:
    - research
    - sector-outlook
    - snowflake
    - salesforce
    - confluence
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sector-outlook
      port: 8080
      tools:
        - name: generate-sector-outlook
          description: "Given a sector and period, generate a comprehensive sector outlook report."
          inputParameters:
            - name: sector
              in: body
              type: string
              description: "The sector name."
            - name: outlook_period
              in: body
              type: string
              description: "The outlook period (e.g., 2026-H2)."
          steps:
            - name: pull-industry-data
              type: call
              call: "snowflake.execute-query"
              with:
                sector: "{{sector}}"
                period: "{{outlook_period}}"
            - name: get-rating-distribution
              type: call
              call: "salesforce.get-sector-ratings"
              with:
                sector: "{{sector}}"
            - name: create-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "RESEARCH"
                title: "Sector Outlook: {{sector}} - {{outlook_period}}"
                body: "Sector: {{sector}}. Entities: {{pull-industry-data.rowCount}}. Rating distribution: {{get-rating-distribution.distribution}}."
            - name: upload-data
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "research_site"
                folder_path: "SectorOutlooks/{{sector}}/{{outlook_period}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                team_id: "research-team"
                channel_id: "sector-outlook"
                message: "Sector outlook for {{sector}} ({{outlook_period}}) published. Report: {{create-report._links.webui}}. Data: {{upload-data.webUrl}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: sector-ratings
          path: "/query/?q=SELECT+Current_Rating__c,COUNT(Id)+FROM+Credit_Rating__c+WHERE+Sector__c='{{sector}}'+GROUP+BY+Current_Rating__c"
          inputParameters:
            - name: sector
              in: query
          operations:
            - name: get-sector-ratings
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://moodys.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves an IT incident from ServiceNow by incident number, returning priority, status, assigned group, and description.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves an IT incident from ServiceNow by incident number, returning priority, status, assigned group, and description."
  tags:
    - it-service
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-incidents
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://moodys.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves document metadata from SharePoint for research reports, methodology documents, and compliance records.

naftiko: "0.5"
info:
  label: "SharePoint Document Retrieval"
  description: "Retrieves document metadata from SharePoint for research reports, methodology documents, and compliance records."
  tags:
    - document-management
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: get-document-metadata
          description: "Retrieve SharePoint document metadata by site and file path."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID."
            - name: file_path
              in: body
              type: string
              description: "The file path."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            file_path: "{{file_path}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET

Executes a parameterized query against the Snowflake data warehouse for financial statement data, credit metrics, and economic indicators.

naftiko: "0.5"
info:
  label: "Snowflake Financial Data Query"
  description: "Executes a parameterized query against the Snowflake data warehouse for financial statement data, credit metrics, and economic indicators."
  tags:
    - data
    - snowflake
    - financial-data
capability:
  exposes:
    - type: mcp
      namespace: financial-data
      port: 8080
      tools:
        - name: query-financial-data
          description: "Query Snowflake for financial data by entity and metric type."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
            - name: metric_type
              in: body
              type: string
              description: "The metric type (e.g., financials, credit_metrics, economic)."
          call: "snowflake.execute-query"
          with:
            entity_id: "{{entity_id}}"
            metric_type: "{{metric_type}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves sovereign credit risk indicators from Snowflake by country code, returning sovereign rating, GDP trend, debt-to-GDP ratio, and political risk score.

naftiko: "0.5"
info:
  label: "Sovereign Credit Risk Analysis"
  description: "Retrieves sovereign credit risk indicators from Snowflake by country code, returning sovereign rating, GDP trend, debt-to-GDP ratio, and political risk score."
  tags:
    - credit-risk
    - sovereign
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: sovereign-risk
      port: 8080
      tools:
        - name: get-sovereign-risk
          description: "Look up sovereign credit risk indicators by country code."
          inputParameters:
            - name: country_code
              in: body
              type: string
              description: "The ISO country code."
          call: "snowflake.get-sovereign-risk"
          with:
            country_code: "{{country_code}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: get-sovereign-risk
              method: POST

Retrieves structured finance deal details from Salesforce by deal ID, returning tranche structure, collateral type, and deal status.

naftiko: "0.5"
info:
  label: "Structured Finance Deal Tracker"
  description: "Retrieves structured finance deal details from Salesforce by deal ID, returning tranche structure, collateral type, and deal status."
  tags:
    - structured-finance
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: structured-finance
      port: 8080
      tools:
        - name: get-sf-deal-details
          description: "Look up structured finance deal by deal ID."
          inputParameters:
            - name: deal_id
              in: body
              type: string
              description: "The deal identifier."
          call: "salesforce.get-sf-deal"
          with:
            deal_id: "{{deal_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: deals
          path: "/query/?q=SELECT+Deal_Name__c,Tranche_Structure__c,Collateral_Type__c,Status__c+FROM+SF_Deal__c+WHERE+Deal_ID__c='{{deal_id}}'"
          inputParameters:
            - name: deal_id
              in: query
          operations:
            - name: get-sf-deal
              method: GET

Reviews entities on the credit watchlist by pulling latest financials from Snowflake, fetching current rating from Salesforce, creating a Jira review task, and alerting the ratings committee via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Watchlist Entity Review Pipeline"
  description: "Reviews entities on the credit watchlist by pulling latest financials from Snowflake, fetching current rating from Salesforce, creating a Jira review task, and alerting the ratings committee via Microsoft Teams."
  tags:
    - watchlist
    - ratings
    - snowflake
    - salesforce
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: watchlist-review
      port: 8080
      tools:
        - name: review-watchlist-entity
          description: "Given an entity ID, pull financials, check rating, and route for committee review."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          steps:
            - name: pull-financials
              type: call
              call: "snowflake.execute-query"
              with:
                entity_id: "{{entity_id}}"
            - name: get-current-rating
              type: call
              call: "salesforce.get-rating"
              with:
                entity_id: "{{entity_id}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project: "RATINGS"
                summary: "Watchlist review: {{entity_id}} (current: {{get-current-rating.Current_Rating__c}})"
                issue_type: "Task"
            - name: alert-committee
              type: call
              call: "msteams.post-message"
              with:
                team_id: "ratings-committee"
                channel_id: "watchlist"
                message: "Watchlist review initiated for {{entity_id}}. Current rating: {{get-current-rating.Current_Rating__c}}. Jira: {{create-review-task.key}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://moodys.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://moodys.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: ratings
          path: "/query/?q=SELECT+Current_Rating__c,Rating_Outlook__c+FROM+Credit_Rating__c+WHERE+Entity_ID__c='{{entity_id}}'"
          inputParameters:
            - name: entity_id
              in: query
          operations:
            - name: get-rating
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://moodys.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves compensation benchmarking data from Workday for a specified job family and location, returning salary ranges and market comparisons.

naftiko: "0.5"
info:
  label: "Workday Compensation Benchmarking"
  description: "Retrieves compensation benchmarking data from Workday for a specified job family and location, returning salary ranges and market comparisons."
  tags:
    - hr
    - compensation
    - workday
capability:
  exposes:
    - type: mcp
      namespace: compensation-benchmark
      port: 8080
      tools:
        - name: get-comp-benchmark
          description: "Look up compensation benchmarks by job family and location."
          inputParameters:
            - name: job_family
              in: body
              type: string
              description: "The job family group."
            - name: location
              in: body
              type: string
              description: "The location code."
          call: "workday.get-compensation"
          with:
            job_family: "{{job_family}}"
            location: "{{location}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/moodys"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: compensation
          path: "/compensation?jobFamily={{job_family}}&location={{location}}"
          inputParameters:
            - name: job_family
              in: query
            - name: location
              in: query
          operations:
            - name: get-compensation
              method: GET

Fetches an employee profile from Workday by worker ID, including department, title, manager, and location.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Fetches an employee profile from Workday by worker ID, including department, title, manager, and location."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-employee
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Retrieve a Workday employee profile by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET