Tamr Capabilities

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

Sort
Expand

Extracts address fields from a Tamr dataset, standardizes them via Google Maps Geocoding API, then writes the standardized addresses back to the Tamr dataset for improved matching.

naftiko: "0.5"
info:
  label: "Address Standardization Pipeline"
  description: "Extracts address fields from a Tamr dataset, standardizes them via Google Maps Geocoding API, then writes the standardized addresses back to the Tamr dataset for improved matching."
  tags:
    - data-quality
    - tamr
    - google-maps
    - geocoding
    - address-standardization
capability:
  exposes:
    - type: mcp
      namespace: data-cleansing
      port: 8080
      tools:
        - name: standardize-addresses
          description: "Retrieve address records from a Tamr dataset, geocode via Google Maps, and update records with standardized addresses."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Tamr dataset ID containing address records."
            - name: address_field
              in: body
              type: string
              description: "The field name containing raw address text."
          steps:
            - name: get-records
              type: call
              call: "tamr.get-dataset-records"
              with:
                dataset_id: "{{dataset_id}}"
            - name: geocode
              type: call
              call: "google-maps.geocode"
              with:
                address: "{{get-records.records[*].address_field}}"
            - name: update-records
              type: call
              call: "tamr.update-dataset-records"
              with:
                dataset_id: "{{dataset_id}}"
                records: "{{geocode.standardized_addresses}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-records
          path: "/datasets/{{dataset_id}}/records"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-dataset-records
              method: GET
            - name: update-dataset-records
              method: PATCH
    - type: http
      namespace: google-maps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_api_key"
        in: query
        name: key
      resources:
        - name: geocode
          path: "/geocode/json"
          inputParameters:
            - name: address
              in: query
          operations:
            - name: geocode
              method: GET

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Runs a Tamr mastering project for compliance-sensitive data, exports results to Snowflake, generates a compliance report, and emails it to the compliance officer via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Compliance Data Mastering Report"
  description: "Runs a Tamr mastering project for compliance-sensitive data, exports results to Snowflake, generates a compliance report, and emails it to the compliance officer via Microsoft Outlook."
  tags:
    - data-mastering
    - tamr
    - snowflake
    - compliance
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: compliance-mdm
      port: 8080
      tools:
        - name: run-compliance-mastering
          description: "Run Tamr mastering for compliance data, export to Snowflake, and email report to compliance officer."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project for compliance data."
            - name: recipient_email
              in: body
              type: string
              description: "Compliance officer email address."
          steps:
            - name: run-mastering
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{tamr_project}}"
            - name: export-to-snowflake
              type: call
              call: "snowflake.load-data"
              with:
                database: "COMPLIANCE_DB"
                schema: "MDM"
                table: "GOLDEN_RECORDS"
                data_ref: "{{run-mastering.output_dataset_id}}"
            - name: send-report
              type: call
              call: "outlook.send-email"
              with:
                to: "{{recipient_email}}"
                subject: "Compliance MDM Report - {{tamr_project}}"
                body: "Mastering complete. Clusters: {{run-mastering.clusterCount}}, Match rate: {{run-mastering.matchRate}}. Golden records loaded to COMPLIANCE_DB.MDM.GOLDEN_RECORDS."
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              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

Creates a new Confluence page in a specified space. Used by documentation workflows to publish reports and findings.

naftiko: "0.5"
info:
  label: "Confluence Page Creator"
  description: "Creates a new Confluence page in a specified space. Used by documentation workflows to publish reports and findings."
  tags:
    - documentation
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: docs
      port: 8080
      tools:
        - name: create-confluence-page
          description: "Create a Confluence page."
          inputParameters:
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: title
              in: body
              type: string
              description: "Page title."
            - name: body
              in: body
              type: string
              description: "Page body content."
          call: "confluence.create-page"
          with:
            space_key: "{{space_key}}"
            title: "{{title}}"
            body: "{{body}}"
          outputParameters:
            - name: page_id
              type: string
              mapping: "$.id"
            - name: url
              type: string
              mapping: "$._links.webui"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://tamr.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

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.tamr.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Reads schema definitions from multiple source systems via Informatica metadata, creates a unified schema mapping in Tamr, and publishes the mapping report to Confluence for stakeholder review.

naftiko: "0.5"
info:
  label: "Cross-Source Schema Mapping Orchestrator"
  description: "Reads schema definitions from multiple source systems via Informatica metadata, creates a unified schema mapping in Tamr, and publishes the mapping report to Confluence for stakeholder review."
  tags:
    - data-integration
    - schema-mapping
    - informatica
    - tamr
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: schema-ops
      port: 8080
      tools:
        - name: map-schemas
          description: "Extract schemas from Informatica sources, create a Tamr unified mapping, and publish the report to Confluence."
          inputParameters:
            - name: source_connections
              in: body
              type: array
              description: "List of Informatica connection names to extract schemas from."
            - name: tamr_project
              in: body
              type: string
              description: "The Tamr schema mapping project name."
            - name: confluence_space
              in: body
              type: string
              description: "The Confluence space key for the mapping report."
          steps:
            - name: get-schemas
              type: call
              call: "informatica.get-metadata"
              with:
                connections: "{{source_connections}}"
            - name: create-mapping
              type: call
              call: "tamr.create-schema-mapping"
              with:
                project_name: "{{tamr_project}}"
                source_schemas: "{{get-schemas.schemas}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "{{confluence_space}}"
                title: "Schema Mapping Report - {{tamr_project}}"
                body: "{{create-mapping.mapping_report}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: metadata
          path: "/metadata"
          operations:
            - name: get-metadata
              method: POST
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: schema-mapping
          path: "/projects/{{project_name}}/schemaMapping"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: create-schema-mapping
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://tamr.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Ingests customer records from Salesforce and Snowflake, runs Tamr ML-driven entity resolution to deduplicate and merge records, then publishes the golden customer master back to Snowflake.

naftiko: "0.5"
info:
  label: "Customer Data Mastering Pipeline"
  description: "Ingests customer records from Salesforce and Snowflake, runs Tamr ML-driven entity resolution to deduplicate and merge records, then publishes the golden customer master back to Snowflake."
  tags:
    - data-mastering
    - mdm
    - salesforce
    - snowflake
    - tamr
    - entity-resolution
capability:
  exposes:
    - type: mcp
      namespace: mdm-customer
      port: 8080
      tools:
        - name: master-customer-records
          description: "Given a source dataset name and match threshold, orchestrate customer record mastering across Salesforce, Tamr, and Snowflake."
          inputParameters:
            - name: source_dataset
              in: body
              type: string
              description: "The Tamr source dataset name containing raw customer records."
            - name: match_threshold
              in: body
              type: number
              description: "The ML confidence threshold for matching (0.0 to 1.0)."
            - name: target_schema
              in: body
              type: string
              description: "The Snowflake target schema for the golden records."
          steps:
            - name: extract-salesforce
              type: call
              call: "salesforce.query-records"
              with:
                query: "SELECT Id, Name, Email, Phone, BillingAddress FROM Account"
            - name: run-mastering
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{source_dataset}}"
                threshold: "{{match_threshold}}"
            - name: publish-golden
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "{{target_schema}}"
                table: "GOLDEN_CUSTOMERS"
                data_ref: "{{run-mastering.output_dataset_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tamr.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: q
              in: query
          operations:
            - name: query-records
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering-projects
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Exports Tamr dataset metadata including schemas, lineage, and quality scores, and publishes them to a Collibra data catalog for enterprise governance visibility.

naftiko: "0.5"
info:
  label: "Data Governance Catalog Sync"
  description: "Exports Tamr dataset metadata including schemas, lineage, and quality scores, and publishes them to a Collibra data catalog for enterprise governance visibility."
  tags:
    - data-governance
    - tamr
    - collibra
    - catalog
    - metadata
capability:
  exposes:
    - type: mcp
      namespace: governance-sync
      port: 8080
      tools:
        - name: sync-to-catalog
          description: "Export Tamr dataset metadata and publish to Collibra data catalog."
          inputParameters:
            - name: tamr_dataset_id
              in: body
              type: string
              description: "Tamr dataset ID to export metadata from."
            - name: collibra_domain_id
              in: body
              type: string
              description: "Collibra domain ID to publish to."
          steps:
            - name: get-metadata
              type: call
              call: "tamr.get-dataset-profile"
              with:
                dataset_id: "{{tamr_dataset_id}}"
            - name: publish-to-collibra
              type: call
              call: "collibra.create-asset"
              with:
                domain_id: "{{collibra_domain_id}}"
                name: "{{get-metadata.name}}"
                type: "Data Set"
                attributes: "{{get-metadata}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-profile
          path: "/datasets/{{dataset_id}}/profile"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-dataset-profile
              method: GET
    - type: http
      namespace: collibra
      baseUri: "https://tamr.collibra.com/rest/2.0"
      authentication:
        type: basic
        username: "$secrets.collibra_user"
        password: "$secrets.collibra_password"
      resources:
        - name: assets
          path: "/assets"
          operations:
            - name: create-asset
              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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 Tamr for the provenance of a golden record, showing which source systems contributed to it and which fields were chosen from each source, then logs the lineage to Snowflake.

naftiko: "0.5"
info:
  label: "Data Lineage Tracker"
  description: "Queries Tamr for the provenance of a golden record, showing which source systems contributed to it and which fields were chosen from each source, then logs the lineage to Snowflake."
  tags:
    - data-mastering
    - tamr
    - snowflake
    - data-lineage
    - governance
capability:
  exposes:
    - type: mcp
      namespace: data-lineage
      port: 8080
      tools:
        - name: track-record-lineage
          description: "Given a golden record ID, retrieve its source record provenance from Tamr and log to Snowflake."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: cluster_id
              in: body
              type: string
              description: "The golden record cluster ID to trace."
          steps:
            - name: get-lineage
              type: call
              call: "tamr.get-cluster-provenance"
              with:
                project_name: "{{project_name}}"
                cluster_id: "{{cluster_id}}"
            - name: log-lineage
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "LINEAGE"
                table: "RECORD_PROVENANCE"
                data_ref: "{{get-lineage.provenance}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: provenance
          path: "/projects/{{project_name}}/publishedClusters/{{cluster_id}}/records"
          inputParameters:
            - name: project_name
              in: path
            - name: cluster_id
              in: path
          operations:
            - name: get-cluster-provenance
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              method: POST

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

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 1"
  description: "Orchestrates data mastering workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-001
          description: "Orchestrates data mastering 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 Data Mastering Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 2"
  description: "Orchestrates data mastering workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-002
          description: "Orchestrates data mastering 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 Data Mastering Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering operational data for workflow 3.

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

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

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 4"
  description: "Orchestrates data mastering workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-004
          description: "Orchestrates data mastering 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 Data Mastering Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 5"
  description: "Orchestrates data mastering workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-005
          description: "Orchestrates data mastering 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 Data Mastering Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering operational data for workflow 6.

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

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

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 7"
  description: "Orchestrates data mastering workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-007
          description: "Orchestrates data mastering 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 Data Mastering Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 8"
  description: "Orchestrates data mastering workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-008
          description: "Orchestrates data mastering 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 Data Mastering Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering operational data for workflow 9.

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

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

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 10"
  description: "Orchestrates data mastering workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-010
          description: "Orchestrates data mastering 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 Data Mastering Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 11"
  description: "Orchestrates data mastering workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-011
          description: "Orchestrates data mastering 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 Data Mastering Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering operational data for workflow 12.

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

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

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 13"
  description: "Orchestrates data mastering workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-013
          description: "Orchestrates data mastering 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 Data Mastering Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Data Mastering Workflow 14"
  description: "Orchestrates data mastering workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - data
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: run-data-mastering-workflow-014
          description: "Orchestrates data mastering 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 Data Mastering Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 data mastering operational data for workflow 15.

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

On demand, retrieves a Tamr dataset's profiling statistics and computes a composite data-quality score based on completeness, uniqueness, and consistency metrics.

naftiko: "0.5"
info:
  label: "Data Quality Score Calculator"
  description: "On demand, retrieves a Tamr dataset's profiling statistics and computes a composite data-quality score based on completeness, uniqueness, and consistency metrics."
  tags:
    - data-quality
    - tamr
    - profiling
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: calculate-dq-score
          description: "Given a Tamr dataset ID, retrieve profiling stats and compute a composite data-quality score."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Tamr dataset ID to profile."
          call: "tamr.get-dataset-profile"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: completeness
              type: number
              mapping: "$.completeness"
            - name: uniqueness
              type: number
              mapping: "$.uniqueness"
            - name: consistency
              type: number
              mapping: "$.consistency"
            - name: composite_score
              type: number
              mapping: "$.compositeScore"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-profile
          path: "/datasets/{{dataset_id}}/profile"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-dataset-profile
              method: GET

After a Tamr mastering run completes, checks for unresolved clusters, sends a Slack notification to the data steward channel, and creates a ServiceNow task for manual cluster review.

naftiko: "0.5"
info:
  label: "Data Steward Notification Orchestrator"
  description: "After a Tamr mastering run completes, checks for unresolved clusters, sends a Slack notification to the data steward channel, and creates a ServiceNow task for manual cluster review."
  tags:
    - data-mastering
    - tamr
    - slack
    - servicenow
    - notification
capability:
  exposes:
    - type: mcp
      namespace: steward-notify
      port: 8080
      tools:
        - name: notify-stewards
          description: "Check Tamr mastering results and notify data stewards via Slack and ServiceNow if unresolved clusters exist."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for steward notifications."
          steps:
            - name: get-status
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{project_name}}"
            - name: send-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Mastering run complete for {{project_name}}. Clusters: {{get-status.clusterCount}}, Match rate: {{get-status.matchRate}}. Unresolved clusters require review."
            - name: create-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Review unresolved clusters in {{project_name}}"
                description: "Tamr mastering produced {{get-status.clusterCount}} clusters with match rate {{get-status.matchRate}}. Manual review needed."
                assignment_group: "Data_Stewards"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              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
    - type: http
      namespace: servicenow
      baseUri: "https://tamr.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Sets up a data steward's review environment by creating a Tamr curation project, provisioning a Snowflake workspace schema, creating a Jira board for tracking, and notifying the steward via email.

naftiko: "0.5"
info:
  label: "Data Steward Workbench Initializer"
  description: "Sets up a data steward's review environment by creating a Tamr curation project, provisioning a Snowflake workspace schema, creating a Jira board for tracking, and notifying the steward via email."
  tags:
    - data-mastering
    - tamr
    - snowflake
    - jira
    - microsoft-outlook
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: steward-setup
      port: 8080
      tools:
        - name: setup-steward-workbench
          description: "Provision a complete data steward review environment across Tamr, Snowflake, Jira, and email."
          inputParameters:
            - name: steward_name
              in: body
              type: string
              description: "Name of the data steward."
            - name: steward_email
              in: body
              type: string
              description: "Email address of the data steward."
            - name: mastering_project
              in: body
              type: string
              description: "Tamr mastering project to curate."
          steps:
            - name: create-curation
              type: call
              call: "tamr.create-curation-project"
              with:
                project_name: "curation_{{steward_name}}"
                source_project: "{{mastering_project}}"
            - name: provision-schema
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CREATE SCHEMA IF NOT EXISTS MDM_DB.STEWARD_{{steward_name}}"
            - name: create-board
              type: call
              call: "jira.create-project"
              with:
                name: "Steward Review - {{steward_name}}"
                key: "SR{{steward_name}}"
            - name: notify-steward
              type: call
              call: "outlook.send-email"
              with:
                to: "{{steward_email}}"
                subject: "Your Data Steward Workbench is Ready"
                body: "Hi {{steward_name}}, your review environment for {{mastering_project}} is ready. Tamr curation project, Snowflake schema, and Jira board have been provisioned."
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects"
          operations:
            - name: create-curation-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.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://tamr.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: projects
          path: "/project"
          operations:
            - name: create-project
              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

Exports a Delta Lake table from Databricks to S3, registers it as a Tamr input dataset, and triggers a mastering refresh to incorporate the new data.

naftiko: "0.5"
info:
  label: "Databricks to Tamr Data Sync"
  description: "Exports a Delta Lake table from Databricks to S3, registers it as a Tamr input dataset, and triggers a mastering refresh to incorporate the new data."
  tags:
    - data-integration
    - databricks
    - tamr
    - amazon-s3
capability:
  exposes:
    - type: mcp
      namespace: data-sync
      port: 8080
      tools:
        - name: sync-databricks-to-tamr
          description: "Export a Databricks Delta table to S3 and register it in Tamr for mastering."
          inputParameters:
            - name: databricks_table
              in: body
              type: string
              description: "Fully qualified Databricks Delta table name."
            - name: s3_path
              in: body
              type: string
              description: "S3 destination path for the export."
            - name: tamr_dataset
              in: body
              type: string
              description: "Tamr input dataset name to register."
          steps:
            - name: export-delta
              type: call
              call: "databricks.run-job"
              with:
                job_name: "export-delta-to-s3"
                parameters:
                  table: "{{databricks_table}}"
                  s3_path: "{{s3_path}}"
            - name: register-dataset
              type: call
              call: "tamr.create-dataset"
              with:
                dataset_name: "{{tamr_dataset}}"
                s3_uri: "{{s3_path}}"
            - name: refresh-mastering
              type: call
              call: "tamr.refresh-dataset"
              with:
                dataset_id: "{{register-dataset.dataset_id}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://tamr.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: create-dataset
              method: POST
        - name: dataset-refresh
          path: "/datasets/{{dataset_id}}/refresh"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Queries Datadog for Tamr mastering job metrics including duration, memory usage, and error count. Used by SREs to monitor mastering infrastructure health.

naftiko: "0.5"
info:
  label: "Datadog Mastering Job Monitor"
  description: "Queries Datadog for Tamr mastering job metrics including duration, memory usage, and error count. Used by SREs to monitor mastering infrastructure health."
  tags:
    - monitoring
    - datadog
    - tamr
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-mastering-job-metrics
          description: "Query Datadog for Tamr mastering job performance metrics."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "The Tamr mastering job name to query."
            - name: time_range
              in: body
              type: string
              description: "Time range for metrics query (e.g., last_1h, last_24h)."
          call: "datadog.query-metrics"
          with:
            query: "avg:tamr.mastering.job.duration{job_name:{{job_name}}}"
            time_range: "{{time_range}}"
          outputParameters:
            - name: avg_duration
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
            - name: error_count
              type: integer
              mapping: "$.series[1].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        in: header
        name: "DD-API-KEY"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: query
              in: query
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: query-metrics
              method: GET

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Periodically queries Tamr mastering projects for new duplicate clusters, compares against a baseline, and triggers PagerDuty alerts when duplicate growth exceeds acceptable thresholds.

naftiko: "0.5"
info:
  label: "Duplicate Detection Alert Pipeline"
  description: "Periodically queries Tamr mastering projects for new duplicate clusters, compares against a baseline, and triggers PagerDuty alerts when duplicate growth exceeds acceptable thresholds."
  tags:
    - data-quality
    - tamr
    - pagerduty
    - alerting
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: dq-alerts
      port: 8080
      tools:
        - name: check-duplicate-growth
          description: "Compare current Tamr duplicate clusters against baseline and alert via PagerDuty if growth exceeds threshold."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: baseline_cluster_count
              in: body
              type: integer
              description: "Baseline cluster count for comparison."
            - name: growth_threshold_pct
              in: body
              type: number
              description: "Percentage growth threshold to trigger alert."
          steps:
            - name: get-current
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{project_name}}"
            - name: trigger-alert
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "$secrets.pagerduty_service_id"
                title: "Duplicate cluster growth alert: {{project_name}}"
                body: "Current clusters: {{get-current.clusterCount}}, baseline: {{baseline_cluster_count}}. Growth exceeds {{growth_threshold_pct}}% threshold."
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 a complete MDM pipeline: extracts from SAP and Salesforce, runs Tamr mastering, loads golden records to Snowflake, logs audit trail to ServiceNow, refreshes Power BI, and notifies stakeholders in Microsoft Teams.

naftiko: "0.5"
info:
  label: "End-to-End MDM Pipeline with Audit Trail"
  description: "Orchestrates a complete MDM pipeline: extracts from SAP and Salesforce, runs Tamr mastering, loads golden records to Snowflake, logs audit trail to ServiceNow, refreshes Power BI, and notifies stakeholders in Microsoft Teams."
  tags:
    - data-mastering
    - sap
    - salesforce
    - tamr
    - snowflake
    - servicenow
    - power-bi
    - microsoft-teams
    - audit
capability:
  exposes:
    - type: mcp
      namespace: mdm-pipeline
      port: 8080
      tools:
        - name: run-full-mdm-pipeline
          description: "Execute end-to-end MDM pipeline with full audit trail across all integrated systems."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID to refresh."
            - name: teams_webhook
              in: body
              type: string
              description: "Teams webhook URL for notifications."
          steps:
            - name: extract-sap
              type: call
              call: "sap.get-vendors"
              with:
                company_code: "1000"
            - name: extract-salesforce
              type: call
              call: "salesforce.query-records"
              with:
                query: "SELECT Id, Name, Email FROM Account"
            - name: run-mastering
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{tamr_project}}"
            - name: load-golden
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "GOLDEN"
                table: "MASTER_RECORDS"
                data_ref: "{{run-mastering.output_dataset_id}}"
            - name: log-audit
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "MDM pipeline completed for {{tamr_project}}"
                description: "Clusters: {{run-mastering.clusterCount}}, Match rate: {{run-mastering.matchRate}}"
                assignment_group: "Data_Governance"
            - name: refresh-bi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: notify-teams
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "MDM pipeline complete for {{tamr_project}}. Golden records in Snowflake, BI refreshed, audit logged."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tamr-sap.s4hana.cloud/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_Supplier"
          operations:
            - name: get-vendors
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://tamr.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-records
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://tamr.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              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

Collects steward feedback from a ServiceNow form, submits it as Tamr training labels to improve the ML model, retrains the model, and sends a Slack update with updated metrics.

naftiko: "0.5"
info:
  label: "Entity Resolution Feedback Loop"
  description: "Collects steward feedback from a ServiceNow form, submits it as Tamr training labels to improve the ML model, retrains the model, and sends a Slack update with updated metrics."
  tags:
    - data-mastering
    - tamr
    - servicenow
    - slack
    - machine-learning
    - feedback
capability:
  exposes:
    - type: mcp
      namespace: feedback-loop
      port: 8080
      tools:
        - name: process-steward-feedback
          description: "Collect steward feedback from ServiceNow, submit as Tamr training labels, retrain the model, and notify via Slack."
          inputParameters:
            - name: servicenow_table
              in: body
              type: string
              description: "ServiceNow table containing steward feedback records."
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project to receive training labels."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for model update notifications."
          steps:
            - name: get-feedback
              type: call
              call: "servicenow.query-records"
              with:
                table: "{{servicenow_table}}"
                query: "state=new"
            - name: submit-labels
              type: call
              call: "tamr.submit-training-labels"
              with:
                project_name: "{{tamr_project}}"
                labels: "{{get-feedback.records}}"
            - name: retrain
              type: call
              call: "tamr.retrain-model"
              with:
                project_name: "{{tamr_project}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "ML model retrained for {{tamr_project}} with {{submit-labels.labels_added}} new labels. Updated metrics: precision={{retrain.precision}}, recall={{retrain.recall}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tamr.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
            - name: sysparm_query
              in: query
          operations:
            - name: query-records
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: training-labels
          path: "/projects/{{project_name}}/verifiedPairs"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: submit-training-labels
              method: POST
        - name: model
          path: "/projects/{{project_name}}/train"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: retrain-model
              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

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Exports Tamr golden records from a completed mastering project and loads them into a Google BigQuery dataset for analytics and reporting teams.

naftiko: "0.5"
info:
  label: "Golden Record Export to BigQuery"
  description: "Exports Tamr golden records from a completed mastering project and loads them into a Google BigQuery dataset for analytics and reporting teams."
  tags:
    - data-mastering
    - tamr
    - bigquery
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-export
      port: 8080
      tools:
        - name: export-to-bigquery
          description: "Export Tamr golden records to a BigQuery table."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: bq_dataset
              in: body
              type: string
              description: "BigQuery dataset ID."
            - name: bq_table
              in: body
              type: string
              description: "BigQuery table name."
          steps:
            - name: get-golden-records
              type: call
              call: "tamr.export-golden-records"
              with:
                project_name: "{{tamr_project}}"
            - name: load-bigquery
              type: call
              call: "bigquery.load-data"
              with:
                dataset_id: "{{bq_dataset}}"
                table_id: "{{bq_table}}"
                source_uri: "{{get-golden-records.export_uri}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: export
          path: "/projects/{{project_name}}/export"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: export-golden-records
              method: POST
    - type: http
      namespace: bigquery
      baseUri: "https://bigquery.googleapis.com/bigquery/v2"
      authentication:
        type: bearer
        token: "$secrets.gcp_token"
      resources:
        - name: jobs
          path: "/projects/tamr-analytics/jobs"
          operations:
            - name: load-data
              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.tamr.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Exports HubSpot contacts, runs them through Tamr for deduplication, and merges duplicate HubSpot contacts based on Tamr cluster results to keep CRM clean.

naftiko: "0.5"
info:
  label: "HubSpot Contact Dedup via Tamr"
  description: "Exports HubSpot contacts, runs them through Tamr for deduplication, and merges duplicate HubSpot contacts based on Tamr cluster results to keep CRM clean."
  tags:
    - data-mastering
    - hubspot
    - tamr
    - crm
    - deduplication
capability:
  exposes:
    - type: mcp
      namespace: crm-dedup
      port: 8080
      tools:
        - name: dedup-hubspot-contacts
          description: "Export HubSpot contacts, run Tamr dedup, and merge duplicates in HubSpot."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr dedup project for HubSpot contacts."
            - name: hubspot_list_id
              in: body
              type: string
              description: "HubSpot contact list ID to process."
          steps:
            - name: export-contacts
              type: call
              call: "hubspot.get-contacts"
              with:
                list_id: "{{hubspot_list_id}}"
            - name: run-dedup
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{tamr_project}}"
            - name: merge-duplicates
              type: call
              call: "hubspot.merge-contacts"
              with:
                merge_pairs: "{{run-dedup.merge_pairs}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_api_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts"
          operations:
            - name: get-contacts
              method: GET
            - name: merge-contacts
              method: POST
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST

Checks the status of an Informatica Cloud task run and returns execution state, start time, end time, and row counts. Used for pipeline monitoring.

naftiko: "0.5"
info:
  label: "Informatica Job Status Checker"
  description: "Checks the status of an Informatica Cloud task run and returns execution state, start time, end time, and row counts. Used for pipeline monitoring."
  tags:
    - data-integration
    - informatica
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: etl-monitoring
      port: 8080
      tools:
        - name: get-informatica-job-status
          description: "Check the execution status of an Informatica Cloud task run."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The Informatica task run ID."
          call: "informatica.get-run-status"
          with:
            run_id: "{{run_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.executionState"
            - name: start_time
              type: string
              mapping: "$.startTime"
            - name: end_time
              type: string
              mapping: "$.endTime"
            - name: rows_processed
              type: integer
              mapping: "$.rowsProcessed"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: activity-runs
          path: "/activityMonitor/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run-status
              method: GET

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 Tamr mastering run detects duplicate clusters above a threshold, creates a Jira ticket for the data steward with cluster details and assigns it for manual review.

naftiko: "0.5"
info:
  label: "Jira Data Quality Issue Creator"
  description: "When a Tamr mastering run detects duplicate clusters above a threshold, creates a Jira ticket for the data steward with cluster details and assigns it for manual review."
  tags:
    - data-quality
    - tamr
    - jira
    - alerting
capability:
  exposes:
    - type: mcp
      namespace: dq-alerting
      port: 8080
      tools:
        - name: create-dq-issue
          description: "Given a Tamr project and duplicate threshold, check cluster stats and create a Jira issue if threshold is exceeded."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
            - name: duplicate_threshold
              in: body
              type: integer
              description: "Maximum acceptable duplicate clusters before alerting."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for data quality issues."
            - name: assignee
              in: body
              type: string
              description: "Jira username to assign the issue to."
          steps:
            - name: check-clusters
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{project_name}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                summary: "Data quality alert: {{check-clusters.clusterCount}} duplicate clusters in {{project_name}}"
                description: "Tamr mastering run detected {{check-clusters.clusterCount}} clusters exceeding threshold of {{duplicate_threshold}}. Match rate: {{check-clusters.matchRate}}. Review required."
                issue_type: "Task"
                assignee: "{{assignee}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://tamr.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

Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by project managers to check data quality ticket status.

naftiko: "0.5"
info:
  label: "Jira Ticket Lookup"
  description: "Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by project managers to check data quality ticket status."
  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 and return summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g., DQ-123)."
          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"
            - name: priority
              type: string
              mapping: "$.fields.priority.name"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://tamr.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.tamr.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              method: GET

Consumes records from a Kafka topic, transforms them into Tamr-compatible format, and streams them into a Tamr input dataset for near-real-time mastering updates.

naftiko: "0.5"
info:
  label: "Kafka Stream to Tamr Ingestion"
  description: "Consumes records from a Kafka topic, transforms them into Tamr-compatible format, and streams them into a Tamr input dataset for near-real-time mastering updates."
  tags:
    - data-integration
    - apache-kafka
    - tamr
    - streaming
capability:
  exposes:
    - type: mcp
      namespace: stream-ingest
      port: 8080
      tools:
        - name: ingest-kafka-to-tamr
          description: "Consume records from a Kafka topic and load them into a Tamr input dataset."
          inputParameters:
            - name: kafka_topic
              in: body
              type: string
              description: "The Kafka topic to consume from."
            - name: tamr_dataset
              in: body
              type: string
              description: "The Tamr input dataset name."
            - name: batch_size
              in: body
              type: integer
              description: "Number of records per batch."
          steps:
            - name: consume-records
              type: call
              call: "kafka.consume-batch"
              with:
                topic: "{{kafka_topic}}"
                max_records: "{{batch_size}}"
            - name: ingest-to-tamr
              type: call
              call: "tamr.upsert-records"
              with:
                dataset_name: "{{tamr_dataset}}"
                records: "{{consume-records.records}}"
  consumes:
    - type: http
      namespace: kafka
      baseUri: "https://tamr-kafka.confluent.cloud/kafka/v3"
      authentication:
        type: basic
        username: "$secrets.kafka_api_key"
        password: "$secrets.kafka_api_secret"
      resources:
        - name: records
          path: "/clusters/{{cluster_id}}/topics/{{topic}}/records"
          inputParameters:
            - name: topic
              in: path
          operations:
            - name: consume-batch
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-records
          path: "/datasets/{{dataset_name}}/records"
          inputParameters:
            - name: dataset_name
              in: path
          operations:
            - name: upsert-records
              method: POST

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Gathers mastering statistics from Tamr, constructs a data completeness report, and uploads it as a PDF to SharePoint for stakeholder distribution.

naftiko: "0.5"
info:
  label: "Mastering Completeness Report Generator"
  description: "Gathers mastering statistics from Tamr, constructs a data completeness report, and uploads it as a PDF to SharePoint for stakeholder distribution."
  tags:
    - data-quality
    - tamr
    - sharepoint
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: dq-reporting
      port: 8080
      tools:
        - name: generate-completeness-report
          description: "Generate a mastering completeness report from Tamr and upload to SharePoint."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: sharepoint_site
              in: body
              type: string
              description: "SharePoint site ID for report upload."
            - name: folder_path
              in: body
              type: string
              description: "SharePoint folder path for the report."
          steps:
            - name: get-stats
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{project_name}}"
            - name: get-profile
              type: call
              call: "tamr.get-dataset-profile"
              with:
                dataset_id: "{{get-stats.outputDatasetId}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "{{sharepoint_site}}"
                folder_path: "{{folder_path}}"
                file_name: "completeness_report_{{project_name}}.json"
                content: "{{get-profile}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET
        - name: dataset-profile
          path: "/datasets/{{dataset_id}}/profile"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-dataset-profile
              method: GET
    - 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

Triggers an Apache Airflow DAG that orchestrates a full Tamr mastering pipeline run including data ingestion, deduplication, and golden record publication.

naftiko: "0.5"
info:
  label: "Mastering Run Trigger via Airflow"
  description: "Triggers an Apache Airflow DAG that orchestrates a full Tamr mastering pipeline run including data ingestion, deduplication, and golden record publication."
  tags:
    - data-mastering
    - tamr
    - apache-airflow
    - orchestration
capability:
  exposes:
    - type: mcp
      namespace: pipeline-trigger
      port: 8080
      tools:
        - name: trigger-mastering-dag
          description: "Trigger an Airflow DAG that runs the full Tamr mastering pipeline."
          inputParameters:
            - name: dag_id
              in: body
              type: string
              description: "The Airflow DAG ID for the mastering pipeline."
            - name: conf
              in: body
              type: object
              description: "Configuration parameters to pass to the DAG run."
          steps:
            - name: trigger-dag
              type: call
              call: "airflow.trigger-dag"
              with:
                dag_id: "{{dag_id}}"
                conf: "{{conf}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#data-mastering"
                text: "Mastering DAG {{dag_id}} triggered. Run ID: {{trigger-dag.dag_run_id}}"
  consumes:
    - type: http
      namespace: airflow
      baseUri: "https://tamr-airflow.cloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.airflow_token"
      resources:
        - name: dag-runs
          path: "/dags/{{dag_id}}/dagRuns"
          inputParameters:
            - name: dag_id
              in: path
          operations:
            - name: trigger-dag
              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

Sends an email via Microsoft Outlook/Graph API. Used across workflows for notifications and report delivery.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends an email via Microsoft Outlook/Graph API. Used across workflows for notifications and report delivery."
  tags:
    - notification
    - microsoft-outlook
    - email
capability:
  exposes:
    - type: mcp
      namespace: email
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Microsoft Outlook."
          inputParameters:
            - name: to
              in: body
              type: string
              description: "Recipient email address."
            - name: subject
              in: body
              type: string
              description: "Email subject."
            - name: body
              in: body
              type: string
              description: "Email body text."
          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 daily digest message to a Microsoft Teams channel summarizing Tamr mastering project health across all active projects including cluster counts and match rates.

naftiko: "0.5"
info:
  label: "Microsoft Teams Mastering Digest"
  description: "Sends a daily digest message to a Microsoft Teams channel summarizing Tamr mastering project health across all active projects including cluster counts and match rates."
  tags:
    - data-mastering
    - tamr
    - microsoft-teams
    - notification
capability:
  exposes:
    - type: mcp
      namespace: digest
      port: 8080
      tools:
        - name: send-mastering-digest
          description: "Compile Tamr mastering project health summaries and send a digest to Teams."
          inputParameters:
            - name: teams_webhook
              in: body
              type: string
              description: "Microsoft Teams incoming webhook URL."
          steps:
            - name: list-projects
              type: call
              call: "tamr.list-projects"
              with: {}
            - name: send-digest
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "Daily MDM Digest: {{list-projects.total}} active mastering projects. Details: {{list-projects.summary}}"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects"
          operations:
            - name: list-projects
              method: GET
    - type: http
      namespace: msteams
      baseUri: "{{webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-message
              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.tamr.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Pulls contact records from both Salesforce and HubSpot, runs Tamr entity resolution to identify matches across both CRMs, and generates a consolidated contact list in Snowflake.

naftiko: "0.5"
info:
  label: "Multi-CRM Data Consolidation"
  description: "Pulls contact records from both Salesforce and HubSpot, runs Tamr entity resolution to identify matches across both CRMs, and generates a consolidated contact list in Snowflake."
  tags:
    - data-mastering
    - salesforce
    - hubspot
    - tamr
    - snowflake
    - crm
capability:
  exposes:
    - type: mcp
      namespace: crm-consolidation
      port: 8080
      tools:
        - name: consolidate-crm-contacts
          description: "Extract contacts from Salesforce and HubSpot, run Tamr entity resolution, and load consolidated records to Snowflake."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr entity resolution project name."
            - name: snowflake_table
              in: body
              type: string
              description: "Target Snowflake table for consolidated contacts."
          steps:
            - name: get-sf-contacts
              type: call
              call: "salesforce.query-records"
              with:
                query: "SELECT Id, FirstName, LastName, Email, Phone FROM Contact"
            - name: get-hs-contacts
              type: call
              call: "hubspot.get-contacts"
              with:
                properties: "firstname,lastname,email,phone"
            - name: run-resolution
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{tamr_project}}"
            - name: load-consolidated
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "CONTACTS"
                table: "{{snowflake_table}}"
                data_ref: "{{run-resolution.output_dataset_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tamr.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: q
              in: query
          operations:
            - name: query-records
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_api_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts"
          operations:
            - name: get-contacts
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              method: POST

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.tamr.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

After a Tamr mastering run completes, triggers a Power BI dataset refresh so dashboards reflect the latest golden records, and sends a Teams notification upon completion.

naftiko: "0.5"
info:
  label: "Power BI Refresh After Mastering"
  description: "After a Tamr mastering run completes, triggers a Power BI dataset refresh so dashboards reflect the latest golden records, and sends a Teams notification upon completion."
  tags:
    - data-mastering
    - tamr
    - power-bi
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-refresh
      port: 8080
      tools:
        - name: refresh-bi-after-mastering
          description: "Trigger Power BI refresh after Tamr mastering completes and notify via Teams."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID to refresh."
            - name: teams_channel
              in: body
              type: string
              description: "Teams channel webhook URL."
          steps:
            - name: check-mastering
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{tamr_project}}"
            - name: refresh-pbi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: notify-teams
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_channel}}"
                text: "Power BI dataset refreshed with latest golden records from {{tamr_project}}. Clusters: {{check-mastering.clusterCount}}."
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET
    - 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

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Extracts product records from multiple ERP sources via Informatica, runs Tamr schema mapping and deduplication, then loads the unified product master into Snowflake for downstream analytics.

naftiko: "0.5"
info:
  label: "Product Data Mastering Pipeline"
  description: "Extracts product records from multiple ERP sources via Informatica, runs Tamr schema mapping and deduplication, then loads the unified product master into Snowflake for downstream analytics."
  tags:
    - data-mastering
    - product
    - informatica
    - tamr
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: mdm-product
      port: 8080
      tools:
        - name: master-product-records
          description: "Orchestrate product record mastering from Informatica extraction through Tamr dedup to Snowflake load."
          inputParameters:
            - name: informatica_task
              in: body
              type: string
              description: "The Informatica Cloud task name for ERP extraction."
            - name: tamr_project
              in: body
              type: string
              description: "The Tamr mastering project for product dedup."
          steps:
            - name: run-extraction
              type: call
              call: "informatica.run-task"
              with:
                task_name: "{{informatica_task}}"
            - name: run-dedup
              type: call
              call: "tamr.run-mastering-project"
              with:
                project_name: "{{tamr_project}}"
            - name: load-product-master
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "PRODUCTS"
                table: "GOLDEN_PRODUCTS"
                data_ref: "{{run-dedup.output_dataset_id}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: tasks
          path: "/task/{{task_name}}/run"
          inputParameters:
            - name: task_name
              in: path
          operations:
            - name: run-task
              method: POST
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: mastering
          path: "/projects/{{project_name}}/publishClusters"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-mastering-project
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              method: POST

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

Lists objects in an S3 bucket prefix and returns file names, sizes, and last-modified timestamps. Used to verify data landing zones before Tamr ingestion.

naftiko: "0.5"
info:
  label: "S3 Data File Lister"
  description: "Lists objects in an S3 bucket prefix and returns file names, sizes, and last-modified timestamps. Used to verify data landing zones before Tamr ingestion."
  tags:
    - data-integration
    - amazon-s3
    - storage
capability:
  exposes:
    - type: mcp
      namespace: storage-ops
      port: 8080
      tools:
        - name: list-s3-objects
          description: "List files in an S3 bucket prefix with names, sizes, and timestamps."
          inputParameters:
            - name: bucket
              in: body
              type: string
              description: "S3 bucket name."
            - name: prefix
              in: body
              type: string
              description: "S3 key prefix to filter."
          call: "s3.list-objects"
          with:
            bucket: "{{bucket}}"
            prefix: "{{prefix}}"
          outputParameters:
            - name: objects
              type: array
              mapping: "$.Contents"
            - name: count
              type: integer
              mapping: "$.KeyCount"
  consumes:
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: aws-sigv4
        accessKeyId: "$secrets.aws_access_key_id"
        secretAccessKey: "$secrets.aws_secret_access_key"
        region: "us-east-1"
      resources:
        - name: objects
          path: "/{{bucket}}"
          inputParameters:
            - name: bucket
              in: path
            - name: prefix
              in: query
            - name: list-type
              in: query
              value: "2"
          operations:
            - name: list-objects
              method: GET

Queries a Salesforce account by ID and returns key fields including name, industry, annual revenue, and billing address. Used to verify CRM data before mastering.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Queries a Salesforce account by ID and returns key fields including name, industry, annual revenue, and billing address. Used to verify CRM data before mastering."
  tags:
    - crm
    - salesforce
    - data-quality
capability:
  exposes:
    - type: mcp
      namespace: crm-lookup
      port: 8080
      tools:
        - name: get-salesforce-account
          description: "Retrieve a Salesforce account record by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce Account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: industry
              type: string
              mapping: "$.Industry"
            - name: annual_revenue
              type: number
              mapping: "$.AnnualRevenue"
            - name: billing_city
              type: string
              mapping: "$.BillingCity"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://tamr.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

Retrieves a Salesforce account by account ID.

naftiko: "0.5"
info:
  label: "Salesforce Account Viewer"
  description: "Retrieves a Salesforce account by account ID."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-salesforce
          description: "Retrieves a Salesforce account by account ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The salesforce account viewer identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.tamr.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Extracts vendor master records from SAP S/4HANA, loads them into a Tamr input dataset, and triggers a mastering refresh to incorporate new vendor data into the golden record.

naftiko: "0.5"
info:
  label: "SAP Vendor Master Sync to Tamr"
  description: "Extracts vendor master records from SAP S/4HANA, loads them into a Tamr input dataset, and triggers a mastering refresh to incorporate new vendor data into the golden record."
  tags:
    - data-mastering
    - sap
    - sap-s4hana
    - tamr
    - vendor-management
capability:
  exposes:
    - type: mcp
      namespace: vendor-sync
      port: 8080
      tools:
        - name: sync-sap-vendors
          description: "Extract SAP vendor masters and sync to Tamr for mastering."
          inputParameters:
            - name: company_code
              in: body
              type: string
              description: "SAP company code to filter vendors."
            - name: tamr_dataset
              in: body
              type: string
              description: "Tamr input dataset for vendor records."
          steps:
            - name: get-vendors
              type: call
              call: "sap.get-vendors"
              with:
                company_code: "{{company_code}}"
            - name: load-to-tamr
              type: call
              call: "tamr.upsert-records"
              with:
                dataset_name: "{{tamr_dataset}}"
                records: "{{get-vendors.results}}"
            - name: refresh
              type: call
              call: "tamr.refresh-dataset"
              with:
                dataset_id: "{{load-to-tamr.dataset_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tamr-sap.s4hana.cloud/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_Supplier"
          inputParameters:
            - name: $filter
              in: query
          operations:
            - name: get-vendors
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-records
          path: "/datasets/{{dataset_name}}/records"
          inputParameters:
            - name: dataset_name
              in: path
          operations:
            - name: upsert-records
              method: POST
        - name: dataset-refresh
          path: "/datasets/{{dataset_id}}/refresh"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 ServiceNow incident with specified details. Used for automated incident creation when data quality issues are detected.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Creator"
  description: "Creates a ServiceNow incident with specified details. Used for automated incident creation when data quality issues are detected."
  tags:
    - incident-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: incident-mgmt
      port: 8080
      tools:
        - name: create-incident
          description: "Create a ServiceNow incident with the given details."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief description of the incident."
            - name: description
              in: body
              type: string
              description: "Detailed description."
            - name: category
              in: body
              type: string
              description: "Incident category."
            - name: urgency
              in: body
              type: string
              description: "Urgency level (1-3)."
          call: "servicenow.create-incident"
          with:
            short_description: "{{short_description}}"
            description: "{{description}}"
            category: "{{category}}"
            urgency: "{{urgency}}"
          outputParameters:
            - name: number
              type: string
              mapping: "$.result.number"
            - name: sys_id
              type: string
              mapping: "$.result.sys_id"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://tamr.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

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.tamr.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: sharepoint
          path: "/sharepoint/document/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sharepoint
              method: GET

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.tamr.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 plain text message to a specified Slack channel. Used across workflows for notifications and alerts.

naftiko: "0.5"
info:
  label: "Slack Notification Sender"
  description: "Sends a plain text message to a specified Slack channel. Used across workflows for notifications and alerts."
  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 or ID."
            - name: text
              in: body
              type: string
              description: "Message text to send."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{text}}"
          outputParameters:
            - name: ts
              type: string
              mapping: "$.ts"
            - name: ok
              type: boolean
              mapping: "$.ok"
  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.tamr.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Queries a Snowflake table and returns the current row count. Used by data engineers to verify data loads and check dataset completeness.

naftiko: "0.5"
info:
  label: "Snowflake Dataset Row Count"
  description: "Queries a Snowflake table and returns the current row count. Used by data engineers to verify data loads and check dataset completeness."
  tags:
    - data-quality
    - snowflake
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: data-ops
      port: 8080
      tools:
        - name: get-row-count
          description: "Return the row count for a given Snowflake table."
          inputParameters:
            - name: database
              in: body
              type: string
              description: "The Snowflake database name."
            - name: schema
              in: body
              type: string
              description: "The Snowflake schema name."
            - name: table
              in: body
              type: string
              description: "The Snowflake table name."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT COUNT(*) AS row_count FROM {{database}}.{{schema}}.{{table}}"
          outputParameters:
            - name: row_count
              type: integer
              mapping: "$.data[0][0]"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Executes an arbitrary SQL query against Snowflake and returns the results. Used by analysts and data engineers for ad-hoc data validation.

naftiko: "0.5"
info:
  label: "Snowflake Query Runner"
  description: "Executes an arbitrary SQL query against Snowflake and returns the results. Used by analysts and data engineers for ad-hoc data validation."
  tags:
    - data-quality
    - snowflake
    - analytics
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: "The SQL statement to execute."
            - name: database
              in: body
              type: string
              description: "Snowflake database context."
            - name: schema
              in: body
              type: string
              description: "Snowflake schema context."
          call: "snowflake.execute-query"
          with:
            statement: "{{statement}}"
            database: "{{database}}"
            schema: "{{schema}}"
          outputParameters:
            - name: data
              type: array
              mapping: "$.data"
            - name: row_count
              type: integer
              mapping: "$.resultSetMetaData.numRows"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves the column names, data types, and nullable flags for a given Snowflake table. Used by data engineers during schema mapping preparation.

naftiko: "0.5"
info:
  label: "Snowflake Table Schema Viewer"
  description: "Retrieves the column names, data types, and nullable flags for a given Snowflake table. Used by data engineers during schema mapping preparation."
  tags:
    - data-integration
    - snowflake
    - schema
capability:
  exposes:
    - type: mcp
      namespace: schema-viewer
      port: 8080
      tools:
        - name: get-table-schema
          description: "Return column definitions for a Snowflake table."
          inputParameters:
            - name: database
              in: body
              type: string
              description: "Snowflake database name."
            - name: schema
              in: body
              type: string
              description: "Snowflake schema name."
            - name: table
              in: body
              type: string
              description: "Snowflake table name."
          call: "snowflake.execute-query"
          with:
            statement: "DESCRIBE TABLE {{database}}.{{schema}}.{{table}}"
          outputParameters:
            - name: columns
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Submits a Databricks Spark job to cleanse and normalize raw records before they are ingested into Tamr for mastering. Monitors job completion and logs results.

naftiko: "0.5"
info:
  label: "Spark Job Trigger for Record Pre-Processing"
  description: "Submits a Databricks Spark job to cleanse and normalize raw records before they are ingested into Tamr for mastering. Monitors job completion and logs results."
  tags:
    - data-integration
    - databricks
    - apache-spark
    - tamr
    - data-cleansing
capability:
  exposes:
    - type: mcp
      namespace: preprocessing
      port: 8080
      tools:
        - name: preprocess-records
          description: "Submit a Databricks Spark job for record cleansing and normalization before Tamr ingestion."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "Databricks job ID for the preprocessing job."
            - name: source_path
              in: body
              type: string
              description: "Source data path for input records."
            - name: output_path
              in: body
              type: string
              description: "Output path for cleansed records."
          steps:
            - name: run-spark-job
              type: call
              call: "databricks.run-job"
              with:
                job_id: "{{job_id}}"
                notebook_params:
                  source_path: "{{source_path}}"
                  output_path: "{{output_path}}"
            - name: ingest-to-tamr
              type: call
              call: "tamr.create-dataset"
              with:
                dataset_name: "preprocessed_records"
                s3_uri: "{{output_path}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://tamr.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: create-dataset
              method: POST

Pulls supplier records from SAP, runs them through Tamr categorization, enriches with Dun & Bradstreet firmographic data, and writes the enriched supplier master to Snowflake.

naftiko: "0.5"
info:
  label: "Supplier Data Enrichment Orchestrator"
  description: "Pulls supplier records from SAP, runs them through Tamr categorization, enriches with Dun & Bradstreet firmographic data, and writes the enriched supplier master to Snowflake."
  tags:
    - data-mastering
    - supplier
    - sap
    - tamr
    - snowflake
    - enrichment
capability:
  exposes:
    - type: mcp
      namespace: mdm-supplier
      port: 8080
      tools:
        - name: enrich-supplier-master
          description: "Given a SAP company code, extract suppliers, categorize in Tamr, enrich via D&B, and load to Snowflake."
          inputParameters:
            - name: company_code
              in: body
              type: string
              description: "The SAP company code to filter suppliers."
            - name: tamr_project
              in: body
              type: string
              description: "The Tamr categorization project name."
          steps:
            - name: extract-suppliers
              type: call
              call: "sap.get-suppliers"
              with:
                company_code: "{{company_code}}"
            - name: categorize
              type: call
              call: "tamr.run-categorization"
              with:
                project_name: "{{tamr_project}}"
                input_records: "{{extract-suppliers.results}}"
            - name: enrich-dnb
              type: call
              call: "dnb.match-and-enrich"
              with:
                records: "{{categorize.output_records}}"
            - name: load-snowflake
              type: call
              call: "snowflake.load-data"
              with:
                database: "MDM_DB"
                schema: "SUPPLIERS"
                table: "ENRICHED_SUPPLIER_MASTER"
                data_ref: "{{enrich-dnb.enriched_records}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://tamr-sap.s4hana.cloud/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: suppliers
          path: "/A_Supplier"
          inputParameters:
            - name: $filter
              in: query
          operations:
            - name: get-suppliers
              method: GET
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: categorization
          path: "/projects/{{project_name}}/categorize"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-categorization
              method: POST
    - type: http
      namespace: dnb
      baseUri: "https://plus.dnb.com/v1"
      authentication:
        type: bearer
        token: "$secrets.dnb_api_token"
      resources:
        - name: match
          path: "/match/cleanseMatch"
          operations:
            - name: match-and-enrich
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: data-load
          path: "/statements"
          operations:
            - name: load-data
              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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

After golden records are published to Snowflake from Tamr, triggers a Tableau extract refresh and sends a Slack notification to the analytics team.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Refresh After MDM Publish"
  description: "After golden records are published to Snowflake from Tamr, triggers a Tableau extract refresh and sends a Slack notification to the analytics team."
  tags:
    - data-mastering
    - tamr
    - tableau
    - slack
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: analytics-refresh
      port: 8080
      tools:
        - name: refresh-tableau-after-publish
          description: "Trigger Tableau extract refresh after Tamr golden record publication and notify via Slack."
          inputParameters:
            - name: tamr_project
              in: body
              type: string
              description: "Tamr mastering project name."
            - name: tableau_datasource_id
              in: body
              type: string
              description: "Tableau datasource ID to refresh."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for notification."
          steps:
            - name: check-publish
              type: call
              call: "tamr.get-project-status"
              with:
                project_name: "{{tamr_project}}"
            - name: refresh-tableau
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "{{tableau_datasource_id}}"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Tableau datasource refreshed with latest golden records from {{tamr_project}}. Match rate: {{check-publish.matchRate}}."
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET
    - type: http
      namespace: tableau
      baseUri: "https://tamr.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/{{site_id}}/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              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

Triggers a Tamr categorization project, which uses ML to classify records into a predefined taxonomy. Returns the number of records classified and the distribution across categories.

naftiko: "0.5"
info:
  label: "Tamr Categorization Project Runner"
  description: "Triggers a Tamr categorization project, which uses ML to classify records into a predefined taxonomy. Returns the number of records classified and the distribution across categories."
  tags:
    - data-mastering
    - tamr
    - categorization
    - machine-learning
capability:
  exposes:
    - type: mcp
      namespace: categorization
      port: 8080
      tools:
        - name: run-categorization
          description: "Trigger a Tamr categorization project and return classification results."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr categorization project name."
          call: "tamr.run-categorization"
          with:
            project_name: "{{project_name}}"
          outputParameters:
            - name: records_classified
              type: integer
              mapping: "$.recordsClassified"
            - name: category_distribution
              type: object
              mapping: "$.categoryDistribution"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: categorization
          path: "/projects/{{project_name}}/categorize"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: run-categorization
              method: POST

Fetches the entity clusters for a given Tamr mastering project and returns cluster IDs, member counts, and representative records. Used by data stewards for cluster review.

naftiko: "0.5"
info:
  label: "Tamr Cluster Viewer"
  description: "Fetches the entity clusters for a given Tamr mastering project and returns cluster IDs, member counts, and representative records. Used by data stewards for cluster review."
  tags:
    - data-mastering
    - tamr
    - entity-resolution
capability:
  exposes:
    - type: mcp
      namespace: mdm-review
      port: 8080
      tools:
        - name: get-clusters
          description: "Retrieve entity clusters for a Tamr mastering project including cluster IDs and member counts."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
            - name: limit
              in: body
              type: integer
              description: "Maximum number of clusters to return."
          call: "tamr.list-clusters"
          with:
            project_name: "{{project_name}}"
            limit: "{{limit}}"
          outputParameters:
            - name: clusters
              type: array
              mapping: "$.clusters"
            - name: total_count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: clusters
          path: "/projects/{{project_name}}/publishedClusters"
          inputParameters:
            - name: project_name
              in: path
            - name: limit
              in: query
          operations:
            - name: list-clusters
              method: GET

Returns the list of attributes (column names and types) for a Tamr dataset. Used by data engineers during schema mapping.

naftiko: "0.5"
info:
  label: "Tamr Dataset Attribute Viewer"
  description: "Returns the list of attributes (column names and types) for a Tamr dataset. Used by data engineers during schema mapping."
  tags:
    - data-mastering
    - tamr
    - schema
capability:
  exposes:
    - type: mcp
      namespace: dataset-schema
      port: 8080
      tools:
        - name: get-dataset-attributes
          description: "List attributes for a Tamr dataset."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Tamr dataset ID."
          call: "tamr.get-attributes"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: attributes
              type: array
              mapping: "$.attributes"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: attributes
          path: "/datasets/{{dataset_id}}/attributes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-attributes
              method: GET

Lists all datasets in a Tamr instance with their names, record counts, and creation dates. Used by data engineers for inventory and audit purposes.

naftiko: "0.5"
info:
  label: "Tamr Dataset List"
  description: "Lists all datasets in a Tamr instance with their names, record counts, and creation dates. Used by data engineers for inventory and audit purposes."
  tags:
    - data-mastering
    - tamr
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: tamr-admin
      port: 8080
      tools:
        - name: list-datasets
          description: "List all datasets in the Tamr instance with name, record count, and created date."
          inputParameters: []
          call: "tamr.list-datasets"
          with: {}
          outputParameters:
            - name: datasets
              type: array
              mapping: "$.items"
            - name: total
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: list-datasets
              method: GET

Retrieves data profile for a Tamr dataset.

naftiko: "0.5"
info:
  label: "Tamr Dataset Profile"
  description: "Retrieves data profile for a Tamr dataset."
  tags:
    - data-quality
    - tamr
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: get-tamr
          description: "Retrieves data profile for a Tamr dataset."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tamr dataset profile identifier."
          call: "data-quality-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: data-quality-api
      baseUri: "https://api.tamr.com/data-quality/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: tamr
          path: "/tamr/dataset/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tamr
              method: GET

Retrieves a golden record from Tamr by entity ID.

naftiko: "0.5"
info:
  label: "Tamr Golden Record Lookup"
  description: "Retrieves a golden record from Tamr by entity ID."
  tags:
    - data-mastering
    - tamr
capability:
  exposes:
    - type: mcp
      namespace: data-mastering
      port: 8080
      tools:
        - name: get-tamr
          description: "Retrieves a golden record from Tamr by entity ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tamr golden record lookup identifier."
          call: "data-mastering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: data-mastering-api
      baseUri: "https://api.tamr.com/data-mastering/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: tamr
          path: "/tamr/golden/record/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tamr
              method: GET

Retrieves the precision, recall, and F1 score for a Tamr mastering project's ML model. Used by data scientists to evaluate model performance.

naftiko: "0.5"
info:
  label: "Tamr ML Model Metrics Viewer"
  description: "Retrieves the precision, recall, and F1 score for a Tamr mastering project's ML model. Used by data scientists to evaluate model performance."
  tags:
    - data-mastering
    - tamr
    - machine-learning
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: ml-metrics
      port: 8080
      tools:
        - name: get-model-metrics
          description: "Retrieve ML model performance metrics for a Tamr mastering project."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
          call: "tamr.get-model-metrics"
          with:
            project_name: "{{project_name}}"
          outputParameters:
            - name: precision
              type: number
              mapping: "$.precision"
            - name: recall
              type: number
              mapping: "$.recall"
            - name: f1_score
              type: number
              mapping: "$.f1Score"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: model-metrics
          path: "/projects/{{project_name}}/modelMetrics"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-model-metrics
              method: GET

Returns the estimated number of record pairs for a Tamr mastering project, helping data engineers plan compute resources before running a full mastering job.

naftiko: "0.5"
info:
  label: "Tamr Pair Estimate Lookup"
  description: "Returns the estimated number of record pairs for a Tamr mastering project, helping data engineers plan compute resources before running a full mastering job."
  tags:
    - data-mastering
    - tamr
    - capacity-planning
capability:
  exposes:
    - type: mcp
      namespace: mdm-planning
      port: 8080
      tools:
        - name: get-pair-estimates
          description: "Retrieve pair count estimates for a Tamr mastering project."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
          call: "tamr.get-pair-estimates"
          with:
            project_name: "{{project_name}}"
          outputParameters:
            - name: estimated_pairs
              type: integer
              mapping: "$.estimatedPairCount"
            - name: record_count
              type: integer
              mapping: "$.inputRecordCount"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: pair-estimates
          path: "/projects/{{project_name}}/estimatedPairCounts"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-pair-estimates
              method: GET

Retrieves the status and pair metrics for a Tamr mastering project and returns match-rate, cluster count, and last-run timestamp. Used by data stewards to monitor mastering quality.

naftiko: "0.5"
info:
  label: "Tamr Project Health Check"
  description: "Retrieves the status and pair metrics for a Tamr mastering project and returns match-rate, cluster count, and last-run timestamp. Used by data stewards to monitor mastering quality."
  tags:
    - data-mastering
    - monitoring
    - tamr
    - data-quality
capability:
  exposes:
    - type: mcp
      namespace: mdm-monitoring
      port: 8080
      tools:
        - name: get-project-health
          description: "Look up a Tamr mastering project by name and return match-rate, cluster count, and last-run timestamp."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
          call: "tamr.get-project-status"
          with:
            project_name: "{{project_name}}"
          outputParameters:
            - name: match_rate
              type: number
              mapping: "$.matchRate"
            - name: cluster_count
              type: integer
              mapping: "$.clusterCount"
            - name: last_run
              type: string
              mapping: "$.lastRunTimestamp"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects/{{project_name}}"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-project-status
              method: GET

Lists all Tamr projects with their names, types, and statuses. Used by administrators for project inventory management.

naftiko: "0.5"
info:
  label: "Tamr Project List"
  description: "Lists all Tamr projects with their names, types, and statuses. Used by administrators for project inventory management."
  tags:
    - data-mastering
    - tamr
    - administration
capability:
  exposes:
    - type: mcp
      namespace: tamr-projects
      port: 8080
      tools:
        - name: list-projects
          description: "List all Tamr projects with name, type, and status."
          inputParameters: []
          call: "tamr.list-projects"
          with: {}
          outputParameters:
            - name: projects
              type: array
              mapping: "$.items"
            - name: total
              type: integer
              mapping: "$.total"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: projects
          path: "/projects"
          operations:
            - name: list-projects
              method: GET

Retrieves status of a Tamr publish operation.

naftiko: "0.5"
info:
  label: "Tamr Publish Status"
  description: "Retrieves status of a Tamr publish operation."
  tags:
    - data-mastering
    - tamr
capability:
  exposes:
    - type: mcp
      namespace: data-mastering
      port: 8080
      tools:
        - name: get-tamr
          description: "Retrieves status of a Tamr publish operation."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tamr publish status identifier."
          call: "data-mastering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: data-mastering-api
      baseUri: "https://api.tamr.com/data-mastering/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: tamr
          path: "/tamr/publish/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tamr
              method: GET

Retrieves status of a Tamr recipe execution.

naftiko: "0.5"
info:
  label: "Tamr Recipe Status"
  description: "Retrieves status of a Tamr recipe execution."
  tags:
    - data-mastering
    - tamr
capability:
  exposes:
    - type: mcp
      namespace: data-mastering
      port: 8080
      tools:
        - name: get-tamr
          description: "Retrieves status of a Tamr recipe execution."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tamr recipe status identifier."
          call: "data-mastering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: data-mastering-api
      baseUri: "https://api.tamr.com/data-mastering/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: tamr
          path: "/tamr/recipe/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tamr
              method: GET

Returns the record count for a specific Tamr input dataset. Used by data engineers to validate that expected record volumes have been loaded.

naftiko: "0.5"
info:
  label: "Tamr Source Record Count"
  description: "Returns the record count for a specific Tamr input dataset. Used by data engineers to validate that expected record volumes have been loaded."
  tags:
    - data-mastering
    - tamr
    - data-quality
capability:
  exposes:
    - type: mcp
      namespace: dataset-stats
      port: 8080
      tools:
        - name: get-dataset-record-count
          description: "Return the record count for a Tamr input dataset."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Tamr dataset ID."
          call: "tamr.get-dataset-stats"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: record_count
              type: integer
              mapping: "$.recordCount"
            - name: last_updated
              type: string
              mapping: "$.lastUpdated"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: dataset-stats
          path: "/datasets/{{dataset_id}}/stats"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-dataset-stats
              method: GET

Exports the verified training labels from a Tamr mastering project for offline analysis. Returns label pairs with match/no-match decisions and confidence scores.

naftiko: "0.5"
info:
  label: "Tamr Training Label Export"
  description: "Exports the verified training labels from a Tamr mastering project for offline analysis. Returns label pairs with match/no-match decisions and confidence scores."
  tags:
    - data-mastering
    - tamr
    - machine-learning
    - training-data
capability:
  exposes:
    - type: mcp
      namespace: ml-training
      port: 8080
      tools:
        - name: export-training-labels
          description: "Export verified training label pairs from a Tamr mastering project."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Tamr mastering project name."
          call: "tamr.get-training-labels"
          with:
            project_name: "{{project_name}}"
          outputParameters:
            - name: labels
              type: array
              mapping: "$.labels"
            - name: total_labeled
              type: integer
              mapping: "$.totalLabeled"
  consumes:
    - type: http
      namespace: tamr
      baseUri: "https://tamr.tamr.com/api/versioned/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: training-labels
          path: "/projects/{{project_name}}/verifiedPairs"
          inputParameters:
            - name: project_name
              in: path
          operations:
            - name: get-training-labels
              method: GET

Retrieves unresolved cluster count for a Tamr project.

naftiko: "0.5"
info:
  label: "Tamr Unresolved Cluster Count"
  description: "Retrieves unresolved cluster count for a Tamr project."
  tags:
    - data-mastering
    - tamr
capability:
  exposes:
    - type: mcp
      namespace: data-mastering
      port: 8080
      tools:
        - name: get-tamr
          description: "Retrieves unresolved cluster count for a Tamr project."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The tamr unresolved cluster count identifier."
          call: "data-mastering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: data-mastering-api
      baseUri: "https://api.tamr.com/data-mastering/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: tamr
          path: "/tamr/unresolved/cluster/count/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-tamr
              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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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 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.tamr.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.tamr.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tamr_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

After Tamr deduplicates vendor records, queries Snowflake for aggregated spend by golden vendor ID, generates a spend summary, and posts it to a Confluence page for procurement review.

naftiko: "0.5"
info:
  label: "Vendor Spend Analysis After Mastering"
  description: "After Tamr deduplicates vendor records, queries Snowflake for aggregated spend by golden vendor ID, generates a spend summary, and posts it to a Confluence page for procurement review."
  tags:
    - data-mastering
    - tamr
    - snowflake
    - confluence
    - procurement
    - spend-analysis
capability:
  exposes:
    - type: mcp
      namespace: spend-analysis
      port: 8080
      tools:
        - name: analyze-vendor-spend
          description: "Query deduplicated vendor spend from Snowflake and publish analysis to Confluence."
          inputParameters:
            - name: snowflake_view
              in: body
              type: string
              description: "Snowflake view containing golden vendor spend data."
            - name: confluence_space
              in: body
              type: string
              description: "Confluence space key for the report."
            - name: confluence_title
              in: body
              type: string
              description: "Title for the Confluence page."
          steps:
            - name: query-spend
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT golden_vendor_id, vendor_name, SUM(spend_amount) as total_spend FROM {{snowflake_view}} GROUP BY golden_vendor_id, vendor_name ORDER BY total_spend DESC LIMIT 100"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "{{confluence_space}}"
                title: "{{confluence_title}}"
                body: "Top vendor spend after MDM deduplication: {{query-spend.data}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://tamr.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://tamr.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

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.tamr.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.tamr_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET