Thomson Reuters Capabilities

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

Sort
Expand

Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.

naftiko: "0.5"
info:
  label: "Annual Compliance Certification Orchestrator"
  description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
  tags:
    - compliance
    - hr
    - legal
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-annual-compliance-certification-orchestrator
          description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.

naftiko: "0.5"
info:
  label: "API Lifecycle Management Orchestrator"
  description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
  tags:
    - engineering
    - api
    - operations
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-api-lifecycle-management-orchestrator
          description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Searches for company regulatory filings.

naftiko: "0.5"
info:
  label: "Company Filing Search"
  description: "Searches for company regulatory filings."
  tags:
    - compliance
    - research
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: get-company
          description: "Searches for company regulatory filings."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The company filing search identifier."
          call: "compliance-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: compliance-api
      baseUri: "https://api.thomson-reuters.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: company
          path: "/company/filing/search/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-company
              method: GET

Retrieves financial fundamentals for a company from Refinitiv including revenue, earnings, market cap, and P/E ratio.

naftiko: "0.5"
info:
  label: "Company Financial Data Retrieval"
  description: "Retrieves financial fundamentals for a company from Refinitiv including revenue, earnings, market cap, and P/E ratio."
  tags:
    - data
    - refinitiv
    - financials
capability:
  exposes:
    - type: mcp
      namespace: financial-data
      port: 8080
      tools:
        - name: get-company-financials
          description: "Retrieve financial fundamentals for a company."
          inputParameters:
            - name: ric
              in: body
              type: string
              description: "Reuters Instrument Code."
          call: "refinitiv.get-fundamentals"
          with:
            ric: "{{ric}}"
          outputParameters:
            - name: revenue
              type: number
              mapping: "$.revenue"
            - name: net_income
              type: number
              mapping: "$.netIncome"
            - name: market_cap
              type: number
              mapping: "$.marketCap"
            - name: pe_ratio
              type: number
              mapping: "$.peRatio"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/fundamentals/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: fundamentals
          path: "/companies/{{ric}}/financials"
          inputParameters:
            - name: ric
              in: path
          operations:
            - name: get-fundamentals
              method: GET

Screens an entity against sanctions lists, PEP databases, and adverse media using World-Check, logs findings in ServiceNow, and notifies the compliance officer via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Compliance Screening Pipeline"
  description: "Screens an entity against sanctions lists, PEP databases, and adverse media using World-Check, logs findings in ServiceNow, and notifies the compliance officer via Microsoft Outlook."
  tags:
    - compliance
    - screening
    - world-check
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: compliance-screening
      port: 8080
      tools:
        - name: screen-entity
          description: "Screen an entity against sanctions, PEP, and adverse media databases."
          inputParameters:
            - name: entity_name
              in: body
              type: string
              description: "Entity name to screen."
            - name: entity_type
              in: body
              type: string
              description: "Type (individual, organization)."
            - name: country
              in: body
              type: string
              description: "Country ISO code."
            - name: compliance_officer_email
              in: body
              type: string
              description: "Compliance officer email."
          steps:
            - name: run-screening
              type: call
              call: "worldcheck.screen"
              with:
                name: "{{entity_name}}"
                type: "{{entity_type}}"
                country: "{{country}}"
            - name: log-results
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_compliance_screening"
                entity_name: "{{entity_name}}"
                match_count: "{{run-screening.match_count}}"
                risk_level: "{{run-screening.risk_level}}"
            - name: notify-officer
              type: call
              call: "outlook.send-email"
              with:
                to: "{{compliance_officer_email}}"
                subject: "Compliance Screening Result: {{entity_name}}"
                body: "Screening complete for {{entity_name}}. Matches: {{run-screening.match_count}}. Risk: {{run-screening.risk_level}}. ServiceNow: {{log-results.sys_id}}."
  consumes:
    - type: http
      namespace: worldcheck
      baseUri: "https://api.worldcheck.thomsonreuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.worldcheck_token"
      resources:
        - name: screening
          path: "/cases/screeningRequest"
          operations:
            - name: screen
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://thomsonreuters.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Queries employees due for compliance training from Workday, assigns training courses, creates ServiceNow tracking records, and sends reminder emails.

naftiko: "0.5"
info:
  label: "Compliance Training Assignment Pipeline"
  description: "Queries employees due for compliance training from Workday, assigns training courses, creates ServiceNow tracking records, and sends reminder emails."
  tags:
    - compliance
    - training
    - workday
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: compliance-training
      port: 8080
      tools:
        - name: assign-compliance-training
          description: "Assign compliance training to employees and track completion."
          inputParameters:
            - name: training_course
              in: body
              type: string
              description: "Training course name."
            - name: department
              in: body
              type: string
              description: "Department for training assignment."
          steps:
            - name: get-employees
              type: call
              call: "workday.get-department-workers"
              with:
                department: "{{department}}"
            - name: assign-training
              type: call
              call: "workday.assign-training"
              with:
                workers: "{{get-employees.workers}}"
                course: "{{training_course}}"
            - name: create-tracking
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_training_assignments"
                course: "{{training_course}}"
                department: "{{department}}"
                assigned_count: "{{assign-training.assigned_count}}"
            - name: send-reminders
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-employees.emails}}"
                subject: "Required: {{training_course}} - Compliance Training"
                body: "You have been assigned the compliance training course: {{training_course}}. Please complete it within 30 days."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: department-workers
          path: "/workers"
          inputParameters:
            - name: department
              in: query
          operations:
            - name: get-department-workers
              method: GET
        - name: training
          path: "/learning/assignments"
          operations:
            - name: assign-training
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://thomsonreuters.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves a Confluence wiki page.

naftiko: "0.5"
info:
  label: "Confluence Page Viewer"
  description: "Retrieves a Confluence wiki page."
  tags:
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-confluence
          description: "Retrieves a Confluence wiki page."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The confluence page viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.thomson-reuters.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Queries content engagement metrics from Snowflake, refreshes the Power BI editorial dashboard, and sends a daily digest to editors via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Content Analytics Pipeline"
  description: "Queries content engagement metrics from Snowflake, refreshes the Power BI editorial dashboard, and sends a daily digest to editors via Microsoft Teams."
  tags:
    - news
    - analytics
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: content-analytics
      port: 8080
      tools:
        - name: refresh-content-analytics
          description: "Query content metrics, refresh dashboard, and send editorial digest."
          inputParameters:
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
            - name: teams_webhook
              in: body
              type: string
              description: "Teams webhook URL."
          steps:
            - name: get-metrics
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT content_type, article_count, total_views, avg_engagement FROM EDITORIAL.CONTENT_METRICS WHERE date = CURRENT_DATE"
            - name: refresh-pbi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: send-digest
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "Daily content metrics refreshed. {{get-metrics.data}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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: msteams
      baseUri: "{{webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-message
              method: POST

Uploads a contract to the TR contract intelligence platform for AI analysis, extracts key clauses and obligations, logs findings in Salesforce, and notifies legal counsel.

naftiko: "0.5"
info:
  label: "Contract Analysis Pipeline"
  description: "Uploads a contract to the TR contract intelligence platform for AI analysis, extracts key clauses and obligations, logs findings in Salesforce, and notifies legal counsel."
  tags:
    - legal
    - contract-analysis
    - ai
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: contract-intel
      port: 8080
      tools:
        - name: analyze-contract
          description: "Upload contract for AI analysis, extract clauses, and notify counsel."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "Contract reference ID."
            - name: document_uri
              in: body
              type: string
              description: "URI of the contract document."
            - name: sf_opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
            - name: counsel_email
              in: body
              type: string
              description: "Legal counsel email."
          steps:
            - name: analyze
              type: call
              call: "contract-intel.analyze-document"
              with:
                document_uri: "{{document_uri}}"
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{sf_opportunity_id}}"
                Contract_Risk__c: "{{analyze.overall_risk}}"
                Key_Clauses__c: "{{analyze.key_clauses_summary}}"
            - name: notify-counsel
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{counsel_email}}"
                text: "Contract {{contract_id}} analyzed. Risk: {{analyze.overall_risk}}. Key obligations: {{analyze.obligations_count}}. Unusual clauses: {{analyze.unusual_clauses_count}}."
  consumes:
    - type: http
      namespace: contract-intel
      baseUri: "https://api.thomsonreuters.com/contract-intelligence/v1"
      authentication:
        type: bearer
        token: "$secrets.contract_intel_token"
      resources:
        - name: analysis
          path: "/analyze"
          operations:
            - name: analyze-document
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates corporate tax return preparation: collects data from ONESOURCE, runs multi-state apportionment, generates the return, gets partner review in Salesforce, and submits for e-file.

naftiko: "0.5"
info:
  label: "Corporate Tax Return Workflow"
  description: "Orchestrates corporate tax return preparation: collects data from ONESOURCE, runs multi-state apportionment, generates the return, gets partner review in Salesforce, and submits for e-file."
  tags:
    - tax
    - corporate
    - onesource
    - salesforce
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: corporate-tax
      port: 8080
      tools:
        - name: prepare-corporate-return
          description: "Orchestrate full corporate tax return from data collection through e-filing."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Corporate client ID."
            - name: tax_year
              in: body
              type: string
              description: "Tax year."
            - name: sf_opportunity_id
              in: body
              type: string
              description: "Salesforce engagement opportunity."
          steps:
            - name: collect-data
              type: call
              call: "onesource.get-client-data"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
            - name: run-apportionment
              type: call
              call: "onesource.calculate-apportionment"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
            - name: generate-return
              type: call
              call: "onesource.generate-return"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
                form_type: "1120"
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{sf_opportunity_id}}"
                StageName: "Return Prepared"
                Tax_Liability__c: "{{run-apportionment.total_liability}}"
            - name: submit-efile
              type: call
              call: "onesource.submit-efile"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
                form_type: "1120"
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: client-data
          path: "/clients/{{client_id}}/data"
          inputParameters:
            - name: client_id
              in: path
            - name: tax_year
              in: query
          operations:
            - name: get-client-data
              method: GET
        - name: apportionment
          path: "/apportionment/calculate"
          operations:
            - name: calculate-apportionment
              method: POST
        - name: returns
          path: "/returns/generate"
          operations:
            - name: generate-return
              method: POST
        - name: efile
          path: "/efile/submit"
          operations:
            - name: submit-efile
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH

Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.

naftiko: "0.5"
info:
  label: "Cross-Functional Project Kickoff Orchestrator"
  description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
  tags:
    - project-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: project-management
      port: 8080
      tools:
        - name: run-cross-functional-project-kickoff-orchestrator
          description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.

naftiko: "0.5"
info:
  label: "Customer Data Privacy Request Handler"
  description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
  tags:
    - compliance
    - privacy
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-customer-data-privacy-request-handler
          description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.

naftiko: "0.5"
info:
  label: "Customer Journey Mapping Orchestrator"
  description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
  tags:
    - customer-experience
    - analytics
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: customer-experience
      port: 8080
      tools:
        - name: run-customer-journey-mapping-orchestrator
          description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a new TR customer is created, provisions them in Salesforce, opens a ServiceNow onboarding ticket, provisions product access, and sends a welcome email.

naftiko: "0.5"
info:
  label: "Customer Onboarding Orchestrator"
  description: "When a new TR customer is created, provisions them in Salesforce, opens a ServiceNow onboarding ticket, provisions product access, and sends a welcome email."
  tags:
    - customer-service
    - onboarding
    - salesforce
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: customer-onboarding
      port: 8080
      tools:
        - name: onboard-customer
          description: "Orchestrate new customer onboarding across all systems."
          inputParameters:
            - name: customer_name
              in: body
              type: string
              description: "Customer organization name."
            - name: contact_email
              in: body
              type: string
              description: "Primary contact email."
            - name: products
              in: body
              type: array
              description: "List of product subscriptions."
          steps:
            - name: create-sf-account
              type: call
              call: "salesforce.create-account"
              with:
                Name: "{{customer_name}}"
                Type: "Customer"
            - name: provision-access
              type: call
              call: "entitlement.provision-products"
              with:
                customer_id: "{{create-sf-account.id}}"
                products: "{{products}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New customer onboarding: {{customer_name}}"
                category: "customer_onboarding"
                description: "Products: {{products}}. Salesforce ID: {{create-sf-account.id}}."
            - name: send-welcome
              type: call
              call: "outlook.send-email"
              with:
                to: "{{contact_email}}"
                subject: "Welcome to Thomson Reuters"
                body: "Welcome {{customer_name}}! Your product access has been provisioned. Onboarding reference: {{open-ticket.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.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: entitlement
      baseUri: "https://api.thomsonreuters.com/entitlement/v1"
      authentication:
        type: bearer
        token: "$secrets.entitlement_token"
      resources:
        - name: provisioning
          path: "/customers/{{customer_id}}/products"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: provision-products
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://thomsonreuters.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: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Checks upcoming subscription renewals in Salesforce, generates renewal quotes, sends renewal offers to customers, and creates Jira tasks for the sales team.

naftiko: "0.5"
info:
  label: "Customer Subscription Renewal Pipeline"
  description: "Checks upcoming subscription renewals in Salesforce, generates renewal quotes, sends renewal offers to customers, and creates Jira tasks for the sales team."
  tags:
    - customer-service
    - subscriptions
    - salesforce
    - microsoft-outlook
    - jira
capability:
  exposes:
    - type: mcp
      namespace: renewals
      port: 8080
      tools:
        - name: process-renewal
          description: "Generate renewal quote, send offer, and create sales follow-up task."
          inputParameters:
            - name: sf_opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID for renewal."
            - name: customer_email
              in: body
              type: string
              description: "Customer contact email."
            - name: renewal_amount
              in: body
              type: number
              description: "Renewal amount."
            - name: sales_rep_jira_id
              in: body
              type: string
              description: "Jira assignee for follow-up."
          steps:
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{sf_opportunity_id}}"
                StageName: "Renewal Sent"
                Amount: "{{renewal_amount}}"
            - name: send-offer
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Thomson Reuters - Subscription Renewal"
                body: "Your subscription is up for renewal. Renewal amount: ${{renewal_amount}}. Please contact your account manager to proceed."
            - name: create-followup
              type: call
              call: "jira.create-issue"
              with:
                project_key: "SALES"
                summary: "Follow up on renewal: {{sf_opportunity_id}}"
                description: "Renewal offer sent to {{customer_email}}. Amount: ${{renewal_amount}}."
                issue_type: "Task"
                assignee: "{{sales_rep_jira_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://thomsonreuters.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

Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.

naftiko: "0.5"
info:
  label: "Data Governance Review Orchestrator"
  description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
  tags:
    - data-governance
    - compliance
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-governance
      port: 8080
      tools:
        - name: run-data-governance-review-orchestrator
          description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries product usage metrics from Snowflake, identifies at-risk accounts with declining usage, updates Salesforce health scores, and alerts the customer success team in Slack.

naftiko: "0.5"
info:
  label: "Data Usage Analytics Pipeline"
  description: "Queries product usage metrics from Snowflake, identifies at-risk accounts with declining usage, updates Salesforce health scores, and alerts the customer success team in Slack."
  tags:
    - data
    - analytics
    - snowflake
    - salesforce
    - slack
    - customer-success
capability:
  exposes:
    - type: mcp
      namespace: usage-analytics
      port: 8080
      tools:
        - name: analyze-product-usage
          description: "Analyze product usage, update account health, and alert customer success."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "Product name to analyze."
            - name: decline_threshold
              in: body
              type: number
              description: "Usage decline percentage threshold."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for CS alerts."
          steps:
            - name: query-usage
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT account_id, account_name, current_usage, prior_usage, pct_change FROM ANALYTICS.PRODUCT_USAGE WHERE product = '{{product_name}}' AND pct_change <= -{{decline_threshold}}"
            - name: update-sf-health
              type: call
              call: "salesforce.update-accounts-batch"
              with:
                accounts: "{{query-usage.data}}"
                field: "Health_Score__c"
                value: "At Risk"
            - name: alert-cs
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Usage alert: {{query-usage.row_count}} accounts with >{{decline_threshold}}% usage decline for {{product_name}}. Health scores updated in Salesforce."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: composite
          path: "/composite/sobjects"
          operations:
            - name: update-accounts-batch
              method: PATCH
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.

naftiko: "0.5"
info:
  label: "Digital Transformation Progress Orchestrator"
  description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
  tags:
    - strategy
    - analytics
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: strategy
      port: 8080
      tools:
        - name: run-digital-transformation-progress-orchestrator
          description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.

naftiko: "0.5"
info:
  label: "Disaster Recovery Test Orchestrator"
  description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
  tags:
    - infrastructure
    - operations
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-disaster-recovery-test-orchestrator
          description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
  tags:
    - hr
    - identity
    - operations
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-offboarding-orchestrator
          description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a new TR employee is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "When a new TR employee is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a 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: "Orchestrate new employee onboarding across ServiceNow, SharePoint, and Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: department
              in: body
              type: string
              description: "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"
                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.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Thomson Reuters, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}."
  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://thomsonreuters.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: drive-items
          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: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves Environmental, Social, and Governance scores for a company from Refinitiv ESG data. Used by investors and compliance analysts.

naftiko: "0.5"
info:
  label: "ESG Data Retrieval"
  description: "Retrieves Environmental, Social, and Governance scores for a company from Refinitiv ESG data. Used by investors and compliance analysts."
  tags:
    - data
    - refinitiv
    - esg
    - sustainability
capability:
  exposes:
    - type: mcp
      namespace: esg-data
      port: 8080
      tools:
        - name: get-esg-scores
          description: "Retrieve ESG scores for a company."
          inputParameters:
            - name: ric
              in: body
              type: string
              description: "Reuters Instrument Code."
          call: "refinitiv.get-esg"
          with:
            ric: "{{ric}}"
          outputParameters:
            - name: esg_score
              type: number
              mapping: "$.esgScore"
            - name: environmental
              type: number
              mapping: "$.environmentalScore"
            - name: social
              type: number
              mapping: "$.socialScore"
            - name: governance
              type: number
              mapping: "$.governanceScore"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/environmental-social-governance/v2"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: esg
          path: "/views/scores"
          inputParameters:
            - name: ric
              in: query
          operations:
            - name: get-esg
              method: GET

Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.

naftiko: "0.5"
info:
  label: "Executive Dashboard Refresh Orchestrator"
  description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
  tags:
    - analytics
    - power-bi
    - business
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-executive-dashboard-refresh-orchestrator
          description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a file from Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive File Viewer"
  description: "Retrieves a file from Google Drive."
  tags:
    - collaboration
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-google
          description: "Retrieves a file from Google Drive."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The google drive file viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.thomson-reuters.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Retrieves legal matter details from HighQ including participants, status, and document count.

naftiko: "0.5"
info:
  label: "HighQ Matter Viewer"
  description: "Retrieves legal matter details from HighQ including participants, status, and document count."
  tags:
    - legal
    - highq
    - matter-management
capability:
  exposes:
    - type: mcp
      namespace: matter-viewer
      port: 8080
      tools:
        - name: get-matter
          description: "Retrieve legal matter details from HighQ."
          inputParameters:
            - name: matter_id
              in: body
              type: string
              description: "HighQ matter ID."
          call: "highq.get-matter"
          with:
            matter_id: "{{matter_id}}"
          outputParameters:
            - name: matter_name
              type: string
              mapping: "$.matterName"
            - name: status
              type: string
              mapping: "$.status"
            - name: document_count
              type: integer
              mapping: "$.documentCount"
  consumes:
    - type: http
      namespace: highq
      baseUri: "https://thomsonreuters.highq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.highq_token"
      resources:
        - name: matters
          path: "/matters/{{matter_id}}"
          inputParameters:
            - name: matter_id
              in: path
          operations:
            - name: get-matter
              method: GET

Retrieves historical price data for a financial instrument from Refinitiv over a specified date range. Used by quantitative analysts and researchers.

naftiko: "0.5"
info:
  label: "Historical Market Data Retrieval"
  description: "Retrieves historical price data for a financial instrument from Refinitiv over a specified date range. Used by quantitative analysts and researchers."
  tags:
    - data
    - refinitiv
    - market-data
    - historical
capability:
  exposes:
    - type: mcp
      namespace: historical-data
      port: 8080
      tools:
        - name: get-historical-prices
          description: "Retrieve historical price data for a financial instrument."
          inputParameters:
            - name: ric
              in: body
              type: string
              description: "Reuters Instrument Code."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD."
          call: "refinitiv.get-historical"
          with:
            ric: "{{ric}}"
            start: "{{start_date}}"
            end: "{{end_date}}"
          outputParameters:
            - name: prices
              type: array
              mapping: "$.data"
            - name: count
              type: integer
              mapping: "$.count"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/historical-pricing/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: historical
          path: "/views/interday-summaries/{{ric}}"
          inputParameters:
            - name: ric
              in: path
            - name: start
              in: query
            - name: end
              in: query
          operations:
            - name: get-historical
              method: GET

Calculates indirect tax (VAT/GST/sales tax) for a transaction using ONESOURCE Indirect Tax. Returns tax amount, rate, and jurisdiction breakdown.

naftiko: "0.5"
info:
  label: "Indirect Tax Determination"
  description: "Calculates indirect tax (VAT/GST/sales tax) for a transaction using ONESOURCE Indirect Tax. Returns tax amount, rate, and jurisdiction breakdown."
  tags:
    - tax
    - indirect-tax
    - onesource
capability:
  exposes:
    - type: mcp
      namespace: indirect-tax
      port: 8080
      tools:
        - name: calculate-indirect-tax
          description: "Calculate indirect tax for a transaction."
          inputParameters:
            - name: ship_from
              in: body
              type: string
              description: "Ship-from address or jurisdiction."
            - name: ship_to
              in: body
              type: string
              description: "Ship-to address or jurisdiction."
            - name: amount
              in: body
              type: number
              description: "Transaction amount."
            - name: product_code
              in: body
              type: string
              description: "Product/service tax code."
          call: "onesource.calculate-tax"
          with:
            ship_from: "{{ship_from}}"
            ship_to: "{{ship_to}}"
            amount: "{{amount}}"
            product_code: "{{product_code}}"
          outputParameters:
            - name: total_tax
              type: number
              mapping: "$.totalTax"
            - name: effective_rate
              type: number
              mapping: "$.effectiveRate"
            - name: jurisdictions
              type: array
              mapping: "$.jurisdictionBreakdown"
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: tax-calculation
          path: "/indirect-tax/calculate"
          operations:
            - name: calculate-tax
              method: POST

Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.

naftiko: "0.5"
info:
  label: "Infrastructure Capacity Planning Orchestrator"
  description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
  tags:
    - infrastructure
    - planning
    - finance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-infrastructure-capacity-planning-orchestrator
          description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.

naftiko: "0.5"
info:
  label: "IT Change Management Orchestrator"
  description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
  tags:
    - it
    - servicenow
    - operations
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-it-change-management-orchestrator
          description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed IT Change Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a Jira issue by key. Used by project and product teams.

naftiko: "0.5"
info:
  label: "Jira Issue Viewer"
  description: "Retrieves a Jira issue by key. Used by project and product teams."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: pm-lookup
      port: 8080
      tools:
        - name: get-jira-issue
          description: "Look up a Jira issue by key."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "Jira issue key."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: assignee
              type: string
              mapping: "$.fields.assignee.displayName"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://thomsonreuters.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

Retrieves a Jira ticket by issue key.

naftiko: "0.5"
info:
  label: "Jira Ticket Viewer"
  description: "Retrieves a Jira ticket by issue key."
  tags:
    - engineering
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-jira
          description: "Retrieves a Jira ticket by issue key."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The jira ticket viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.thomson-reuters.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              method: GET

Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.

naftiko: "0.5"
info:
  label: "Knowledge Base Refresh Orchestrator"
  description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
  tags:
    - knowledge-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: knowledge-management
      port: 8080
      tools:
        - name: run-knowledge-base-refresh-orchestrator
          description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries legal analytics data from Snowflake covering case outcomes, judge statistics, and litigation trends, and publishes the report to SharePoint for the legal research team.

naftiko: "0.5"
info:
  label: "Legal Analytics Report Generator"
  description: "Queries legal analytics data from Snowflake covering case outcomes, judge statistics, and litigation trends, and publishes the report to SharePoint for the legal research team."
  tags:
    - legal
    - analytics
    - snowflake
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: legal-analytics
      port: 8080
      tools:
        - name: generate-legal-analytics
          description: "Generate legal analytics report and publish to SharePoint."
          inputParameters:
            - name: jurisdiction
              in: body
              type: string
              description: "Jurisdiction for analysis."
            - name: case_type
              in: body
              type: string
              description: "Type of cases to analyze."
            - name: sharepoint_site
              in: body
              type: string
              description: "SharePoint site ID."
          steps:
            - name: query-analytics
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT judge, case_count, avg_duration_days, plaintiff_win_rate FROM LEGAL.CASE_ANALYTICS WHERE jurisdiction = '{{jurisdiction}}' AND case_type = '{{case_type}}'"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "{{sharepoint_site}}"
                folder_path: "LegalAnalytics/{{jurisdiction}}"
                file_name: "analytics_{{case_type}}.json"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

Searches for legal citations by case or statute.

naftiko: "0.5"
info:
  label: "Legal Citation Search"
  description: "Searches for legal citations by case or statute."
  tags:
    - legal
    - research
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-legal
          description: "Searches for legal citations by case or statute."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The legal citation search identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: legal
          path: "/legal/citation/search/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-legal
              method: GET

Uploads a legal document to HighQ, indexes it in the document management system, creates a Jira task for review, and notifies the legal team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Legal Document Management Pipeline"
  description: "Uploads a legal document to HighQ, indexes it in the document management system, creates a Jira task for review, and notifies the legal team via Microsoft Teams."
  tags:
    - legal
    - document-management
    - highq
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal-docs
      port: 8080
      tools:
        - name: manage-legal-document
          description: "Upload, index, and route a legal document for review."
          inputParameters:
            - name: document_title
              in: body
              type: string
              description: "Document title."
            - name: matter_id
              in: body
              type: string
              description: "Legal matter ID."
            - name: document_content
              in: body
              type: string
              description: "Document content or URI."
            - name: reviewer_email
              in: body
              type: string
              description: "Reviewer email."
          steps:
            - name: upload-doc
              type: call
              call: "highq.upload-document"
              with:
                matter_id: "{{matter_id}}"
                title: "{{document_title}}"
                content: "{{document_content}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "LEGAL"
                summary: "Review: {{document_title}}"
                description: "Document uploaded to matter {{matter_id}}. Document ID: {{upload-doc.document_id}}."
                issue_type: "Task"
            - name: notify-reviewer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{reviewer_email}}"
                text: "Legal document '{{document_title}}' uploaded to matter {{matter_id}}. Review task: {{create-review-task.key}}."
  consumes:
    - type: http
      namespace: highq
      baseUri: "https://thomsonreuters.highq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.highq_token"
      resources:
        - name: documents
          path: "/matters/{{matter_id}}/documents"
          inputParameters:
            - name: matter_id
              in: path
          operations:
            - name: upload-document
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://thomsonreuters.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: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Issues a legal hold notification to custodians: creates a hold in the legal hold system, sends notifications to custodians via email, and logs acknowledgments in ServiceNow.

naftiko: "0.5"
info:
  label: "Legal Hold Notification Pipeline"
  description: "Issues a legal hold notification to custodians: creates a hold in the legal hold system, sends notifications to custodians via email, and logs acknowledgments in ServiceNow."
  tags:
    - legal
    - litigation-hold
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: legal-hold
      port: 8080
      tools:
        - name: issue-legal-hold
          description: "Issue a legal hold and notify custodians."
          inputParameters:
            - name: matter_id
              in: body
              type: string
              description: "Legal matter ID."
            - name: hold_name
              in: body
              type: string
              description: "Legal hold name."
            - name: custodian_emails
              in: body
              type: array
              description: "List of custodian email addresses."
          steps:
            - name: create-hold
              type: call
              call: "legalhold.create"
              with:
                matter_id: "{{matter_id}}"
                name: "{{hold_name}}"
            - name: notify-custodians
              type: call
              call: "outlook.send-email"
              with:
                to: "{{custodian_emails}}"
                subject: "Legal Hold Notice - {{hold_name}}"
                body: "You are a custodian in legal matter {{matter_id}}. Preserve all documents related to {{hold_name}}. Do not delete any materials."
            - name: log-hold
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_legal_holds"
                matter_id: "{{matter_id}}"
                hold_name: "{{hold_name}}"
                status: "active"
  consumes:
    - type: http
      namespace: legalhold
      baseUri: "https://api.thomsonreuters.com/legal-hold/v1"
      authentication:
        type: bearer
        token: "$secrets.legalhold_token"
      resources:
        - name: holds
          path: "/holds"
          operations:
            - name: create
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://thomsonreuters.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Orchestrates legal info workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 1"
  description: "Orchestrates legal info workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-001
          description: "Orchestrates legal info workflow 1 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates legal info workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 2"
  description: "Orchestrates legal info workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-002
          description: "Orchestrates legal info workflow 2 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves legal info operational data for workflow 3.

naftiko: "0.5"
info:
  label: "Legal Info Data Query 3"
  description: "Retrieves legal info operational data for workflow 3."
  tags:
    - legal
    - operations
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-data-3
          description: "Query legal info data for workflow 3."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal-info/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-3
              method: GET

Orchestrates legal info workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 4"
  description: "Orchestrates legal info workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-004
          description: "Orchestrates legal info workflow 4 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates legal info workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 5"
  description: "Orchestrates legal info workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-005
          description: "Orchestrates legal info workflow 5 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves legal info operational data for workflow 6.

naftiko: "0.5"
info:
  label: "Legal Info Data Query 6"
  description: "Retrieves legal info operational data for workflow 6."
  tags:
    - legal
    - operations
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-data-6
          description: "Query legal info data for workflow 6."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal-info/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-6
              method: GET

Orchestrates legal info workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 7"
  description: "Orchestrates legal info workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-007
          description: "Orchestrates legal info workflow 7 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates legal info workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 8"
  description: "Orchestrates legal info workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-008
          description: "Orchestrates legal info workflow 8 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves legal info operational data for workflow 9.

naftiko: "0.5"
info:
  label: "Legal Info Data Query 9"
  description: "Retrieves legal info operational data for workflow 9."
  tags:
    - legal
    - operations
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-data-9
          description: "Query legal info data for workflow 9."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal-info/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-9
              method: GET

Orchestrates legal info workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 10"
  description: "Orchestrates legal info workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-010
          description: "Orchestrates legal info workflow 10 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates legal info workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 11"
  description: "Orchestrates legal info workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-011
          description: "Orchestrates legal info workflow 11 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves legal info operational data for workflow 12.

naftiko: "0.5"
info:
  label: "Legal Info Data Query 12"
  description: "Retrieves legal info operational data for workflow 12."
  tags:
    - legal
    - operations
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-data-12
          description: "Query legal info data for workflow 12."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal-info/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-12
              method: GET

Orchestrates legal info workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 13"
  description: "Orchestrates legal info workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-013
          description: "Orchestrates legal info workflow 13 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates legal info workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Legal Info Workflow 14"
  description: "Orchestrates legal info workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - legal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: run-legal-info-workflow-014
          description: "Orchestrates legal info workflow 14 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Legal Info Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves legal info operational data for workflow 15.

naftiko: "0.5"
info:
  label: "Legal Info Data Query 15"
  description: "Retrieves legal info operational data for workflow 15."
  tags:
    - legal
    - operations
capability:
  exposes:
    - type: mcp
      namespace: legal
      port: 8080
      tools:
        - name: get-data-15
          description: "Query legal info data for workflow 15."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "legal-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: legal-api
      baseUri: "https://api.thomson-reuters.com/legal-info/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-15
              method: GET

Extracts time entries from the legal practice management system, generates invoices, submits for client approval in Salesforce, and emails the invoice to the client.

naftiko: "0.5"
info:
  label: "Legal Matter Billing Pipeline"
  description: "Extracts time entries from the legal practice management system, generates invoices, submits for client approval in Salesforce, and emails the invoice to the client."
  tags:
    - legal
    - billing
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: legal-billing
      port: 8080
      tools:
        - name: generate-matter-invoice
          description: "Extract time entries, generate invoice, seek approval, and deliver to client."
          inputParameters:
            - name: matter_id
              in: body
              type: string
              description: "Legal matter ID."
            - name: billing_period
              in: body
              type: string
              description: "Billing period."
            - name: client_email
              in: body
              type: string
              description: "Client email for invoice delivery."
            - name: sf_opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
          steps:
            - name: get-time-entries
              type: call
              call: "practice-mgmt.get-time-entries"
              with:
                matter_id: "{{matter_id}}"
                period: "{{billing_period}}"
            - name: generate-invoice
              type: call
              call: "practice-mgmt.generate-invoice"
              with:
                matter_id: "{{matter_id}}"
                time_entries: "{{get-time-entries.entries}}"
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{sf_opportunity_id}}"
                Invoice_Amount__c: "{{generate-invoice.total_amount}}"
                Invoice_Status__c: "Sent"
            - name: send-invoice
              type: call
              call: "outlook.send-email"
              with:
                to: "{{client_email}}"
                subject: "Thomson Reuters - Invoice for Matter {{matter_id}}"
                body: "Please find your invoice for the period {{billing_period}}. Total: ${{generate-invoice.total_amount}}. Invoice #: {{generate-invoice.invoice_number}}."
  consumes:
    - type: http
      namespace: practice-mgmt
      baseUri: "https://api.thomsonreuters.com/practice-management/v1"
      authentication:
        type: bearer
        token: "$secrets.practice_mgmt_token"
      resources:
        - name: time-entries
          path: "/matters/{{matter_id}}/time-entries"
          inputParameters:
            - name: matter_id
              in: path
            - name: period
              in: query
          operations:
            - name: get-time-entries
              method: GET
        - name: invoices
          path: "/invoices"
          operations:
            - name: generate-invoice
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Searches Westlaw for case law by citation or keyword and returns case summary, holding, and full text link. Used by legal professionals for research.

naftiko: "0.5"
info:
  label: "Legal Research Document Retrieval"
  description: "Searches Westlaw for case law by citation or keyword and returns case summary, holding, and full text link. Used by legal professionals for research."
  tags:
    - legal
    - westlaw
    - research
capability:
  exposes:
    - type: mcp
      namespace: legal-research
      port: 8080
      tools:
        - name: search-case-law
          description: "Search Westlaw for case law by citation or keyword."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query or citation."
            - name: jurisdiction
              in: body
              type: string
              description: "Jurisdiction filter."
          call: "westlaw.search-cases"
          with:
            query: "{{query}}"
            jurisdiction: "{{jurisdiction}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.cases"
            - name: total_count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: westlaw
      baseUri: "https://api.westlaw.com/v1"
      authentication:
        type: bearer
        token: "$secrets.westlaw_token"
      resources:
        - name: cases
          path: "/search"
          inputParameters:
            - name: query
              in: query
            - name: jurisdiction
              in: query
          operations:
            - name: search-cases
              method: GET

Retrieves historical market data time series.

naftiko: "0.5"
info:
  label: "Market Data Time Series"
  description: "Retrieves historical market data time series."
  tags:
    - finance
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: get-market
          description: "Retrieves historical market data time series."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The market data time series identifier."
          call: "finance-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: finance-api
      baseUri: "https://api.thomson-reuters.com/finance/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: market
          path: "/market/data/time/series/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-market
              method: GET

Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Orchestrator"
  description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
  tags:
    - marketing
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: run-marketing-campaign-performance-orchestrator
          description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Sends an email via Microsoft Outlook. Used across workflows for notifications.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends an email via Microsoft Outlook. Used across workflows for notifications."
  tags:
    - notification
    - microsoft-outlook
    - email
capability:
  exposes:
    - type: mcp
      namespace: email-sender
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Outlook."
          inputParameters:
            - name: to
              in: body
              type: string
              description: "Recipient."
            - name: subject
              in: body
              type: string
              description: "Subject."
            - name: body
              in: body
              type: string
              description: "Body."
          call: "outlook.send-email"
          with:
            to: "{{to}}"
            subject: "{{subject}}"
            body: "{{body}}"
          outputParameters:
            - name: message_id
              type: string
              mapping: "$.id"
  consumes:
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Sends a message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Message Sender"
  description: "Sends a message to a Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-microsoft
          description: "Sends a message to a Microsoft Teams channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The microsoft teams message sender identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.thomson-reuters.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Monitors Reuters for breaking news on specified topics, evaluates relevance, and sends real-time alerts to a Slack channel for editorial teams.

naftiko: "0.5"
info:
  label: "News Alert Monitor"
  description: "Monitors Reuters for breaking news on specified topics, evaluates relevance, and sends real-time alerts to a Slack channel for editorial teams."
  tags:
    - news
    - reuters
    - monitoring
    - slack
capability:
  exposes:
    - type: mcp
      namespace: news-alerts
      port: 8080
      tools:
        - name: monitor-news-alerts
          description: "Check for breaking news on topics and alert via Slack."
          inputParameters:
            - name: topics
              in: body
              type: string
              description: "Comma-separated list of topics."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for alerts."
          steps:
            - name: get-breaking
              type: call
              call: "reuters.get-breaking-news"
              with:
                topics: "{{topics}}"
            - name: alert-team
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "BREAKING NEWS: {{get-breaking.headline}} - {{get-breaking.summary}}"
  consumes:
    - type: http
      namespace: reuters
      baseUri: "https://api.reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.reuters_token"
      resources:
        - name: breaking
          path: "/articles/breaking"
          inputParameters:
            - name: topics
              in: query
          operations:
            - name: get-breaking-news
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a tax client profile from ONESOURCE including entity structure, filing jurisdictions, and tax year status.

naftiko: "0.5"
info:
  label: "ONESOURCE Tax Client Viewer"
  description: "Retrieves a tax client profile from ONESOURCE including entity structure, filing jurisdictions, and tax year status."
  tags:
    - tax
    - onesource
    - client-management
capability:
  exposes:
    - type: mcp
      namespace: tax-client
      port: 8080
      tools:
        - name: get-tax-client
          description: "Retrieve tax client profile from ONESOURCE."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Tax client ID."
          call: "onesource.get-client"
          with:
            client_id: "{{client_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.clientName"
            - name: entity_type
              type: string
              mapping: "$.entityType"
            - name: jurisdictions
              type: array
              mapping: "$.filingJurisdictions"
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: clients
          path: "/clients/{{client_id}}"
          inputParameters:
            - name: client_id
              in: path
          operations:
            - name: get-client
              method: GET

Triggers a Power BI dataset refresh.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresher"
  description: "Triggers a Power BI dataset refresh."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-power
          description: "Triggers a Power BI dataset refresh."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The power bi dashboard refresher identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.thomson-reuters.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

Triggers a refresh on a Power BI dataset. Used to keep dashboards current.

naftiko: "0.5"
info:
  label: "Power BI Dataset Refresher"
  description: "Triggers a refresh on a Power BI dataset. Used to keep dashboards current."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-refresh
      port: 8080
      tools:
        - name: refresh-pbi-dataset
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.requestId"
  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

Searches Practical Law for legal templates, practice notes, and standard documents by topic.

naftiko: "0.5"
info:
  label: "Practical Law Document Search"
  description: "Searches Practical Law for legal templates, practice notes, and standard documents by topic."
  tags:
    - legal
    - practical-law
    - templates
capability:
  exposes:
    - type: mcp
      namespace: practical-law
      port: 8080
      tools:
        - name: search-practical-law
          description: "Search Practical Law for legal templates and practice notes."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query."
            - name: content_type
              in: body
              type: string
              description: "Content type (template, practice_note, standard_document)."
          call: "practicallaw.search"
          with:
            query: "{{query}}"
            type: "{{content_type}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.documents"
            - name: total
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: practicallaw
      baseUri: "https://api.practicallaw.thomsonreuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.practicallaw_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: query
              in: query
            - name: type
              in: query
          operations:
            - name: search
              method: GET

Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.

naftiko: "0.5"
info:
  label: "Procurement Spend Analysis Orchestrator"
  description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
  tags:
    - procurement
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-procurement-spend-analysis-orchestrator
          description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a customer's current product entitlements and subscription status from the entitlement system.

naftiko: "0.5"
info:
  label: "Product Entitlement Viewer"
  description: "Retrieves a customer's current product entitlements and subscription status from the entitlement system."
  tags:
    - customer-service
    - entitlements
    - subscriptions
capability:
  exposes:
    - type: mcp
      namespace: entitlements
      port: 8080
      tools:
        - name: get-entitlements
          description: "Retrieve customer product entitlements."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
          call: "entitlement.get-entitlements"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: products
              type: array
              mapping: "$.products"
            - name: active_count
              type: integer
              mapping: "$.activeCount"
  consumes:
    - type: http
      namespace: entitlement
      baseUri: "https://api.thomsonreuters.com/entitlement/v1"
      authentication:
        type: bearer
        token: "$secrets.entitlement_token"
      resources:
        - name: entitlements
          path: "/customers/{{customer_id}}/products"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-entitlements
              method: GET

Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.

naftiko: "0.5"
info:
  label: "Quarterly Business Review Orchestrator"
  description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
  tags:
    - analytics
    - business
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-quarterly-business-review-orchestrator
          description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves M&A deal data for a company from Refinitiv including deal value, parties, and status.

naftiko: "0.5"
info:
  label: "Refinitiv Deals Data Lookup"
  description: "Retrieves M&A deal data for a company from Refinitiv including deal value, parties, and status."
  tags:
    - data
    - refinitiv
    - deals
    - mergers-acquisitions
capability:
  exposes:
    - type: mcp
      namespace: deals-data
      port: 8080
      tools:
        - name: get-deals
          description: "Retrieve M&A deals for a company."
          inputParameters:
            - name: company_ric
              in: body
              type: string
              description: "Company RIC."
          call: "refinitiv.get-deals"
          with:
            ric: "{{company_ric}}"
          outputParameters:
            - name: deals
              type: array
              mapping: "$.deals"
            - name: total
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/deals/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: deals
          path: "/search"
          inputParameters:
            - name: ric
              in: query
          operations:
            - name: get-deals
              method: GET

Retrieves key economic indicators (GDP, CPI, unemployment) for a country from Refinitiv.

naftiko: "0.5"
info:
  label: "Refinitiv Economic Indicators"
  description: "Retrieves key economic indicators (GDP, CPI, unemployment) for a country from Refinitiv."
  tags:
    - data
    - refinitiv
    - economics
capability:
  exposes:
    - type: mcp
      namespace: economic-data
      port: 8080
      tools:
        - name: get-economic-indicators
          description: "Retrieve economic indicators for a country."
          inputParameters:
            - name: country
              in: body
              type: string
              description: "Country ISO code."
          call: "refinitiv.get-economics"
          with:
            country: "{{country}}"
          outputParameters:
            - name: gdp
              type: number
              mapping: "$.gdp"
            - name: cpi
              type: number
              mapping: "$.cpi"
            - name: unemployment
              type: number
              mapping: "$.unemploymentRate"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/economic-indicators/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: indicators
          path: "/countries/{{country}}"
          inputParameters:
            - name: country
              in: path
          operations:
            - name: get-economics
              method: GET

Retrieves the current foreign exchange rate between two currencies from Refinitiv.

naftiko: "0.5"
info:
  label: "Refinitiv FX Rate Lookup"
  description: "Retrieves the current foreign exchange rate between two currencies from Refinitiv."
  tags:
    - data
    - refinitiv
    - foreign-exchange
capability:
  exposes:
    - type: mcp
      namespace: fx-rates
      port: 8080
      tools:
        - name: get-fx-rate
          description: "Get current FX rate between two currencies."
          inputParameters:
            - name: from_currency
              in: body
              type: string
              description: "Source currency."
            - name: to_currency
              in: body
              type: string
              description: "Target currency."
          call: "refinitiv.get-fx"
          with:
            pair: "{{from_currency}}{{to_currency}}"
          outputParameters:
            - name: rate
              type: number
              mapping: "$.rate"
            - name: timestamp
              type: string
              mapping: "$.timestamp"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/pricing/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: fx
          path: "/quotes/{{pair}}="
          inputParameters:
            - name: pair
              in: path
          operations:
            - name: get-fx
              method: GET

Retrieves real-time market data for a financial instrument from Refinitiv Eikon including price, volume, and change. Used by financial professionals.

naftiko: "0.5"
info:
  label: "Refinitiv Market Data Lookup"
  description: "Retrieves real-time market data for a financial instrument from Refinitiv Eikon including price, volume, and change. Used by financial professionals."
  tags:
    - data
    - refinitiv
    - market-data
    - finance
capability:
  exposes:
    - type: mcp
      namespace: market-data
      port: 8080
      tools:
        - name: get-market-data
          description: "Retrieve real-time market data for a financial instrument."
          inputParameters:
            - name: ric
              in: body
              type: string
              description: "Reuters Instrument Code."
          call: "refinitiv.get-quote"
          with:
            ric: "{{ric}}"
          outputParameters:
            - name: last_price
              type: number
              mapping: "$.lastPrice"
            - name: change
              type: number
              mapping: "$.netChange"
            - name: volume
              type: integer
              mapping: "$.volume"
            - name: timestamp
              type: string
              mapping: "$.tradeTimestamp"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/pricing/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: quotes
          path: "/quotes/{{ric}}"
          inputParameters:
            - name: ric
              in: path
          operations:
            - name: get-quote
              method: GET

Retrieves institutional and insider ownership data for a company from Refinitiv.

naftiko: "0.5"
info:
  label: "Refinitiv Ownership Data Lookup"
  description: "Retrieves institutional and insider ownership data for a company from Refinitiv."
  tags:
    - data
    - refinitiv
    - ownership
capability:
  exposes:
    - type: mcp
      namespace: ownership-data
      port: 8080
      tools:
        - name: get-ownership
          description: "Retrieve ownership data for a company."
          inputParameters:
            - name: ric
              in: body
              type: string
              description: "Reuters Instrument Code."
          call: "refinitiv.get-ownership"
          with:
            ric: "{{ric}}"
          outputParameters:
            - name: institutional_pct
              type: number
              mapping: "$.institutionalOwnershipPct"
            - name: insider_pct
              type: number
              mapping: "$.insiderOwnershipPct"
            - name: top_holders
              type: array
              mapping: "$.topHolders"
  consumes:
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/ownership/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: ownership
          path: "/companies/{{ric}}"
          inputParameters:
            - name: ric
              in: path
          operations:
            - name: get-ownership
              method: GET

Monitors regulatory updates from the TR regulatory intelligence platform, identifies changes affecting client jurisdictions, logs to Snowflake, and alerts the compliance team via Slack.

naftiko: "0.5"
info:
  label: "Regulatory Change Tracker"
  description: "Monitors regulatory updates from the TR regulatory intelligence platform, identifies changes affecting client jurisdictions, logs to Snowflake, and alerts the compliance team via Slack."
  tags:
    - compliance
    - regulatory
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: reg-tracking
      port: 8080
      tools:
        - name: track-regulatory-changes
          description: "Monitor regulatory changes, log to Snowflake, and alert compliance team."
          inputParameters:
            - name: jurisdiction
              in: body
              type: string
              description: "Jurisdiction to monitor."
            - name: topic
              in: body
              type: string
              description: "Regulatory topic area."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for alerts."
          steps:
            - name: get-updates
              type: call
              call: "regulatory-intel.get-updates"
              with:
                jurisdiction: "{{jurisdiction}}"
                topic: "{{topic}}"
            - name: log-to-snowflake
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO COMPLIANCE.REG_CHANGES (jurisdiction, topic, title, effective_date) VALUES ('{{jurisdiction}}', '{{topic}}', '{{get-updates.title}}', '{{get-updates.effective_date}}')"
            - name: alert-compliance
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Regulatory update: {{get-updates.title}} in {{jurisdiction}}. Effective: {{get-updates.effective_date}}. Topic: {{topic}}."
  consumes:
    - type: http
      namespace: regulatory-intel
      baseUri: "https://api.thomsonreuters.com/regulatory-intelligence/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_intel_token"
      resources:
        - name: updates
          path: "/updates"
          inputParameters:
            - name: jurisdiction
              in: query
            - name: topic
              in: query
          operations:
            - name: get-updates
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks for new regulatory alerts in specified jurisdictions, logs them in Snowflake, creates Jira tracking issues, and notifies the compliance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regulatory Intelligence Alert Pipeline"
  description: "Checks for new regulatory alerts in specified jurisdictions, logs them in Snowflake, creates Jira tracking issues, and notifies the compliance team via Microsoft Teams."
  tags:
    - compliance
    - regulatory
    - snowflake
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: reg-alerts
      port: 8080
      tools:
        - name: process-regulatory-alerts
          description: "Check for regulatory alerts, log, create tracking issues, and notify."
          inputParameters:
            - name: jurisdictions
              in: body
              type: string
              description: "Comma-separated jurisdiction codes."
            - name: jira_project
              in: body
              type: string
              description: "Jira project key."
            - name: teams_webhook
              in: body
              type: string
              description: "Teams webhook."
          steps:
            - name: get-alerts
              type: call
              call: "regulatory-intel.get-updates"
              with:
                jurisdiction: "{{jurisdictions}}"
            - name: log-alerts
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO COMPLIANCE.REG_ALERTS (jurisdiction, title, date) SELECT * FROM TABLE(FLATTEN(input => PARSE_JSON('{{get-alerts.alerts}}')))"
            - name: create-issues
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project}}"
                summary: "Regulatory alert: {{get-alerts.title}}"
                issue_type: "Task"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "New regulatory alerts: {{get-alerts.count}} updates in {{jurisdictions}}."
  consumes:
    - type: http
      namespace: regulatory-intel
      baseUri: "https://api.thomsonreuters.com/regulatory-intelligence/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_intel_token"
      resources:
        - name: updates
          path: "/updates"
          inputParameters:
            - name: jurisdiction
              in: query
          operations:
            - name: get-updates
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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: jira
      baseUri: "https://thomsonreuters.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: "{{webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-message
              method: POST

Retrieves a full Reuters news article by article ID including headline, body, and metadata.

naftiko: "0.5"
info:
  label: "Reuters News Article Viewer"
  description: "Retrieves a full Reuters news article by article ID including headline, body, and metadata."
  tags:
    - news
    - reuters
capability:
  exposes:
    - type: mcp
      namespace: article-viewer
      port: 8080
      tools:
        - name: get-article
          description: "Retrieve a Reuters article by ID."
          inputParameters:
            - name: article_id
              in: body
              type: string
              description: "Reuters article ID."
          call: "reuters.get-article"
          with:
            article_id: "{{article_id}}"
          outputParameters:
            - name: headline
              type: string
              mapping: "$.headline"
            - name: body
              type: string
              mapping: "$.bodyText"
            - name: published_date
              type: string
              mapping: "$.publishedDate"
  consumes:
    - type: http
      namespace: reuters
      baseUri: "https://api.reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.reuters_token"
      resources:
        - name: articles
          path: "/articles/{{article_id}}"
          inputParameters:
            - name: article_id
              in: path
          operations:
            - name: get-article
              method: GET

Retrieves the latest news articles from Reuters by topic, region, or keyword. Used by journalists, analysts, and compliance teams.

naftiko: "0.5"
info:
  label: "Reuters News Feed Retrieval"
  description: "Retrieves the latest news articles from Reuters by topic, region, or keyword. Used by journalists, analysts, and compliance teams."
  tags:
    - news
    - reuters
    - media
capability:
  exposes:
    - type: mcp
      namespace: news-feed
      port: 8080
      tools:
        - name: get-news
          description: "Retrieve latest Reuters news articles by topic or keyword."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query or topic."
            - name: limit
              in: body
              type: integer
              description: "Maximum articles to return."
          call: "reuters.search-articles"
          with:
            query: "{{query}}"
            limit: "{{limit}}"
          outputParameters:
            - name: articles
              type: array
              mapping: "$.articles"
            - name: total
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: reuters
      baseUri: "https://api.reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.reuters_token"
      resources:
        - name: articles
          path: "/articles/search"
          inputParameters:
            - name: query
              in: query
            - name: limit
              in: query
          operations:
            - name: search-articles
              method: GET

Retrieves a Salesforce account record by ID. Used by sales and account management.

naftiko: "0.5"
info:
  label: "Salesforce Account Viewer"
  description: "Retrieves a Salesforce account record by ID. Used by sales and account management."
  tags:
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: crm-viewer
      port: 8080
      tools:
        - name: get-salesforce-account
          description: "Retrieve a Salesforce account by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Salesforce Account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: type
              type: string
              mapping: "$.Type"
            - name: industry
              type: string
              mapping: "$.Industry"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://thomsonreuters.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

Screens an entity against sanctions lists.

naftiko: "0.5"
info:
  label: "Sanctions Screening Check"
  description: "Screens an entity against sanctions lists."
  tags:
    - compliance
    - risk
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: get-sanctions
          description: "Screens an entity against sanctions lists."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The sanctions screening check identifier."
          call: "compliance-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: compliance-api
      baseUri: "https://api.thomson-reuters.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: sanctions
          path: "/sanctions/screening/check/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sanctions
              method: GET

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: "0.5"
info:
  label: "Security Audit Orchestrator"
  description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
  tags:
    - security
    - servicenow
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-security-audit-orchestrator
          description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Security Audit Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Creates a new incident in ServiceNow.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Creator"
  description: "Creates a new incident in ServiceNow."
  tags:
    - it
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: get-servicenow
          description: "Creates a new incident in ServiceNow."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The servicenow incident creator identifier."
          call: "it-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: it-api
      baseUri: "https://api.thomson-reuters.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Retrieves a ServiceNow incident by number. Used by IT and operations staff.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Viewer"
  description: "Retrieves a ServiceNow incident by number. Used by IT and operations staff."
  tags:
    - incident-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: incident-lookup
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "Incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: short_description
              type: string
              mapping: "$.result.short_description"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://thomsonreuters.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: sysparm_query
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves a document from SharePoint.

naftiko: "0.5"
info:
  label: "SharePoint Document Viewer"
  description: "Retrieves a document from SharePoint."
  tags:
    - collaboration
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-sharepoint
          description: "Retrieves a document from SharePoint."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The sharepoint document viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.thomson-reuters.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: sharepoint
          path: "/sharepoint/document/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sharepoint
              method: GET

Uploads a file to SharePoint. Used for report archival and document management.

naftiko: "0.5"
info:
  label: "SharePoint File Uploader"
  description: "Uploads a file to SharePoint. Used for report archival and document management."
  tags:
    - document-management
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: doc-upload
      port: 8080
      tools:
        - name: upload-to-sharepoint
          description: "Upload a file to SharePoint."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: folder_path
              in: body
              type: string
              description: "Folder path."
            - name: file_name
              in: body
              type: string
              description: "File name."
          call: "sharepoint.upload-file"
          with:
            site_id: "{{site_id}}"
            folder_path: "{{folder_path}}"
            file_name: "{{file_name}}"
          outputParameters:
            - name: web_url
              type: string
              mapping: "$.webUrl"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

Sends a notification to a Slack channel.

naftiko: "0.5"
info:
  label: "Slack Notification Publisher"
  description: "Sends a notification to a Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-slack
          description: "Sends a notification to a Slack channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The slack notification publisher identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.thomson-reuters.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: slack
          path: "/slack/notification/publisher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-slack
              method: GET

Sends a message to a Slack channel. Used across Thomson Reuters for alerts and notifications.

naftiko: "0.5"
info:
  label: "Slack Notification Sender"
  description: "Sends a message to a Slack channel. Used across Thomson Reuters for alerts and notifications."
  tags:
    - notification
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: notifications
      port: 8080
      tools:
        - name: send-slack-message
          description: "Send a message to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "Slack channel."
            - name: text
              in: body
              type: string
              description: "Message text."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{text}}"
          outputParameters:
            - name: ts
              type: string
              mapping: "$.ts"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Runs an analytics query against the Snowflake data warehouse.

naftiko: "0.5"
info:
  label: "Snowflake Analytics Query"
  description: "Runs an analytics query against the Snowflake data warehouse."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-snowflake
          description: "Runs an analytics query against the Snowflake data warehouse."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The snowflake analytics query identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.thomson-reuters.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Executes a SQL query against Thomson Reuters' Snowflake data warehouse and returns results.

naftiko: "0.5"
info:
  label: "Snowflake Query Runner"
  description: "Executes a SQL query against Thomson Reuters' Snowflake data warehouse and returns results."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: data-query
      port: 8080
      tools:
        - name: run-snowflake-query
          description: "Execute a SQL query on Snowflake and return results."
          inputParameters:
            - name: statement
              in: body
              type: string
              description: "SQL statement to execute."
          call: "snowflake.execute-query"
          with:
            statement: "{{statement}}"
          outputParameters:
            - name: data
              type: array
              mapping: "$.data"
            - name: row_count
              type: integer
              mapping: "$.resultSetMetaData.numRows"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Collection Orchestrator"
  description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
  tags:
    - sustainability
    - analytics
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: run-sustainability-metrics-collection-orchestrator
          description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a specific tax code section.

naftiko: "0.5"
info:
  label: "Tax Code Section Lookup"
  description: "Retrieves a specific tax code section."
  tags:
    - tax
    - legal
capability:
  exposes:
    - type: mcp
      namespace: tax
      port: 8080
      tools:
        - name: get-tax
          description: "Retrieves a specific tax code section."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tax code section lookup identifier."
          call: "tax-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: tax-api
      baseUri: "https://api.thomson-reuters.com/tax/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: tax
          path: "/tax/code/section/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tax
              method: GET

Extracts client financial data from the tax platform, runs compliance checks, prepares the filing, submits to the IRS e-file system, and notifies the tax preparer via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Tax Filing Preparation Pipeline"
  description: "Extracts client financial data from the tax platform, runs compliance checks, prepares the filing, submits to the IRS e-file system, and notifies the tax preparer via Microsoft Teams."
  tags:
    - tax
    - compliance
    - e-file
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: tax-filing
      port: 8080
      tools:
        - name: prepare-and-file-tax
          description: "Orchestrate tax filing from data extraction through e-file submission and notification."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Tax client ID."
            - name: tax_year
              in: body
              type: string
              description: "Tax year."
            - name: form_type
              in: body
              type: string
              description: "Tax form type (e.g., 1040, 1120)."
            - name: preparer_email
              in: body
              type: string
              description: "Tax preparer email for notification."
          steps:
            - name: extract-data
              type: call
              call: "onesource.get-client-data"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
            - name: run-compliance
              type: call
              call: "onesource.run-compliance-check"
              with:
                client_id: "{{client_id}}"
                form_type: "{{form_type}}"
            - name: submit-efile
              type: call
              call: "onesource.submit-efile"
              with:
                client_id: "{{client_id}}"
                tax_year: "{{tax_year}}"
                form_type: "{{form_type}}"
            - name: notify-preparer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{preparer_email}}"
                text: "Tax filing submitted for client {{client_id}} ({{tax_year}} {{form_type}}). E-file confirmation: {{submit-efile.confirmation_id}}. Compliance: {{run-compliance.status}}."
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: client-data
          path: "/clients/{{client_id}}/data"
          inputParameters:
            - name: client_id
              in: path
            - name: tax_year
              in: query
          operations:
            - name: get-client-data
              method: GET
        - name: compliance
          path: "/compliance/check"
          operations:
            - name: run-compliance-check
              method: POST
        - name: efile
          path: "/efile/submit"
          operations:
            - name: submit-efile
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Searches the ONESOURCE tax form library for available forms by jurisdiction and form type.

naftiko: "0.5"
info:
  label: "Tax Form Library Search"
  description: "Searches the ONESOURCE tax form library for available forms by jurisdiction and form type."
  tags:
    - tax
    - onesource
    - forms
capability:
  exposes:
    - type: mcp
      namespace: tax-forms
      port: 8080
      tools:
        - name: search-tax-forms
          description: "Search available tax forms."
          inputParameters:
            - name: jurisdiction
              in: body
              type: string
              description: "Tax jurisdiction."
            - name: form_type
              in: body
              type: string
              description: "Form type."
          call: "onesource.search-forms"
          with:
            jurisdiction: "{{jurisdiction}}"
            type: "{{form_type}}"
          outputParameters:
            - name: forms
              type: array
              mapping: "$.forms"
            - name: count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: forms
          path: "/forms/search"
          inputParameters:
            - name: jurisdiction
              in: query
            - name: type
              in: query
          operations:
            - name: search-forms
              method: GET

Runs a tax provision calculation for a corporate client using ONESOURCE, retrieves the results, and emails the summary to the tax director.

naftiko: "0.5"
info:
  label: "Tax Provision Calculation"
  description: "Runs a tax provision calculation for a corporate client using ONESOURCE, retrieves the results, and emails the summary to the tax director."
  tags:
    - tax
    - provision
    - onesource
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: tax-provision
      port: 8080
      tools:
        - name: calculate-provision
          description: "Run tax provision calculation and email results."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Corporate entity ID."
            - name: period
              in: body
              type: string
              description: "Reporting period."
            - name: director_email
              in: body
              type: string
              description: "Tax director email."
          steps:
            - name: run-calc
              type: call
              call: "onesource.calculate-provision"
              with:
                entity_id: "{{entity_id}}"
                period: "{{period}}"
            - name: email-results
              type: call
              call: "outlook.send-email"
              with:
                to: "{{director_email}}"
                subject: "Tax Provision Results - {{entity_id}} - {{period}}"
                body: "Provision calculation complete. Current tax: ${{run-calc.current_tax}}. Deferred tax: ${{run-calc.deferred_tax}}. Effective rate: {{run-calc.effective_rate}}%."
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: provision
          path: "/provision/calculate"
          operations:
            - name: calculate-provision
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Checks the e-file status of a submitted tax return in ONESOURCE and returns acceptance or rejection status with details.

naftiko: "0.5"
info:
  label: "Tax Return Status Tracker"
  description: "Checks the e-file status of a submitted tax return in ONESOURCE and returns acceptance or rejection status with details."
  tags:
    - tax
    - onesource
    - e-file
capability:
  exposes:
    - type: mcp
      namespace: efile-status
      port: 8080
      tools:
        - name: check-efile-status
          description: "Check the e-file status of a submitted tax return."
          inputParameters:
            - name: confirmation_id
              in: body
              type: string
              description: "E-file confirmation ID."
          call: "onesource.get-efile-status"
          with:
            confirmation_id: "{{confirmation_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: accepted_date
              type: string
              mapping: "$.acceptedDate"
            - name: rejection_reason
              type: string
              mapping: "$.rejectionReason"
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: efile-status
          path: "/efile/status/{{confirmation_id}}"
          inputParameters:
            - name: confirmation_id
              in: path
          operations:
            - name: get-efile-status
              method: GET

Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.

naftiko: "0.5"
info:
  label: "Third Party Risk Assessment Orchestrator"
  description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
  tags:
    - risk
    - procurement
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: risk
      port: 8080
      tools:
        - name: run-third-party-risk-assessment-orchestrator
          description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Generates transfer pricing documentation using ONESOURCE, collects benchmark data from Refinitiv, publishes the report to SharePoint, and emails the tax team.

naftiko: "0.5"
info:
  label: "Transfer Pricing Documentation Generator"
  description: "Generates transfer pricing documentation using ONESOURCE, collects benchmark data from Refinitiv, publishes the report to SharePoint, and emails the tax team."
  tags:
    - tax
    - transfer-pricing
    - onesource
    - refinitiv
    - sharepoint
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: transfer-pricing
      port: 8080
      tools:
        - name: generate-tp-documentation
          description: "Generate transfer pricing documentation with benchmarking data."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Legal entity ID."
            - name: fiscal_year
              in: body
              type: string
              description: "Fiscal year."
            - name: sharepoint_site
              in: body
              type: string
              description: "SharePoint site ID."
            - name: tax_team_email
              in: body
              type: string
              description: "Tax team email."
          steps:
            - name: get-tp-data
              type: call
              call: "onesource.get-tp-data"
              with:
                entity_id: "{{entity_id}}"
                fiscal_year: "{{fiscal_year}}"
            - name: get-benchmarks
              type: call
              call: "refinitiv.get-tp-benchmarks"
              with:
                industry: "{{get-tp-data.industry}}"
                region: "{{get-tp-data.region}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "{{sharepoint_site}}"
                folder_path: "TransferPricing/{{entity_id}}"
                file_name: "TP_Doc_{{entity_id}}_{{fiscal_year}}.json"
            - name: notify-team
              type: call
              call: "outlook.send-email"
              with:
                to: "{{tax_team_email}}"
                subject: "Transfer Pricing Documentation - {{entity_id}} FY{{fiscal_year}}"
                body: "TP documentation generated and uploaded to SharePoint. Benchmark arm's length range: {{get-benchmarks.range}}."
  consumes:
    - type: http
      namespace: onesource
      baseUri: "https://api.tax.thomsonreuters.com/onesource/v1"
      authentication:
        type: bearer
        token: "$secrets.onesource_token"
      resources:
        - name: tp-data
          path: "/transfer-pricing/entities/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
            - name: fiscal_year
              in: query
          operations:
            - name: get-tp-data
              method: GET
    - type: http
      namespace: refinitiv
      baseUri: "https://api.refinitiv.com/data/fundamentals/v1"
      authentication:
        type: bearer
        token: "$secrets.refinitiv_token"
      resources:
        - name: benchmarks
          path: "/benchmarks/transfer-pricing"
          operations:
            - name: get-tp-benchmarks
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.thomson-reuters.com/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.thomson-reuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a specific legal case by citation from Westlaw and returns the case name, court, date, and summary.

naftiko: "0.5"
info:
  label: "Westlaw Citation Lookup"
  description: "Retrieves a specific legal case by citation from Westlaw and returns the case name, court, date, and summary."
  tags:
    - legal
    - westlaw
    - citation
capability:
  exposes:
    - type: mcp
      namespace: citation-lookup
      port: 8080
      tools:
        - name: get-case-by-citation
          description: "Look up a legal case by citation."
          inputParameters:
            - name: citation
              in: body
              type: string
              description: "Legal citation (e.g., 410 U.S. 113)."
          call: "westlaw.get-case"
          with:
            citation: "{{citation}}"
          outputParameters:
            - name: case_name
              type: string
              mapping: "$.caseName"
            - name: court
              type: string
              mapping: "$.court"
            - name: date
              type: string
              mapping: "$.decisionDate"
            - name: summary
              type: string
              mapping: "$.headnote"
  consumes:
    - type: http
      namespace: westlaw
      baseUri: "https://api.westlaw.com/v1"
      authentication:
        type: bearer
        token: "$secrets.westlaw_token"
      resources:
        - name: cases
          path: "/cases"
          inputParameters:
            - name: citation
              in: query
          operations:
            - name: get-case
              method: GET

Searches Westlaw for statutes and regulations by keyword and jurisdiction.

naftiko: "0.5"
info:
  label: "Westlaw Statute Search"
  description: "Searches Westlaw for statutes and regulations by keyword and jurisdiction."
  tags:
    - legal
    - westlaw
    - statutes
capability:
  exposes:
    - type: mcp
      namespace: statute-search
      port: 8080
      tools:
        - name: search-statutes
          description: "Search for statutes and regulations."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query."
            - name: jurisdiction
              in: body
              type: string
              description: "Jurisdiction."
          call: "westlaw.search-statutes"
          with:
            query: "{{query}}"
            jurisdiction: "{{jurisdiction}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.statutes"
            - name: total
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: westlaw
      baseUri: "https://api.westlaw.com/v1"
      authentication:
        type: bearer
        token: "$secrets.westlaw_token"
      resources:
        - name: statutes
          path: "/statutes/search"
          inputParameters:
            - name: query
              in: query
            - name: jurisdiction
              in: query
          operations:
            - name: search-statutes
              method: GET

Retrieves employee details from Workday by worker ID.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves employee details from Workday by worker ID."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up employee from Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.fullName"
            - name: department
              type: string
              mapping: "$.department"
  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

Retrieves employee profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Retrieves employee profile from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-workday
          description: "Retrieves employee profile from Workday."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The workday employee profile identifier."
          call: "hr-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: hr-api
      baseUri: "https://api.thomson-reuters.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.thomson_reuters_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Uploads a batch of entities for screening against World-Check, processes results, logs matches to Snowflake, and creates ServiceNow cases for positive matches.

naftiko: "0.5"
info:
  label: "World-Check Batch Screening Pipeline"
  description: "Uploads a batch of entities for screening against World-Check, processes results, logs matches to Snowflake, and creates ServiceNow cases for positive matches."
  tags:
    - compliance
    - screening
    - world-check
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: batch-screening
      port: 8080
      tools:
        - name: batch-screen-entities
          description: "Screen a batch of entities against World-Check and create cases for matches."
          inputParameters:
            - name: batch_name
              in: body
              type: string
              description: "Batch screening name."
            - name: entities
              in: body
              type: array
              description: "Array of entity records to screen."
          steps:
            - name: submit-batch
              type: call
              call: "worldcheck.batch-screen"
              with:
                batch_name: "{{batch_name}}"
                entities: "{{entities}}"
            - name: log-results
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO COMPLIANCE.SCREENING_RESULTS (batch_name, total_screened, matches) VALUES ('{{batch_name}}', {{submit-batch.total_screened}}, {{submit-batch.match_count}})"
            - name: create-cases
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_screening_cases"
                batch_name: "{{batch_name}}"
                match_count: "{{submit-batch.match_count}}"
                status: "pending_review"
  consumes:
    - type: http
      namespace: worldcheck
      baseUri: "https://api.worldcheck.thomsonreuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.worldcheck_token"
      resources:
        - name: batch
          path: "/cases/batch"
          operations:
            - name: batch-screen
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://thomsonreuters.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://thomsonreuters.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Retrieves the current status of a World-Check screening case by case ID.

naftiko: "0.5"
info:
  label: "World-Check Case Status"
  description: "Retrieves the current status of a World-Check screening case by case ID."
  tags:
    - compliance
    - world-check
    - screening
capability:
  exposes:
    - type: mcp
      namespace: wc-case
      port: 8080
      tools:
        - name: get-case-status
          description: "Get World-Check screening case status."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "World-Check case ID."
          call: "worldcheck.get-case"
          with:
            case_id: "{{case_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.caseStatus"
            - name: match_count
              type: integer
              mapping: "$.matchCount"
            - name: risk_level
              type: string
              mapping: "$.riskLevel"
  consumes:
    - type: http
      namespace: worldcheck
      baseUri: "https://api.worldcheck.thomsonreuters.com/v2"
      authentication:
        type: bearer
        token: "$secrets.worldcheck_token"
      resources:
        - name: cases
          path: "/cases/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET