ConocoPhillips Capabilities

Naftiko 0.5 capability definitions for ConocoPhillips - 144 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Prepares an asset divestiture data room by collecting production history from SAP, financial data from Snowflake, legal documents from SharePoint, and setting up secure access in Box for prospective buyers.

naftiko: "0.5"
info:
  label: "Asset Divestiture Data Room Orchestrator"
  description: "Prepares an asset divestiture data room by collecting production history from SAP, financial data from Snowflake, legal documents from SharePoint, and setting up secure access in Box for prospective buyers."
  tags:
    - finance
    - energy
    - sap
    - snowflake
    - sharepoint
    - box
capability:
  exposes:
    - type: mcp
      namespace: corporate-development
      port: 8080
      tools:
        - name: prepare-data-room
          description: "Orchestrate data room preparation for asset divestiture: collect production, financial, and legal data, and set up secure access."
          inputParameters:
            - name: asset_id
              in: body
              type: string
              description: "The asset package identifier."
            - name: project_name
              in: body
              type: string
              description: "The divestiture project name."
          steps:
            - name: get-production-history
              type: call
              call: "sap.get-asset-production-history"
              with:
                asset_id: "{{asset_id}}"
            - name: get-financial-data
              type: call
              call: "snowflake.query-asset-financials"
              with:
                asset_id: "{{asset_id}}"
            - name: collect-legal-docs
              type: call
              call: "sharepoint.get-documents"
              with:
                library: "LegalDocuments"
                folder: "{{asset_id}}"
            - name: create-data-room
              type: call
              call: "box.create-folder"
              with:
                name: "DataRoom-{{project_name}}"
                parent_id: "0"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: assets
          path: "/production/assets/{{asset_id}}/history"
          inputParameters:
            - name: asset_id
              in: path
          operations:
            - name: get-asset-production-history
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-asset-financials
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/drive/items"
          operations:
            - name: get-documents
              method: GET
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders"
          operations:
            - name: create-folder
              method: POST

Calculates ARO from SAP asset data, validates in Snowflake, and publishes to Confluence for audit review.

naftiko: "0.5"
info:
  label: "Asset Retirement Obligation Orchestrator"
  description: "Calculates ARO from SAP asset data, validates in Snowflake, and publishes to Confluence for audit review."
  tags:
    - finance
    - sap
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: asset-retirement-obligati
      port: 8080
      tools:
        - name: asset-retirement-obligation
          description: "Calculates ARO from SAP asset data."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Asset Retirement Obligation"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Retrieves the current state of AWS CloudWatch alarms for ConocoPhillips cloud workloads, returning alarm name, state, and last state change timestamp.

naftiko: "0.5"
info:
  label: "AWS CloudWatch Alarm Status Lookup"
  description: "Retrieves the current state of AWS CloudWatch alarms for ConocoPhillips cloud workloads, returning alarm name, state, and last state change timestamp."
  tags:
    - monitoring
    - it
    - aws
    - cloudwatch
capability:
  exposes:
    - type: mcp
      namespace: cloud-monitoring
      port: 8080
      tools:
        - name: get-cloudwatch-alarms
          description: "Look up CloudWatch alarm status for a specific namespace. Returns alarm names, states, and timestamps."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "The CloudWatch metric namespace."
          call: "cloudwatch.describe-alarms"
          with:
            namespace: "{{namespace}}"
          outputParameters:
            - name: alarms
              type: array
              mapping: "$.MetricAlarms"
              items:
                - name: alarm_name
                  type: string
                  mapping: "$.AlarmName"
                - name: state
                  type: string
                  mapping: "$.StateValue"
                - name: last_updated
                  type: string
                  mapping: "$.StateUpdatedTimestamp"
  consumes:
    - type: http
      namespace: cloudwatch
      baseUri: "https://monitoring.us-east-1.amazonaws.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.aws_auth_header"
        placement: header
      resources:
        - name: alarms
          path: "/"
          operations:
            - name: describe-alarms
              method: POST

When AWS Cost Anomaly Detection flags a spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "AWS Cost Anomaly Alert Handler"
  description: "When AWS Cost Anomaly Detection flags a spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams."
  tags:
    - cloud
    - finops
    - aws
    - servicenow
    - microsoft-teams
    - cost-management
capability:
  exposes:
    - type: mcp
      namespace: cloud-finops
      port: 8080
      tools:
        - name: handle-aws-cost-anomaly
          description: "Given an AWS account ID and anomalous service and spend amount, create a ServiceNow cost ticket and alert the FinOps team in Teams."
          inputParameters:
            - name: aws_account_id
              in: body
              type: string
              description: "The AWS account ID where the anomaly occurred."
            - name: anomaly_amount
              in: body
              type: number
              description: "The anomalous incremental spend in USD."
            - name: aws_service
              in: body
              type: string
              description: "The AWS service responsible for the spend spike."
          steps:
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "AWS cost anomaly: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}}"
                category: "cloud_cost"
                urgency: "2"
            - name: alert-finops
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "finops-team"
                message: "AWS cost spike: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}} | ServiceNow: {{create-ticket.number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves seismic survey data file metadata from AWS S3, returning file size, last modified date, and pre-signed download URL for geoscience analysis.

naftiko: "0.5"
info:
  label: "AWS S3 Seismic Data Retrieval"
  description: "Retrieves seismic survey data file metadata from AWS S3, returning file size, last modified date, and pre-signed download URL for geoscience analysis."
  tags:
    - energy
    - geoscience
    - aws
    - data
capability:
  exposes:
    - type: mcp
      namespace: geoscience-data
      port: 8080
      tools:
        - name: get-seismic-file
          description: "Retrieve seismic data file metadata and download URL from S3. Returns file details and a pre-signed URL."
          inputParameters:
            - name: survey_id
              in: body
              type: string
              description: "The seismic survey identifier."
            - name: file_key
              in: body
              type: string
              description: "The S3 object key for the seismic data file."
          call: "aws-s3.get-object-metadata"
          with:
            bucket: "cop-seismic-data"
            key: "{{survey_id}}/{{file_key}}"
          outputParameters:
            - name: file_size_mb
              type: number
              mapping: "$.ContentLength"
            - name: last_modified
              type: string
              mapping: "$.LastModified"
            - name: download_url
              type: string
              mapping: "$.presignedUrl"
  consumes:
    - type: http
      namespace: aws-s3
      baseUri: "https://s3.us-west-2.amazonaws.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.aws_s3_auth"
        placement: header
      resources:
        - name: objects
          path: "/cop-seismic-data/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: get-object-metadata
              method: HEAD

Retrieves current crude oil spot prices from Bloomberg.

naftiko: "0.5"
info:
  label: "Bloomberg Crude Oil Price Lookup"
  description: "Retrieves current crude oil spot prices from Bloomberg."
  tags:
    - trading
    - bloomberg
capability:
  exposes:
    - type: mcp
      namespace: oil-prices
      port: 8080
      tools:
        - name: get-crude-price
          description: "Look up crude oil spot price."
          inputParameters:
            - name: benchmark
              in: body
              type: string
              description: "Price benchmark (e.g., WTI, Brent)."
          call: "bloomberg.get-price"
          with:
            benchmark: "{{benchmark}}"
          outputParameters:
            - name: price_usd
              type: number
              mapping: "$.data.price"
            - name: change_pct
              type: number
              mapping: "$.data.change_pct"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/v1"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: prices
          path: "/data/commodities/{{benchmark}}"
          inputParameters:
            - name: benchmark
              in: path
          operations:
            - name: get-price
              method: GET

Fetches energy commodity prices from Bloomberg.

naftiko: "0.5"
info:
  label: "Bloomberg Energy Market Price Snapshot"
  description: "Fetches energy commodity prices from Bloomberg."
  tags:
    - trading
    - bloomberg
    - energy-markets
capability:
  exposes:
    - type: mcp
      namespace: market-prices
      port: 8080
      tools:
        - name: get-energy-prices
          description: "Look up energy prices by Bloomberg ticker."
          inputParameters:
            - name: ticker
              in: body
              type: string
              description: "Bloomberg ticker."
          call: bloomberg.get-price
          with:
            ticker: "{{ticker}}"
          outputParameters:
            - name: bid
              type: number
              mapping: "$.data.bid"
            - name: ask
              type: number
              mapping: "$.data.ask"
            - name: last_trade
              type: number
              mapping: "$.data.lastTrade"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/fields"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: prices
          path: "/{{ticker}}/snapshot"
          inputParameters:
            - name: ticker
              in: path
          operations:
            - name: get-price
              method: GET

Retrieves Henry Hub natural gas forward curve pricing from Bloomberg Enterprise Data for the next twelve months, returning settlement prices and implied volatility.

naftiko: "0.5"
info:
  label: "Bloomberg Natural Gas Forward Curve Lookup"
  description: "Retrieves Henry Hub natural gas forward curve pricing from Bloomberg Enterprise Data for the next twelve months, returning settlement prices and implied volatility."
  tags:
    - energy
    - trading
    - bloomberg
    - natural-gas
capability:
  exposes:
    - type: mcp
      namespace: market-data
      port: 8080
      tools:
        - name: get-natgas-forward-curve
          description: "Look up Henry Hub natural gas forward curve from Bloomberg. Returns monthly settlement prices and volatility."
          inputParameters:
            - name: months_forward
              in: body
              type: number
              description: "Number of months forward to retrieve (max 12)."
          call: "bloomberg.get-forward-curve"
          with:
            ticker: "NG"
            months: "{{months_forward}}"
          outputParameters:
            - name: curve
              type: array
              mapping: "$.data.forwardCurve"
              items:
                - name: month
                  type: string
                  mapping: "$.deliveryMonth"
                - name: settlement_price
                  type: number
                  mapping: "$.settlementPrice"
                - name: implied_vol
                  type: number
                  mapping: "$.impliedVolatility"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: forward-curves
          path: "/commodities/{{ticker}}/forward-curve"
          inputParameters:
            - name: ticker
              in: path
          operations:
            - name: get-forward-curve
              method: GET

Pulls capital project actuals from SAP, compares against forecasts in Snowflake, generates a variance report in Power BI, and posts a budget alert to Microsoft Teams when variance exceeds threshold.

naftiko: "0.5"
info:
  label: "Capital Project Budget Review Orchestrator"
  description: "Pulls capital project actuals from SAP, compares against forecasts in Snowflake, generates a variance report in Power BI, and posts a budget alert to Microsoft Teams when variance exceeds threshold."
  tags:
    - finance
    - energy
    - sap
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: capital-projects
      port: 8080
      tools:
        - name: review-project-budget
          description: "Orchestrate a capital project budget review: pull actuals, compute variance, refresh dashboard, and alert if over threshold."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The SAP capital project WBS element."
            - name: variance_threshold_pct
              in: body
              type: number
              description: "Alert threshold for budget variance percentage."
          steps:
            - name: get-actuals
              type: call
              call: "sap.get-project-actuals"
              with:
                project_id: "{{project_id}}"
            - name: get-forecast
              type: call
              call: "snowflake.query-project-forecast"
              with:
                project_id: "{{project_id}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "capital-projects-dashboard"
            - name: post-alert
              type: call
              call: "msteams.post-message"
              with:
                channel: "capital-projects-finance"
                message: "Project {{project_id}} budget review: Actuals ${{get-actuals.total_spend}}M vs Forecast ${{get-forecast.forecast_amount}}M. Variance: {{get-forecast.variance_pct}}%."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: projects
          path: "/projects/{{project_id}}/actuals"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: get-project-actuals
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-project-forecast
              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: trigger-refresh
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Tracks carbon credits in Snowflake, validates against commitments, and publishes reports to Confluence.

naftiko: "0.5"
info:
  label: "Carbon Credit Tracking Orchestrator"
  description: "Tracks carbon credits in Snowflake, validates against commitments, and publishes reports to Confluence."
  tags:
    - sustainability
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: carbon-credit-tracking
      port: 8080
      tools:
        - name: carbon-credit-tracking
          description: "Tracks carbon credits in Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Carbon Credit Tracking"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Validates contractor safety certifications in Workday, checks compliance, and creates ServiceNow tickets for gaps.

naftiko: "0.5"
info:
  label: "Contractor Safety Compliance Orchestrator"
  description: "Validates contractor safety certifications in Workday, checks compliance, and creates ServiceNow tickets for gaps."
  tags:
    - safety
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: contractor-safety-complia
      port: 8080
      tools:
        - name: contractor-safety-compliance
          description: "Validates contractor safety certifications in Workday."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Contractor Safety Compliance for {{entity_id}}"
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers"
          operations:
            - name: get-worker
              method: GET

Verifies contractor safety certifications in Workday, assigns required orientation modules in the LMS, creates a site access badge request in ServiceNow, and notifies the site supervisor via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Contractor Safety Orientation Orchestrator"
  description: "Verifies contractor safety certifications in Workday, assigns required orientation modules in the LMS, creates a site access badge request in ServiceNow, and notifies the site supervisor via Microsoft Teams."
  tags:
    - safety
    - hr
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: contractor-safety
      port: 8080
      tools:
        - name: onboard-contractor-safety
          description: "Orchestrate contractor safety orientation: verify certs, assign training, request badge, and notify supervisor."
          inputParameters:
            - name: contractor_id
              in: body
              type: string
              description: "The contractor worker ID."
            - name: site_code
              in: body
              type: string
              description: "The field site code."
          steps:
            - name: verify-certifications
              type: call
              call: "workday.get-certifications"
              with:
                worker_id: "{{contractor_id}}"
            - name: assign-orientation
              type: call
              call: "workday.assign-learning"
              with:
                worker_id: "{{contractor_id}}"
                course_id: "SAFETY-ORIENTATION-{{site_code}}"
            - name: request-badge
              type: call
              call: "servicenow.create-request"
              with:
                category: "site_access"
                short_description: "Badge request: contractor {{contractor_id}} for site {{site_code}}"
            - name: notify-supervisor
              type: call
              call: "msteams.post-message"
              with:
                channel: "site-{{site_code}}-ops"
                message: "Contractor {{contractor_id}} orientation initiated for site {{site_code}}. Certs valid: {{verify-certifications.all_valid}}. Badge request: {{request-badge.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: certifications
          path: "/conocophillips/workers/{{worker_id}}/certifications"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-certifications
              method: GET
        - name: learning
          path: "/conocophillips/learning/assignments"
          operations:
            - name: assign-learning
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Detects corrosion rate exceedances from sensor data in Snowflake, creates a maintenance notification in SAP, opens a ServiceNow ticket for inspection, and alerts the integrity management team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Corrosion Monitoring Alert Orchestrator"
  description: "Detects corrosion rate exceedances from sensor data in Snowflake, creates a maintenance notification in SAP, opens a ServiceNow ticket for inspection, and alerts the integrity management team via Microsoft Teams."
  tags:
    - operations
    - safety
    - snowflake
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: integrity-management
      port: 8080
      tools:
        - name: handle-corrosion-alert
          description: "Orchestrate corrosion alert response: check sensor data, create SAP notification, open ticket, and alert team."
          inputParameters:
            - name: pipeline_segment_id
              in: body
              type: string
              description: "The pipeline segment identifier."
            - name: sensor_id
              in: body
              type: string
              description: "The corrosion sensor identifier."
          steps:
            - name: get-corrosion-reading
              type: call
              call: "snowflake.query-corrosion-data"
              with:
                sensor_id: "{{sensor_id}}"
            - name: create-sap-notification
              type: call
              call: "sap.create-maintenance-notification"
              with:
                equipment_id: "{{pipeline_segment_id}}"
                type: "corrosion"
                reading: "{{get-corrosion-reading.rate_mpy}}"
            - name: open-inspection-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Corrosion rate exceedance: segment {{pipeline_segment_id}}, sensor {{sensor_id}}"
                category: "pipeline_integrity"
                urgency: "2"
            - name: alert-team
              type: call
              call: "msteams.post-message"
              with:
                channel: "integrity-management"
                message: "Corrosion alert on segment {{pipeline_segment_id}}: {{get-corrosion-reading.rate_mpy}} mpy (threshold: {{get-corrosion-reading.threshold_mpy}} mpy). SAP notification: {{create-sap-notification.number}}. ServiceNow: {{open-inspection-ticket.number}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-corrosion-data
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: notifications
          path: "/plant-maintenance/notifications"
          operations:
            - name: create-maintenance-notification
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Processes crude cargo nominations by validating SAP inventory, creating trade confirmations, and notifying traders via Slack.

naftiko: "0.5"
info:
  label: "Crude Oil Cargo Nomination Orchestrator"
  description: "Processes crude cargo nominations by validating SAP inventory, creating trade confirmations, and notifying traders via Slack."
  tags:
    - trading
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: crude-oil-cargo-nominatio
      port: 8080
      tools:
        - name: crude-oil-cargo-nomination
          description: "Processes crude cargo nominations by validating SAP inventory."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Crude Oil Cargo Nomination processed"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              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

Validates crude quality test results from SAP labs, compares against specifications, and creates Jira tickets for deviations.

naftiko: "0.5"
info:
  label: "Crude Quality Assurance Orchestrator"
  description: "Validates crude quality test results from SAP labs, compares against specifications, and creates Jira tickets for deviations."
  tags:
    - downstream
    - sap
    - jira
capability:
  exposes:
    - type: mcp
      namespace: crude-quality-assurance
      port: 8080
      tools:
        - name: crude-quality-assurance
          description: "Validates crude quality test results from SAP labs."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-issue
              type: call
              call: "jira.create-issue"
              with:
                project: "OPS"
                summary: "Crude Quality Assurance"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.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

Generates daily production reports from SAP and Snowflake data, publishes to Power BI, and distributes via email.

naftiko: "0.5"
info:
  label: "Daily Production Reporting Orchestrator"
  description: "Generates daily production reports from SAP and Snowflake data, publishes to Power BI, and distributes via email."
  tags:
    - production
    - sap
    - snowflake
    - email
capability:
  exposes:
    - type: mcp
      namespace: daily-production-reportin
      port: 8080
      tools:
        - name: daily-production-reporting
          description: "Generates daily production reports from SAP and Snowflake data."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: send-email
              type: call
              call: "email.send-message"
              with:
                to: "team@conocophillips.com"
                subject: "Daily Production Reporting"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: email
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.graph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-message
              method: POST

Retrieves p95 latency metrics from Datadog for a specified application service over the last hour, returning average latency, peak latency, and error rate.

naftiko: "0.5"
info:
  label: "Datadog Application Latency Check"
  description: "Retrieves p95 latency metrics from Datadog for a specified application service over the last hour, returning average latency, peak latency, and error rate."
  tags:
    - monitoring
    - it
    - datadog
    - performance
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-app-latency
          description: "Check p95 latency for a Datadog-monitored service. Returns average latency, peak, and error rate."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name."
          call: "datadog.query-metrics"
          with:
            query: "avg:trace.http.request.duration.by_service{service:{{service_name}}}.as_count()"
          outputParameters:
            - name: avg_latency_ms
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
            - name: peak_latency_ms
              type: number
              mapping: "$.series[0].attributes.max"
            - name: error_rate
              type: number
              mapping: "$.series[0].attributes.error_rate"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: query-metrics
              method: GET

When a Datadog monitor triggers a critical infrastructure alert, automatically creates a ServiceNow P1 incident and pages the on-call team in Teams.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Alert to ServiceNow"
  description: "When a Datadog monitor triggers a critical infrastructure alert, automatically creates a ServiceNow P1 incident and pages the on-call team in Teams."
  tags:
    - observability
    - itsm
    - datadog
    - servicenow
    - microsoft-teams
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: infra-ops
      port: 8080
      tools:
        - name: handle-infra-alert
          description: "Given a Datadog monitor ID and alert details, create a ServiceNow P1 incident and page the on-call team in Teams."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor ID that triggered the alert."
            - name: monitor_name
              in: body
              type: string
              description: "The Datadog monitor name."
            - name: alert_message
              in: body
              type: string
              description: "The alert message body from Datadog."
          steps:
            - name: get-monitor
              type: call
              call: "datadog.get-monitor"
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Infra alert: {{monitor_name}}"
                description: "{{alert_message}}\nMonitor: {{monitor_id}}\nState: {{get-monitor.overall_state}}"
                urgency: "1"
            - name: page-oncall
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "infra-oncall"
                message: "P1 Alert: {{monitor_name}} | ServiceNow: {{create-incident.number}} | {{alert_message}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks SCADA system health via Datadog monitors.

naftiko: "0.5"
info:
  label: "Datadog SCADA System Health Lookup"
  description: "Checks SCADA system health via Datadog monitors."
  tags:
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: scada-health
      port: 8080
      tools:
        - name: get-scada-health
          description: "Look up SCADA system health status."
          inputParameters:
            - name: service_tag
              in: body
              type: string
              description: "Datadog service tag for SCADA."
          call: "datadog.get-monitors"
          with:
            tags: "{{service_tag}}"
          outputParameters:
            - name: alert_count
              type: number
              mapping: "$.length"
            - name: status
              type: string
              mapping: "$.overall_state"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          operations:
            - name: get-monitors
              method: GET

Synchronizes digital twin well models by pulling real-time production data from Snowflake, updating the simulation model in AWS, comparing predicted versus actual performance, and publishing variance reports to Power BI.

naftiko: "0.5"
info:
  label: "Digital Twin Well Performance Orchestrator"
  description: "Synchronizes digital twin well models by pulling real-time production data from Snowflake, updating the simulation model in AWS, comparing predicted versus actual performance, and publishing variance reports to Power BI."
  tags:
    - energy
    - geoscience
    - snowflake
    - aws
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: digital-twin
      port: 8080
      tools:
        - name: sync-digital-twin
          description: "Orchestrate digital twin sync: pull production data, update model, compare performance, and publish report."
          inputParameters:
            - name: well_id
              in: body
              type: string
              description: "The well API number."
            - name: model_version
              in: body
              type: string
              description: "The digital twin model version."
          steps:
            - name: get-production-data
              type: call
              call: "snowflake.query-well-production"
              with:
                well_id: "{{well_id}}"
            - name: update-model
              type: call
              call: "aws-lambda.invoke-model-update"
              with:
                function_name: "digital-twin-updater"
                payload:
                  well_id: "{{well_id}}"
                  model_version: "{{model_version}}"
                  actual_data: "{{get-production-data.data}}"
            - name: compare-performance
              type: call
              call: "snowflake.query-twin-variance"
              with:
                well_id: "{{well_id}}"
                predicted: "{{update-model.predicted_output}}"
            - name: refresh-report
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "digital-twin-performance"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-well-production
              method: POST
            - name: query-twin-variance
              method: POST
    - type: http
      namespace: aws-lambda
      baseUri: "https://lambda.us-west-2.amazonaws.com/2015-03-31"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.aws_auth_header"
        placement: header
      resources:
        - name: functions
          path: "/functions/{{function_name}}/invocations"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: invoke-model-update
              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: trigger-refresh
              method: POST

Analyzes drilling costs from SAP, compares against benchmarks in Snowflake, and publishes analysis to Confluence.

naftiko: "0.5"
info:
  label: "Drilling Cost Analysis Orchestrator"
  description: "Analyzes drilling costs from SAP, compares against benchmarks in Snowflake, and publishes analysis to Confluence."
  tags:
    - upstream
    - sap
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: drilling-cost-analysis
      port: 8080
      tools:
        - name: drilling-cost-analysis
          description: "Analyzes drilling costs from SAP."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Drilling Cost Analysis"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Coordinates drilling rig schedules by pulling well program timelines from SAP, checking rig availability in ServiceNow, assigning crews in Workday, and posting the updated schedule to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Drilling Rig Scheduling Orchestrator"
  description: "Coordinates drilling rig schedules by pulling well program timelines from SAP, checking rig availability in ServiceNow, assigning crews in Workday, and posting the updated schedule to Microsoft Teams."
  tags:
    - energy
    - operations
    - sap
    - servicenow
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: drilling-ops
      port: 8080
      tools:
        - name: schedule-drilling-rig
          description: "Orchestrate drilling rig scheduling: pull program, check rig availability, assign crew, and publish schedule."
          inputParameters:
            - name: rig_id
              in: body
              type: string
              description: "The drilling rig identifier."
            - name: well_program_id
              in: body
              type: string
              description: "The well program identifier."
          steps:
            - name: get-well-program
              type: call
              call: "sap.get-well-program"
              with:
                program_id: "{{well_program_id}}"
            - name: check-rig-availability
              type: call
              call: "servicenow.check-asset-availability"
              with:
                asset_id: "{{rig_id}}"
                start_date: "{{get-well-program.spud_date}}"
            - name: assign-crew
              type: call
              call: "workday.assign-drilling-crew"
              with:
                rig_id: "{{rig_id}}"
                start_date: "{{get-well-program.spud_date}}"
                duration_days: "{{get-well-program.estimated_days}}"
            - name: publish-schedule
              type: call
              call: "msteams.post-message"
              with:
                channel: "drilling-operations"
                message: "Rig {{rig_id}} scheduled for {{get-well-program.well_name}} starting {{get-well-program.spud_date}}. Crew: {{assign-crew.crew_lead}}. Est. duration: {{get-well-program.estimated_days}} days."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: well-programs
          path: "/drilling/programs/{{program_id}}"
          inputParameters:
            - name: program_id
              in: path
          operations:
            - name: get-well-program
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: assets
          path: "/table/alm_asset"
          operations:
            - name: check-asset-availability
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: staffing
          path: "/conocophillips/staffing/assignments"
          operations:
            - name: assign-drilling-crew
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

When an environment health and safety incident is reported in ServiceNow, pulls employee details from Workday, attaches the safety training record, creates a root cause investigation in Jira, and notifies HSE leadership via Microsoft Teams.

naftiko: "0.5"
info:
  label: "EHS Incident Investigation Orchestrator"
  description: "When an environment health and safety incident is reported in ServiceNow, pulls employee details from Workday, attaches the safety training record, creates a root cause investigation in Jira, and notifies HSE leadership via Microsoft Teams."
  tags:
    - safety
    - hr
    - servicenow
    - workday
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ehs
      port: 8080
      tools:
        - name: investigate-ehs-incident
          description: "Orchestrate an EHS incident investigation: get incident details, pull employee training records, create investigation task, and alert leadership."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{incident_number}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-incident.caller_id}}"
            - name: get-training-record
              type: call
              call: "workday.get-training-history"
              with:
                worker_id: "{{get-incident.caller_id}}"
                category: "safety"
            - name: create-investigation
              type: call
              call: "jira.create-issue"
              with:
                project: "EHS"
                issue_type: "Investigation"
                summary: "EHS Investigation: {{get-incident.short_description}}"
                description: "Employee: {{get-employee.full_name}}. Last safety training: {{get-training-record.last_completion_date}}."
            - name: notify-leadership
              type: call
              call: "msteams.post-message"
              with:
                channel: "hse-leadership"
                message: "EHS Incident {{incident_number}} investigation opened ({{create-investigation.key}}): {{get-incident.short_description}}. Employee: {{get-employee.full_name}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
            - name: get-training-history
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Coordinates emergency drills by creating ServiceNow exercises, notifying participants via Slack, and logging results in Confluence.

naftiko: "0.5"
info:
  label: "Emergency Response Drill Orchestrator"
  description: "Coordinates emergency drills by creating ServiceNow exercises, notifying participants via Slack, and logging results in Confluence."
  tags:
    - safety
    - servicenow
    - slack
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: emergency-response-drill
      port: 8080
      tools:
        - name: emergency-response-drill
          description: "Coordinates emergency drills by creating ServiceNow exercises."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Emergency Response Drill for {{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Emergency Response Drill"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Emergency Response Drill processed"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              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

Aggregates Scope 1 and Scope 2 emissions data from Snowflake, maps to EPA reporting categories in SAP, generates the quarterly compliance report in SharePoint, and emails the regulatory team.

naftiko: "0.5"
info:
  label: "Emissions Reporting Orchestrator"
  description: "Aggregates Scope 1 and Scope 2 emissions data from Snowflake, maps to EPA reporting categories in SAP, generates the quarterly compliance report in SharePoint, and emails the regulatory team."
  tags:
    - sustainability
    - compliance
    - snowflake
    - sap
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: emissions
      port: 8080
      tools:
        - name: generate-emissions-report
          description: "Orchestrate quarterly emissions reporting: aggregate data, map categories, generate compliance report, and notify the team."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "Reporting quarter (e.g., 2026-Q1)."
            - name: region
              in: body
              type: string
              description: "Operating region code."
          steps:
            - name: aggregate-emissions
              type: call
              call: "snowflake.query-emissions"
              with:
                quarter: "{{quarter}}"
                region: "{{region}}"
            - name: map-epa-categories
              type: call
              call: "sap.map-emission-categories"
              with:
                emissions_data: "{{aggregate-emissions.data}}"
                framework: "EPA"
            - name: generate-report
              type: call
              call: "sharepoint.create-document"
              with:
                library: "EmissionsReports"
                filename: "emissions-{{region}}-{{quarter}}.xlsx"
                data: "{{map-epa-categories.mapped_data}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel: "sustainability-reporting"
                message: "Emissions report for {{region}} {{quarter}} ready: {{aggregate-emissions.total_co2e_tons}} tCO2e. Report: {{generate-report.url}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-emissions
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: emissions
          path: "/sustainability/emissions/map"
          operations:
            - name: map-emission-categories
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/drive/items"
          operations:
            - name: create-document
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Reconciles trading positions between SAP and Bloomberg, identifies breaks, and creates Jira tickets.

naftiko: "0.5"
info:
  label: "Energy Trading Position Reconciliation Orchestrator"
  description: "Reconciles trading positions between SAP and Bloomberg, identifies breaks, and creates Jira tickets."
  tags:
    - trading
    - sap
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: energy-trading-position-r
      port: 8080
      tools:
        - name: energy-trading-position-reconciliation
          description: "Reconciles trading positions between SAP and Bloomberg."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: create-issue
              type: call
              call: "jira.create-issue"
              with:
                project: "OPS"
                summary: "Energy Trading Position Reconciliation"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.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

Tracks remediation projects in SAP, validates compliance in ServiceNow, and publishes status to Confluence.

naftiko: "0.5"
info:
  label: "Environmental Remediation Tracking Orchestrator"
  description: "Tracks remediation projects in SAP, validates compliance in ServiceNow, and publishes status to Confluence."
  tags:
    - compliance
    - sap
    - servicenow
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: environmental-remediation
      port: 8080
      tools:
        - name: environmental-remediation-tracking
          description: "Tracks remediation projects in SAP."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Environmental Remediation Tracking for {{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Environmental Remediation Tracking"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Manages facility shutdowns by creating SAP notifications, ServiceNow change requests, and alerting stakeholders via email.

naftiko: "0.5"
info:
  label: "Facility Shutdown Notification Orchestrator"
  description: "Manages facility shutdowns by creating SAP notifications, ServiceNow change requests, and alerting stakeholders via email."
  tags:
    - operations
    - sap
    - servicenow
    - email
capability:
  exposes:
    - type: mcp
      namespace: facility-shutdown-notific
      port: 8080
      tools:
        - name: facility-shutdown-notification
          description: "Manages facility shutdowns by creating SAP notifications."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Facility Shutdown Notification for {{entity_id}}"
            - name: send-email
              type: call
              call: "email.send-message"
              with:
                to: "team@conocophillips.com"
                subject: "Facility Shutdown Notification"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: email
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.graph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-message
              method: POST

When a ServiceNow incident is raised for a field operations issue, pages the on-call engineer via Teams and logs the event in Datadog for observability.

naftiko: "0.5"
info:
  label: "Field Operations Incident Response"
  description: "When a ServiceNow incident is raised for a field operations issue, pages the on-call engineer via Teams and logs the event in Datadog for observability."
  tags:
    - itsm
    - operations
    - servicenow
    - datadog
    - microsoft-teams
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: field-ops
      port: 8080
      tools:
        - name: handle-field-incident
          description: "Given a ServiceNow incident number for a field operations issue, retrieve details, log a Datadog event, and page the on-call team in Teams."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number, e.g. INC0012345."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{incident_number}}"
            - name: log-datadog
              type: call
              call: "datadog.create-event"
              with:
                title: "Field Ops Incident: {{incident_number}}"
                text: "{{get-incident.short_description}} | Impact: {{get-incident.impact}}"
                alert_type: "error"
            - name: page-oncall
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "field-ops-oncall"
                message: "Field incident {{incident_number}}: {{get-incident.short_description}} | Priority: {{get-incident.priority}} | Location: {{get-incident.location}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Processes field safety observations by logging in SAP EHS, creating ServiceNow follow-ups, and alerting safety leads.

naftiko: "0.5"
info:
  label: "Field Safety Observation Orchestrator"
  description: "Processes field safety observations by logging in SAP EHS, creating ServiceNow follow-ups, and alerting safety leads."
  tags:
    - safety
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: field-safety-observation
      port: 8080
      tools:
        - name: field-safety-observation
          description: "Processes field safety observations by logging in SAP EHS."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Field Safety Observation for {{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Field Safety Observation processed"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              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

Monitors flare gas volumes in SAP, identifies reduction opportunities in Snowflake, and creates Jira improvement tickets.

naftiko: "0.5"
info:
  label: "Flare Gas Reduction Orchestrator"
  description: "Monitors flare gas volumes in SAP, identifies reduction opportunities in Snowflake, and creates Jira improvement tickets."
  tags:
    - sustainability
    - sap
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: flare-gas-reduction
      port: 8080
      tools:
        - name: flare-gas-reduction
          description: "Monitors flare gas volumes in SAP."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: create-issue
              type: call
              call: "jira.create-issue"
              with:
                project: "OPS"
                summary: "Flare Gas Reduction"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.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

On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, sends a Datadog event marker, and alerts the engineering team in Teams.

naftiko: "0.5"
info:
  label: "GitHub CI/CD Pipeline Failure Handler"
  description: "On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, sends a Datadog event marker, and alerts the engineering team in Teams."
  tags:
    - devops
    - cicd
    - github
    - jira
    - datadog
    - microsoft-teams
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: devops-cicd
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions workflow failure event, create a Jira bug, send a Datadog event, and alert the engineering Teams channel."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: workflow_name
              in: body
              type: string
              description: "The name of the failed GitHub Actions workflow."
            - name: branch
              in: body
              type: string
              description: "The branch on which the failure occurred."
            - name: run_id
              in: body
              type: string
              description: "The GitHub Actions workflow run ID."
          steps:
            - name: get-run-details
              type: call
              call: "github.get-workflow-run"
              with:
                repo: "{{repo}}"
                run_id: "{{run_id}}"
            - name: create-jira-bug
              type: call
              call: "jira.create-issue"
              with:
                projectKey: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}"
                description: "Run: {{run_id}}\nConclusion: {{get-run-details.conclusion}}"
            - name: log-datadog
              type: call
              call: "datadog.create-event"
              with:
                title: "CI Failure: {{repo}} {{workflow_name}}"
                text: "Branch: {{branch}}, Run: {{run_id}}"
                alert_type: "error"
            - name: alert-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "engineering-alerts"
                message: "CI Failure: {{repo}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-jira-bug.key}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks a GitHub repository for compliance with ConocoPhillips standards including branch protection rules, required reviewers, and secret scanning enablement.

naftiko: "0.5"
info:
  label: "GitHub Repository Compliance Check"
  description: "Checks a GitHub repository for compliance with ConocoPhillips standards including branch protection rules, required reviewers, and secret scanning enablement."
  tags:
    - security
    - compliance
    - github
    - devops
capability:
  exposes:
    - type: mcp
      namespace: dev-compliance
      port: 8080
      tools:
        - name: check-repo-compliance
          description: "Verify GitHub repository compliance settings. Returns branch protection status, reviewer requirements, and secret scanning state."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name (org/repo format)."
          call: "github.get-repo-settings"
          with:
            repo: "{{repo_name}}"
          outputParameters:
            - name: branch_protection_enabled
              type: boolean
              mapping: "$.branchProtection.enabled"
            - name: required_reviewers
              type: number
              mapping: "$.branchProtection.requiredReviewers"
            - name: secret_scanning_enabled
              type: boolean
              mapping: "$.securitySettings.secretScanning"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: repos
          path: "/repos/{{repo}}"
          inputParameters:
            - name: repo
              in: path
          operations:
            - name: get-repo-settings
              method: GET

Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Teams.

naftiko: "0.5"
info:
  label: "GitHub Security Vulnerability Triage"
  description: "Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Teams."
  tags:
    - security
    - devops
    - github
    - jira
    - microsoft-teams
    - vulnerability-management
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: triage-vulnerability-alerts
          description: "Given a GitHub repository, retrieve critical Dependabot security alerts, create Jira security tickets, and post a summary to the security Teams channel."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
          steps:
            - name: get-alerts
              type: call
              call: "github.get-dependabot-alerts"
              with:
                repo: "{{repo}}"
                severity: "critical"
            - name: create-security-ticket
              type: call
              call: "jira.create-issue"
              with:
                projectKey: "SEC"
                issuetype: "Security"
                summary: "Critical vulnerability: {{get-alerts.advisory_summary}}"
                description: "Package: {{get-alerts.package_name}}\nCVSS: {{get-alerts.cvss_score}}\nRepo: {{repo}}"
            - name: notify-security
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "security-team"
                message: "Critical vulnerability in {{repo}}: {{get-alerts.advisory_summary}} | Jira: {{create-security-ticket.key}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{repo}}/dependabot/alerts"
          inputParameters:
            - name: repo
              in: path
            - name: severity
              in: query
          operations:
            - name: get-dependabot-alerts
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Uses Anthropic Claude to summarize regulatory and HSE compliance documents from SharePoint and posts the key points to the compliance Teams channel.

naftiko: "0.5"
info:
  label: "Intelligent Document Summarization for Regulatory Reports"
  description: "Uses Anthropic Claude to summarize regulatory and HSE compliance documents from SharePoint and posts the key points to the compliance Teams channel."
  tags:
    - ai
    - automation
    - anthropic
    - sharepoint
    - microsoft-teams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: ai-compliance
      port: 8080
      tools:
        - name: summarize-regulatory-document
          description: "Given a SharePoint file path and target Teams channel, retrieve the document, send it to Claude for a compliance-focused summary, and post the result to Teams."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID containing the regulatory document."
            - name: file_path
              in: body
              type: string
              description: "The relative file path in SharePoint."
            - name: teams_channel_id
              in: body
              type: string
              description: "The Teams channel ID to post the summary to."
          steps:
            - name: get-document
              type: call
              call: "sharepoint.get-file-content"
              with:
                siteId: "{{site_id}}"
                filePath: "{{file_path}}"
            - name: summarize
              type: call
              call: "anthropic.create-message"
              with:
                model: "claude-3-5-sonnet-20241022"
                content: "Summarize this regulatory or HSE compliance document in 5 key bullet points highlighting obligations and deadlines: {{get-document.content}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "{{teams_channel_id}}"
                message: "Regulatory document summary for {{file_path}}:\n{{summarize.content}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/sites/{{siteId}}/drive/root:{{filePath}}:/content"
          inputParameters:
            - name: siteId
              in: path
            - name: filePath
              in: path
          operations:
            - name: get-file-content
              method: GET
    - type: http
      namespace: anthropic
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves the current engineering backlog from Jira for a specified project, returning open issue count, priority breakdown, and sprint velocity.

naftiko: "0.5"
info:
  label: "Jira Engineering Backlog Lookup"
  description: "Retrieves the current engineering backlog from Jira for a specified project, returning open issue count, priority breakdown, and sprint velocity."
  tags:
    - engineering
    - devops
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-engineering-backlog
          description: "Look up engineering backlog metrics from Jira. Returns open issues, priority breakdown, and velocity."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key."
          call: "jira.get-backlog"
          with:
            project: "{{project_key}}"
          outputParameters:
            - name: open_issues
              type: number
              mapping: "$.total"
            - name: critical_count
              type: number
              mapping: "$.priorityCounts.critical"
            - name: high_count
              type: number
              mapping: "$.priorityCounts.high"
            - name: sprint_velocity
              type: number
              mapping: "$.velocity"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: get-backlog
              method: GET

Retrieves completed Jira sprint data for an engineering team and posts a velocity summary to the team's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "Retrieves completed Jira sprint data for an engineering team and posts a velocity summary to the team's Microsoft Teams channel."
  tags:
    - devops
    - engineering
    - jira
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: engineering-reporting
      port: 8080
      tools:
        - name: publish-sprint-velocity
          description: "Given a Jira board ID and sprint ID, retrieve completed story points and issues, then post a velocity summary to the engineering Teams channel."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira software board ID."
            - name: sprint_id
              in: body
              type: string
              description: "The Jira sprint ID to report on."
          steps:
            - name: get-sprint-issues
              type: call
              call: "jira.get-sprint-issues"
              with:
                boardId: "{{board_id}}"
                sprintId: "{{sprint_id}}"
            - name: post-velocity
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "engineering-team"
                message: "Sprint {{sprint_id}} complete: {{get-sprint-issues.completedIssues}} issues, {{get-sprint-issues.completedPoints}} story points."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprint-issues
          path: "/board/{{boardId}}/sprint/{{sprintId}}/issue"
          inputParameters:
            - name: boardId
              in: path
            - name: sprintId
              in: path
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Audits joint venture accounts by pulling SAP billing data, validating in Snowflake, and publishing findings to Confluence.

naftiko: "0.5"
info:
  label: "Joint Venture Audit Orchestrator"
  description: "Audits joint venture accounts by pulling SAP billing data, validating in Snowflake, and publishing findings to Confluence."
  tags:
    - finance
    - sap
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: joint-venture-audit
      port: 8080
      tools:
        - name: joint-venture-audit
          description: "Audits joint venture accounts by pulling SAP billing data."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Joint Venture Audit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Performs due diligence by gathering SAP land records, analyzing in Snowflake, and publishing findings to Confluence.

naftiko: "0.5"
info:
  label: "Land Acquisition Due Diligence Orchestrator"
  description: "Performs due diligence by gathering SAP land records, analyzing in Snowflake, and publishing findings to Confluence."
  tags:
    - legal
    - sap
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: land-acquisition-due-dili
      port: 8080
      tools:
        - name: land-acquisition-due-diligence
          description: "Performs due diligence by gathering SAP land records."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Land Acquisition Due Diligence"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Identifies expiring mineral leases in SAP, generates renewal documentation in SharePoint, creates a Salesforce task for the landman, and sends a reminder via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Land Lease Renewal Orchestrator"
  description: "Identifies expiring mineral leases in SAP, generates renewal documentation in SharePoint, creates a Salesforce task for the landman, and sends a reminder via Microsoft Teams."
  tags:
    - energy
    - legal
    - sap
    - sharepoint
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: land-management
      port: 8080
      tools:
        - name: process-lease-renewal
          description: "Orchestrate a mineral lease renewal: check expiry, generate docs, assign task, and notify the landman."
          inputParameters:
            - name: lease_id
              in: body
              type: string
              description: "The SAP lease identifier."
          steps:
            - name: get-lease-details
              type: call
              call: "sap.get-lease"
              with:
                lease_id: "{{lease_id}}"
            - name: generate-renewal-docs
              type: call
              call: "sharepoint.create-document"
              with:
                library: "LeaseRenewals"
                filename: "renewal-{{lease_id}}.docx"
                template: "lease_renewal"
                data:
                  lessor: "{{get-lease-details.lessor_name}}"
                  acres: "{{get-lease-details.gross_acres}}"
                  expiry: "{{get-lease-details.expiration_date}}"
            - name: create-sf-task
              type: call
              call: "salesforce.create-task"
              with:
                subject: "Lease renewal needed: {{get-lease-details.lease_name}}"
                owner_id: "{{get-lease-details.landman_id}}"
                due_date: "{{get-lease-details.expiration_date}}"
            - name: notify-landman
              type: call
              call: "msteams.post-message"
              with:
                recipient: "{{get-lease-details.landman_email}}"
                message: "Lease {{get-lease-details.lease_name}} expires {{get-lease-details.expiration_date}}. Renewal docs: {{generate-renewal-docs.url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: leases
          path: "/real-estate/leases/{{lease_id}}"
          inputParameters:
            - name: lease_id
              in: path
          operations:
            - name: get-lease
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/drive/items"
          operations:
            - name: create-document
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/chats/messages"
          operations:
            - name: post-message
              method: POST

Responds to methane leaks by analyzing Snowflake sensor data, creating ServiceNow incidents, and alerting EHS teams via Slack.

naftiko: "0.5"
info:
  label: "Methane Leak Detection Response Orchestrator"
  description: "Responds to methane leaks by analyzing Snowflake sensor data, creating ServiceNow incidents, and alerting EHS teams via Slack."
  tags:
    - safety
    - snowflake
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: methane-leak-detection-re
      port: 8080
      tools:
        - name: methane-leak-detection-response
          description: "Responds to methane leaks by analyzing Snowflake sensor data."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Methane Leak Detection Response for {{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Methane Leak Detection Response processed"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              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

Books midstream pipeline transport capacity by checking available nominations in SAP, validating shipper credentials, confirming the booking, and logging the reservation in Snowflake for analytics.

naftiko: "0.5"
info:
  label: "Midstream Capacity Booking Orchestrator"
  description: "Books midstream pipeline transport capacity by checking available nominations in SAP, validating shipper credentials, confirming the booking, and logging the reservation in Snowflake for analytics."
  tags:
    - energy
    - midstream
    - sap
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: midstream
      port: 8080
      tools:
        - name: book-pipeline-capacity
          description: "Orchestrate a pipeline capacity booking: check nominations, validate shipper, confirm booking, and log."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The midstream pipeline identifier."
            - name: volume_mmbtu
              in: body
              type: number
              description: "Requested volume in MMBtu per day."
            - name: flow_date
              in: body
              type: string
              description: "Flow date in YYYY-MM-DD format."
          steps:
            - name: check-nominations
              type: call
              call: "sap.check-pipeline-nominations"
              with:
                pipeline_id: "{{pipeline_id}}"
                date: "{{flow_date}}"
            - name: validate-shipper
              type: call
              call: "sap.validate-shipper"
              with:
                pipeline_id: "{{pipeline_id}}"
            - name: confirm-booking
              type: call
              call: "sap.create-nomination"
              with:
                pipeline_id: "{{pipeline_id}}"
                volume: "{{volume_mmbtu}}"
                date: "{{flow_date}}"
            - name: log-reservation
              type: call
              call: "snowflake.insert-booking-record"
              with:
                pipeline_id: "{{pipeline_id}}"
                volume: "{{volume_mmbtu}}"
                date: "{{flow_date}}"
                confirmation_id: "{{confirm-booking.nomination_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: nominations
          path: "/midstream/nominations"
          operations:
            - name: check-pipeline-nominations
              method: GET
            - name: create-nomination
              method: POST
        - name: shippers
          path: "/midstream/shippers/validate"
          operations:
            - name: validate-shipper
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: insert-booking-record
              method: POST

Schedules pipeline shipments by validating SAP capacity, creating nominations, and notifying shippers via email.

naftiko: "0.5"
info:
  label: "Midstream Pipeline Scheduling Orchestrator"
  description: "Schedules pipeline shipments by validating SAP capacity, creating nominations, and notifying shippers via email."
  tags:
    - midstream
    - sap
    - email
capability:
  exposes:
    - type: mcp
      namespace: midstream-pipeline-schedu
      port: 8080
      tools:
        - name: midstream-pipeline-scheduling
          description: "Schedules pipeline shipments by validating SAP capacity."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: send-email
              type: call
              call: "email.send-message"
              with:
                to: "team@conocophillips.com"
                subject: "Midstream Pipeline Scheduling"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: email
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.graph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-message
              method: POST

When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "New Employee Onboarding Orchestrator"
  description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - okta
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision Okta, and send a Teams welcome."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "Employee start date in YYYY-MM-DD format."
          steps:
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: create-snow-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-worker.full_name}}"
                category: "hr_onboarding"
            - name: activate-okta
              type: call
              call: "okta.create-user"
              with:
                login: "{{get-worker.work_email}}"
                firstName: "{{get-worker.first_name}}"
                lastName: "{{get-worker.last_name}}"
            - name: send-welcome
              type: call
              call: "msteams.post-message"
              with:
                recipient: "{{get-worker.work_email}}"
                message: "Welcome to ConocoPhillips, {{get-worker.first_name}}! Your onboarding ticket: {{create-snow-ticket.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: okta
      baseUri: "https://conocophillips.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/chats/messages"
          operations:
            - name: post-message
              method: POST

Onboards field employees by creating Workday records, provisioning ServiceNow access, and enrolling in safety training.

naftiko: "0.5"
info:
  label: "New Field Employee Onboarding Orchestrator"
  description: "Onboards field employees by creating Workday records, provisioning ServiceNow access, and enrolling in safety training."
  tags:
    - hr
    - workday
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: new-field-employee-onboar
      port: 8080
      tools:
        - name: new-field-employee-onboarding
          description: "Onboards field employees by creating Workday records."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New Field Employee Onboarding for {{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "New Field Employee Onboarding processed"
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              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
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers"
          operations:
            - name: get-worker
              method: GET

Manages offshore platform crew rotations by pulling schedules from Workday, booking helicopter transport, updating the platform manifest in SAP, and notifying the offshore installation manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Offshore Crew Rotation Orchestrator"
  description: "Manages offshore platform crew rotations by pulling schedules from Workday, booking helicopter transport, updating the platform manifest in SAP, and notifying the offshore installation manager via Microsoft Teams."
  tags:
    - operations
    - hr
    - workday
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: offshore-ops
      port: 8080
      tools:
        - name: rotate-offshore-crew
          description: "Orchestrate an offshore crew rotation: pull schedules, book transport, update manifest, and notify the OIM."
          inputParameters:
            - name: platform_id
              in: body
              type: string
              description: "The offshore platform identifier."
            - name: rotation_date
              in: body
              type: string
              description: "Rotation date in YYYY-MM-DD format."
          steps:
            - name: get-rotation-schedule
              type: call
              call: "workday.get-crew-schedule"
              with:
                platform_id: "{{platform_id}}"
                date: "{{rotation_date}}"
            - name: book-transport
              type: call
              call: "sap.book-helicopter-flight"
              with:
                platform_id: "{{platform_id}}"
                date: "{{rotation_date}}"
                pax_count: "{{get-rotation-schedule.outgoing_count}}"
            - name: update-manifest
              type: call
              call: "sap.update-platform-manifest"
              with:
                platform_id: "{{platform_id}}"
                incoming: "{{get-rotation-schedule.incoming_crew}}"
                outgoing: "{{get-rotation-schedule.outgoing_crew}}"
            - name: notify-oim
              type: call
              call: "msteams.post-message"
              with:
                channel: "platform-{{platform_id}}-ops"
                message: "Crew rotation {{rotation_date}}: {{get-rotation-schedule.incoming_count}} incoming, {{get-rotation-schedule.outgoing_count}} outgoing. Flight: {{book-transport.flight_number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/conocophillips/staffing/schedules"
          operations:
            - name: get-crew-schedule
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: logistics
          path: "/logistics/flights"
          operations:
            - name: book-helicopter-flight
              method: POST
        - name: manifests
          path: "/offshore/manifests/{{platform_id}}"
          inputParameters:
            - name: platform_id
              in: path
          operations:
            - name: update-platform-manifest
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Plans offshore maintenance by pulling SAP schedules, coordinating logistics in ServiceNow, and notifying crews.

naftiko: "0.5"
info:
  label: "Offshore Platform Maintenance Orchestrator"
  description: "Plans offshore maintenance by pulling SAP schedules, coordinating logistics in ServiceNow, and notifying crews."
  tags:
    - operations
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: offshore-platform-mainten
      port: 8080
      tools:
        - name: offshore-platform-maintenance
          description: "Plans offshore maintenance by pulling SAP schedules."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Offshore Platform Maintenance for {{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Offshore Platform Maintenance processed"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              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

Returns the list of Okta groups an employee belongs to, including application access groups and security roles.

naftiko: "0.5"
info:
  label: "Okta Group Membership Lookup"
  description: "Returns the list of Okta groups an employee belongs to, including application access groups and security roles."
  tags:
    - security
    - identity
    - okta
    - access
capability:
  exposes:
    - type: mcp
      namespace: identity
      port: 8080
      tools:
        - name: get-user-groups
          description: "Look up Okta group memberships for a user by email. Returns group names and types."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The employee email address."
          call: "okta.get-user-groups"
          with:
            login: "{{user_email}}"
          outputParameters:
            - name: groups
              type: array
              mapping: "$.data"
              items:
                - name: group_name
                  type: string
                  mapping: "$.profile.name"
                - name: group_type
                  type: string
                  mapping: "$.type"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://conocophillips.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: user-groups
          path: "/users/{{login}}/groups"
          inputParameters:
            - name: login
              in: path
          operations:
            - name: get-user-groups
              method: GET

Retrieves Okta users with privileged application assignments for a quarterly access review and uploads the report to SharePoint.

naftiko: "0.5"
info:
  label: "Okta User Access Review"
  description: "Retrieves Okta users with privileged application assignments for a quarterly access review and uploads the report to SharePoint."
  tags:
    - identity
    - security
    - okta
    - sharepoint
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: identity-ops
      port: 8080
      tools:
        - name: run-access-review
          description: "Given an Okta group ID, retrieve all active members and their application assignments, then upload the access review report to SharePoint."
          inputParameters:
            - name: group_id
              in: body
              type: string
              description: "The Okta group ID to review for privileged access."
            - name: sharepoint_site_id
              in: body
              type: string
              description: "The SharePoint site ID where the access review report should be stored."
          steps:
            - name: get-group-members
              type: call
              call: "okta.get-group-members"
              with:
                groupId: "{{group_id}}"
            - name: upload-report
              type: call
              call: "sharepoint.create-file"
              with:
                siteId: "{{sharepoint_site_id}}"
                fileName: "access-review-{{group_id}}.json"
                content: "{{get-group-members.members}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://conocophillips.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: group-members
          path: "/groups/{{groupId}}/users"
          inputParameters:
            - name: groupId
              in: path
          operations:
            - name: get-group-members
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/sites/{{siteId}}/drive/root/children"
          inputParameters:
            - name: siteId
              in: path
          operations:
            - name: create-file
              method: POST

Aggregates operational KPIs from Snowflake, benchmarks against targets, and publishes review to Confluence.

naftiko: "0.5"
info:
  label: "Operational Excellence Review Orchestrator"
  description: "Aggregates operational KPIs from Snowflake, benchmarks against targets, and publishes review to Confluence."
  tags:
    - operations
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: operational-excellence-re
      port: 8080
      tools:
        - name: operational-excellence-review
          description: "Aggregates operational KPIs from Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Operational Excellence Review"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Manages pipeline integrity by analyzing inspection data in Snowflake, creating SAP work orders, and notifying engineers.

naftiko: "0.5"
info:
  label: "Pipeline Integrity Management Orchestrator"
  description: "Manages pipeline integrity by analyzing inspection data in Snowflake, creating SAP work orders, and notifying engineers."
  tags:
    - operations
    - snowflake
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: pipeline-integrity-manage
      port: 8080
      tools:
        - name: pipeline-integrity-management
          description: "Manages pipeline integrity by analyzing inspection data in Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Pipeline Integrity Management processed"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              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

When a pipeline leak alarm fires from Snowflake sensor data, creates a P1 incident in ServiceNow, dispatches the nearest field crew via SAP, triggers an emergency notification in Microsoft Teams, and logs the event for regulatory reporting.

naftiko: "0.5"
info:
  label: "Pipeline Leak Detection Response Orchestrator"
  description: "When a pipeline leak alarm fires from Snowflake sensor data, creates a P1 incident in ServiceNow, dispatches the nearest field crew via SAP, triggers an emergency notification in Microsoft Teams, and logs the event for regulatory reporting."
  tags:
    - safety
    - operations
    - snowflake
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: pipeline-safety
      port: 8080
      tools:
        - name: respond-to-leak-alarm
          description: "Orchestrate emergency response to a pipeline leak detection: create incident, dispatch crew, notify, and log for compliance."
          inputParameters:
            - name: pipeline_segment_id
              in: body
              type: string
              description: "The pipeline segment identifier."
            - name: alarm_id
              in: body
              type: string
              description: "The leak detection alarm identifier."
          steps:
            - name: get-alarm-details
              type: call
              call: "snowflake.get-alarm-data"
              with:
                alarm_id: "{{alarm_id}}"
            - name: create-p1-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Pipeline leak alarm: segment {{pipeline_segment_id}}"
                urgency: "1"
                impact: "1"
                category: "pipeline_safety"
                description: "Pressure drop: {{get-alarm-details.pressure_drop_psi}} PSI at mile marker {{get-alarm-details.mile_marker}}"
            - name: dispatch-crew
              type: call
              call: "sap.dispatch-field-crew"
              with:
                segment_id: "{{pipeline_segment_id}}"
                location: "{{get-alarm-details.mile_marker}}"
                priority: "emergency"
            - name: notify-emergency-team
              type: call
              call: "msteams.post-message"
              with:
                channel: "pipeline-emergencies"
                message: "LEAK ALARM on segment {{pipeline_segment_id}}, mile marker {{get-alarm-details.mile_marker}}. Incident: {{create-p1-incident.number}}. Crew dispatched ETA: {{dispatch-crew.eta_minutes}} min."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: get-alarm-data
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: field-dispatch
          path: "/plant-maintenance/dispatch"
          operations:
            - name: dispatch-field-crew
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Triggers a Power BI dataset refresh for the energy production analytics dashboard and notifies the analytics team in Teams upon completion.

naftiko: "0.5"
info:
  label: "Power BI Energy Analytics Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for the energy production analytics dashboard and notifies the analytics team in Teams upon completion."
  tags:
    - data
    - analytics
    - power-bi
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: trigger-dashboard-refresh
          description: "Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and notify the analytics team in Teams."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Power BI workspace (group) ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID to refresh."
          steps:
            - name: trigger-refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                workspaceId: "{{workspace_id}}"
                datasetId: "{{dataset_id}}"
            - name: notify-analytics
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "analytics-team"
                message: "Power BI dataset {{dataset_id}} refresh triggered in workspace {{workspace_id}}."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{workspaceId}}/datasets/{{datasetId}}/refreshes"
          inputParameters:
            - name: workspaceId
              in: path
            - name: datasetId
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves ESG metrics from a Power BI dataset.

naftiko: "0.5"
info:
  label: "Power BI ESG Dashboard Lookup"
  description: "Retrieves ESG metrics from a Power BI dataset."
  tags:
    - sustainability
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: esg-data
      port: 8080
      tools:
        - name: get-esg-metrics
          description: "Look up ESG metrics from Power BI."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
          call: "powerbi.get-dataset-value"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: esg_score
              type: number
              mapping: "$.value[0].esg_score"
            - name: carbon_intensity
              type: number
              mapping: "$.value[0].carbon_intensity"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/executeQueries"
          operations:
            - name: get-dataset-value
              method: POST

Triggers a refresh of the Health Safety and Environment Power BI dashboard dataset, returning refresh status and completion timestamp.

naftiko: "0.5"
info:
  label: "Power BI HSE Dashboard Refresh"
  description: "Triggers a refresh of the Health Safety and Environment Power BI dashboard dataset, returning refresh status and completion timestamp."
  tags:
    - safety
    - reporting
    - power-bi
    - hse
capability:
  exposes:
    - type: mcp
      namespace: hse-reporting
      port: 8080
      tools:
        - name: refresh-hse-dashboard
          description: "Trigger a Power BI dataset refresh for the HSE dashboard. Returns refresh status."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset identifier for the HSE dashboard."
          call: "powerbi.trigger-refresh"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: refresh_id
              type: string
              mapping: "$.id"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Reconciles production allocations between SAP and Snowflake, identifies discrepancies, and creates Jira tickets.

naftiko: "0.5"
info:
  label: "Production Allocation Reconciliation Orchestrator"
  description: "Reconciles production allocations between SAP and Snowflake, identifies discrepancies, and creates Jira tickets."
  tags:
    - production
    - sap
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: production-allocation-rec
      port: 8080
      tools:
        - name: production-allocation-reconciliation
          description: "Reconciles production allocations between SAP and Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: create-issue
              type: call
              call: "jira.create-issue"
              with:
                project: "OPS"
                summary: "Production Allocation Reconciliation"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://conocophillips.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

Updates production forecasts in Snowflake, validates against SAP actuals, and publishes to Power BI.

naftiko: "0.5"
info:
  label: "Production Forecast Update Orchestrator"
  description: "Updates production forecasts in Snowflake, validates against SAP actuals, and publishes to Power BI."
  tags:
    - production
    - snowflake
    - sap
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: production-forecast-updat
      port: 8080
      tools:
        - name: production-forecast-update
          description: "Updates production forecasts in Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: refresh
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "production-ds"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              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"
          operations:
            - name: trigger-refresh
              method: POST

Reconciles daily production allocation volumes between SAP well data and SCADA flow measurements in Snowflake, flags discrepancies above threshold, and creates adjustment entries.

naftiko: "0.5"
info:
  label: "Production Volume Reconciliation Orchestrator"
  description: "Reconciles daily production allocation volumes between SAP well data and SCADA flow measurements in Snowflake, flags discrepancies above threshold, and creates adjustment entries."
  tags:
    - energy
    - production
    - sap
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: production-accounting
      port: 8080
      tools:
        - name: reconcile-production-volumes
          description: "Orchestrate daily production volume reconciliation: compare SAP allocations to SCADA actuals, flag variances, and create adjustments."
          inputParameters:
            - name: production_date
              in: body
              type: string
              description: "Production date in YYYY-MM-DD format."
            - name: asset_area
              in: body
              type: string
              description: "Asset area code."
          steps:
            - name: get-sap-allocations
              type: call
              call: "sap.get-daily-allocation"
              with:
                date: "{{production_date}}"
                area: "{{asset_area}}"
            - name: get-scada-actuals
              type: call
              call: "snowflake.query-scada-volumes"
              with:
                date: "{{production_date}}"
                area: "{{asset_area}}"
            - name: flag-discrepancies
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Production volume discrepancy {{asset_area}} on {{production_date}}"
                category: "production_accounting"
            - name: post-adjustments
              type: call
              call: "sap.post-volume-adjustment"
              with:
                date: "{{production_date}}"
                area: "{{asset_area}}"
                adjustments: "{{get-scada-actuals.variance_items}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: allocations
          path: "/production/allocations"
          operations:
            - name: get-daily-allocation
              method: GET
            - name: post-volume-adjustment
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-scada-volumes
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Compiles ESG data from Snowflake, generates reports, and publishes to Confluence for stakeholder review.

naftiko: "0.5"
info:
  label: "Quarterly ESG Report Orchestrator"
  description: "Compiles ESG data from Snowflake, generates reports, and publishes to Confluence for stakeholder review."
  tags:
    - sustainability
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: quarterly-esg-report
      port: 8080
      tools:
        - name: quarterly-esg-report
          description: "Compiles ESG data from Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Quarterly ESG Report"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Plans refinery turnarounds by pulling SAP maintenance schedules, coordinating via ServiceNow, and publishing plans to Confluence.

naftiko: "0.5"
info:
  label: "Refinery Turnaround Planning Orchestrator"
  description: "Plans refinery turnarounds by pulling SAP maintenance schedules, coordinating via ServiceNow, and publishing plans to Confluence."
  tags:
    - downstream
    - sap
    - servicenow
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: refinery-turnaround-plann
      port: 8080
      tools:
        - name: refinery-turnaround-planning
          description: "Plans refinery turnarounds by pulling SAP maintenance schedules."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Refinery Turnaround Planning for {{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Refinery Turnaround Planning"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Monitors upcoming regulatory filing deadlines from ServiceNow, gathers required data from SAP and Snowflake, and sends a consolidated reminder to the compliance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regulatory Filing Deadline Orchestrator"
  description: "Monitors upcoming regulatory filing deadlines from ServiceNow, gathers required data from SAP and Snowflake, and sends a consolidated reminder to the compliance team via Microsoft Teams."
  tags:
    - compliance
    - energy
    - servicenow
    - sap
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: check-filing-deadlines
          description: "Orchestrate regulatory filing deadline check: get upcoming deadlines, gather data readiness, and alert the compliance team."
          inputParameters:
            - name: days_ahead
              in: body
              type: number
              description: "Number of days ahead to check for deadlines."
          steps:
            - name: get-deadlines
              type: call
              call: "servicenow.get-regulatory-deadlines"
              with:
                days: "{{days_ahead}}"
            - name: check-data-readiness
              type: call
              call: "snowflake.query-filing-data-status"
              with:
                deadlines: "{{get-deadlines.items}}"
            - name: get-sap-submissions
              type: call
              call: "sap.get-filing-status"
              with:
                deadlines: "{{get-deadlines.items}}"
            - name: notify-compliance
              type: call
              call: "msteams.post-message"
              with:
                channel: "regulatory-compliance"
                message: "{{get-deadlines.count}} regulatory filings due in next {{days_ahead}} days. Data ready: {{check-data-readiness.ready_count}}/{{get-deadlines.count}}. SAP submissions complete: {{get-sap-submissions.submitted_count}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: regulatory
          path: "/table/u_regulatory_filing"
          operations:
            - name: get-regulatory-deadlines
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-filing-data-status
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: filings
          path: "/regulatory/filings/status"
          operations:
            - name: get-filing-status
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Analyzes reservoir performance in Snowflake, generates engineering reports, and publishes to Confluence.

naftiko: "0.5"
info:
  label: "Reservoir Performance Review Orchestrator"
  description: "Analyzes reservoir performance in Snowflake, generates engineering reports, and publishes to Confluence."
  tags:
    - upstream
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: reservoir-performance-rev
      port: 8080
      tools:
        - name: reservoir-performance-review
          description: "Analyzes reservoir performance in Snowflake."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Reservoir Performance Review"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Triggers a reservoir simulation run by pulling input parameters from Snowflake, submitting the job to AWS Batch, monitoring status via CloudWatch, and storing results back in Snowflake for analysis.

naftiko: "0.5"
info:
  label: "Reservoir Simulation Pipeline Orchestrator"
  description: "Triggers a reservoir simulation run by pulling input parameters from Snowflake, submitting the job to AWS Batch, monitoring status via CloudWatch, and storing results back in Snowflake for analysis."
  tags:
    - energy
    - geoscience
    - snowflake
    - aws
    - simulation
capability:
  exposes:
    - type: mcp
      namespace: reservoir-engineering
      port: 8080
      tools:
        - name: run-reservoir-simulation
          description: "Orchestrate a reservoir simulation: pull inputs, submit compute job, monitor, and store results."
          inputParameters:
            - name: reservoir_id
              in: body
              type: string
              description: "The reservoir model identifier."
            - name: scenario_name
              in: body
              type: string
              description: "The simulation scenario name."
          steps:
            - name: get-input-params
              type: call
              call: "snowflake.query-simulation-inputs"
              with:
                reservoir_id: "{{reservoir_id}}"
                scenario: "{{scenario_name}}"
            - name: submit-simulation
              type: call
              call: "aws-batch.submit-job"
              with:
                job_definition: "reservoir-sim"
                job_queue: "gpu-compute"
                parameters:
                  reservoir_id: "{{reservoir_id}}"
                  scenario: "{{scenario_name}}"
            - name: monitor-job
              type: call
              call: "cloudwatch.get-job-metrics"
              with:
                job_id: "{{submit-simulation.job_id}}"
            - name: store-results
              type: call
              call: "snowflake.insert-simulation-results"
              with:
                reservoir_id: "{{reservoir_id}}"
                scenario: "{{scenario_name}}"
                job_id: "{{submit-simulation.job_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-simulation-inputs
              method: POST
            - name: insert-simulation-results
              method: POST
    - type: http
      namespace: aws-batch
      baseUri: "https://batch.us-west-2.amazonaws.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.aws_auth_header"
        placement: header
      resources:
        - name: jobs
          path: "/v1/submitjob"
          operations:
            - name: submit-job
              method: POST
    - type: http
      namespace: cloudwatch
      baseUri: "https://monitoring.us-west-2.amazonaws.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.aws_auth_header"
        placement: header
      resources:
        - name: metrics
          path: "/"
          operations:
            - name: get-job-metrics
              method: POST

Retrieves a customer or partner account from Salesforce by account ID, returning account name, industry, annual revenue, and primary contact.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves a customer or partner account from Salesforce by account ID, returning account name, industry, annual revenue, and primary contact."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-account
          description: "Look up a Salesforce account by ID. Returns name, industry, revenue, and primary contact."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account identifier."
          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: primary_contact
              type: string
              mapping: "$.PrimaryContact__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://conocophillips.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

When a new Salesforce lead is created, enriches the record with ZoomInfo company data and updates territory assignment.

naftiko: "0.5"
info:
  label: "Salesforce Lead Enrichment"
  description: "When a new Salesforce lead is created, enriches the record with ZoomInfo company data and updates territory assignment."
  tags:
    - crm
    - sales
    - salesforce
    - zoominfo
    - lead-management
capability:
  exposes:
    - type: mcp
      namespace: crm-leads
      port: 8080
      tools:
        - name: enrich-lead
          description: "Given a Salesforce lead ID, fetch ZoomInfo company firmographics and update the lead record with enriched data."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead record ID."
          steps:
            - name: get-lead
              type: call
              call: "salesforce.get-lead"
              with:
                lead_id: "{{lead_id}}"
            - name: enrich-company
              type: call
              call: "zoominfo.search-company"
              with:
                companyName: "{{get-lead.Company}}"
            - name: update-lead
              type: call
              call: "salesforce-update.update-lead"
              with:
                lead_id: "{{lead_id}}"
                AnnualRevenue: "{{enrich-company.revenue}}"
                NumberOfEmployees: "{{enrich-company.employeeCount}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com/search"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: companies
          path: "/company"
          operations:
            - name: search-company
              method: POST
    - type: http
      namespace: salesforce-update
      baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: update-lead
              method: PATCH

When a Salesforce opportunity closes as Won, creates an SAP S/4HANA sales order and notifies the account team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity to SAP Sales Order Sync"
  description: "When a Salesforce opportunity closes as Won, creates an SAP S/4HANA sales order and notifies the account team in Microsoft Teams."
  tags:
    - crm
    - sales
    - salesforce
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: crm-opportunity
      port: 8080
      tools:
        - name: sync-closed-opportunity
          description: "Given a Salesforce opportunity ID that closed Won, create an SAP S/4HANA sales order and notify the account team in Teams."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity record ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-sales-order
              type: call
              call: "sap-sd.create-sales-order"
              with:
                customerName: "{{get-opportunity.AccountName}}"
                amount: "{{get-opportunity.Amount}}"
                currency: "{{get-opportunity.CurrencyIsoCode}}"
            - name: notify-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "sales-team"
                message: "Opportunity {{get-opportunity.Name}} closed Won. SAP Sales Order {{create-sales-order.salesOrderId}} created."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: sap-sd
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sales-orders
          path: "/A_SalesOrder"
          operations:
            - name: create-sales-order
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves supplier contracts approaching expiration from SAP Ariba, returning contract title, supplier name, expiration date, and annual value.

naftiko: "0.5"
info:
  label: "SAP Ariba Contract Expiry Lookup"
  description: "Retrieves supplier contracts approaching expiration from SAP Ariba, returning contract title, supplier name, expiration date, and annual value."
  tags:
    - procurement
    - sap
    - contracts
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-expiring-contracts
          description: "Look up supplier contracts expiring within a specified window from SAP Ariba. Returns contract details and values."
          inputParameters:
            - name: days_ahead
              in: body
              type: number
              description: "Number of days ahead to check for expiring contracts."
          call: "ariba.get-expiring-contracts"
          with:
            days: "{{days_ahead}}"
          outputParameters:
            - name: contracts
              type: array
              mapping: "$.data"
              items:
                - name: contract_id
                  type: string
                  mapping: "$.contractId"
                - name: title
                  type: string
                  mapping: "$.title"
                - name: supplier_name
                  type: string
                  mapping: "$.supplierName"
                - name: expiration_date
                  type: string
                  mapping: "$.expirationDate"
                - name: annual_value
                  type: number
                  mapping: "$.annualValue"
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://api.ariba.com/v2"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: contracts
          path: "/procurement/contracts"
          operations:
            - name: get-expiring-contracts
              method: GET

When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP and routes approval to the manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Ariba Supplier Requisition Approval"
  description: "When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP and routes approval to the manager via Microsoft Teams."
  tags:
    - procurement
    - sap-ariba
    - sap
    - microsoft-teams
    - approval
capability:
  exposes:
    - type: mcp
      namespace: procurement-approval
      port: 8080
      tools:
        - name: approve-requisition
          description: "Given an Ariba requisition ID, check SAP cost center budget and send an approval card to the responsible manager in Microsoft Teams."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The SAP Ariba requisition ID."
            - name: manager_email
              in: body
              type: string
              description: "The Microsoft Teams UPN of the approving manager."
          steps:
            - name: get-requisition
              type: call
              call: "ariba.get-requisition"
              with:
                requisitionId: "{{requisition_id}}"
            - name: check-budget
              type: call
              call: "sap-finance.check-budget"
              with:
                cost_center: "{{get-requisition.costCenter}}"
                amount: "{{get-requisition.totalAmount}}"
            - name: send-approval-card
              type: call
              call: "msteams.post-message"
              with:
                recipient: "{{manager_email}}"
                message: "Approval needed: Requisition {{requisition_id}} for {{get-requisition.totalAmount}} {{get-requisition.currency}}. Budget: {{check-budget.status}}."
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/purchase-requisitions/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: requisitions
          path: "/requisitions/{{requisitionId}}"
          inputParameters:
            - name: requisitionId
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: sap-finance
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: budgets
          path: "/A_CostCenter('{{cost_center}}')"
          inputParameters:
            - name: cost_center
              in: path
          operations:
            - name: check-budget
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/chats/messages"
          operations:
            - name: post-message
              method: POST

Retrieves gas compressor station throughput data from SAP, returning inlet and outlet pressures, flow rate in MCFD, and compressor efficiency percentage.

naftiko: "0.5"
info:
  label: "SAP Compressor Station Throughput Lookup"
  description: "Retrieves gas compressor station throughput data from SAP, returning inlet and outlet pressures, flow rate in MCFD, and compressor efficiency percentage."
  tags:
    - energy
    - operations
    - sap
    - midstream
capability:
  exposes:
    - type: mcp
      namespace: midstream-ops
      port: 8080
      tools:
        - name: get-compressor-throughput
          description: "Look up compressor station throughput from SAP. Returns pressures, flow rates, and efficiency."
          inputParameters:
            - name: station_id
              in: body
              type: string
              description: "The compressor station identifier."
          call: "sap.get-compressor-data"
          with:
            station_id: "{{station_id}}"
          outputParameters:
            - name: inlet_pressure_psi
              type: number
              mapping: "$.inletPressure"
            - name: outlet_pressure_psi
              type: number
              mapping: "$.outletPressure"
            - name: flow_rate_mcfd
              type: number
              mapping: "$.flowRateMCFD"
            - name: efficiency_pct
              type: number
              mapping: "$.efficiencyPercent"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: compressors
          path: "/midstream/compressors/{{station_id}}/throughput"
          inputParameters:
            - name: station_id
              in: path
          operations:
            - name: get-compressor-data
              method: GET

When an expense report is submitted in SAP Concur, validates policy compliance and routes the approval request to the manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Approval"
  description: "When an expense report is submitted in SAP Concur, validates policy compliance and routes the approval request to the manager via Microsoft Teams."
  tags:
    - finance
    - expense-management
    - sap-concur
    - microsoft-teams
    - approval
capability:
  exposes:
    - type: mcp
      namespace: expense-approval
      port: 8080
      tools:
        - name: approve-expense-report
          description: "Given an SAP Concur report ID and manager email, retrieve report details and send an approval card to the manager in Teams."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: manager_email
              in: body
              type: string
              description: "The Microsoft Teams UPN of the approving manager."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                reportId: "{{report_id}}"
            - name: send-approval
              type: call
              call: "msteams.post-message"
              with:
                recipient: "{{manager_email}}"
                message: "Expense approval needed: Report {{report_id}} for {{get-report.Total}} {{get-report.CurrencyCode}} submitted by {{get-report.OwnerName}}."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://www.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{reportId}}"
          inputParameters:
            - name: reportId
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/chats/messages"
          operations:
            - name: post-message
              method: POST

Retrieves crude blending recipe from SAP.

naftiko: "0.5"
info:
  label: "SAP Crude Blending Recipe Lookup"
  description: "Retrieves crude blending recipe from SAP."
  tags:
    - refining
    - sap
    - production
capability:
  exposes:
    - type: mcp
      namespace: crude-blending
      port: 8080
      tools:
        - name: get-blend-recipe
          description: "Look up recipe by process order."
          inputParameters:
            - name: process_order
              in: body
              type: string
              description: "SAP process order."
          call: sap.get-recipe
          with:
            process_order: "{{process_order}}"
          outputParameters:
            - name: feedstocks
              type: string
              mapping: "$.d.FeedstockList"
            - name: target_api
              type: number
              mapping: "$.d.TargetAPIGravity"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_PROCESS_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: recipes
          path: "/A_ProcessOrder('{{process_order}}')/to_Recipe"
          inputParameters:
            - name: process_order
              in: path
          operations:
            - name: get-recipe
              method: GET

Retrieves crude oil inventory levels from SAP for storage terminals.

naftiko: "0.5"
info:
  label: "SAP Crude Oil Inventory Lookup"
  description: "Retrieves crude oil inventory levels from SAP for storage terminals."
  tags:
    - upstream
    - inventory
    - sap
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: crude-inventory
      port: 8080
      tools:
        - name: get-crude-inventory
          description: "Look up crude inventory by terminal ID."
          inputParameters:
            - name: terminal_id
              in: body
              type: string
              description: "SAP plant code for storage terminal."
          call: sap.get-inventory
          with:
            terminal_id: "{{terminal_id}}"
          outputParameters:
            - name: total_volume_bbl
              type: number
              mapping: "$.d.TotalVolume"
            - name: product_grade
              type: string
              mapping: "$.d.MaterialGrade"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_INVENTORY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: inventory
          path: "/A_MaterialStock(Plant='{{terminal_id}}')"
          inputParameters:
            - name: terminal_id
              in: path
          operations:
            - name: get-inventory
              method: GET

Looks up downstream product delivery status in SAP.

naftiko: "0.5"
info:
  label: "SAP Downstream Product Shipment Status"
  description: "Looks up downstream product delivery status in SAP."
  tags:
    - downstream
    - logistics
    - sap
capability:
  exposes:
    - type: mcp
      namespace: shipment-status
      port: 8080
      tools:
        - name: get-shipment-status
          description: "Look up shipment by delivery number."
          inputParameters:
            - name: delivery_number
              in: body
              type: string
              description: "SAP delivery number."
          call: sap.get-delivery
          with:
            delivery_number: "{{delivery_number}}"
          outputParameters:
            - name: carrier
              type: string
              mapping: "$.d.CarrierName"
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: eta
              type: string
              mapping: "$.d.PlannedArrivalDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_OutboundDelivery('{{delivery_number}}')"
          inputParameters:
            - name: delivery_number
              in: path
          operations:
            - name: get-delivery
              method: GET

Retrieves operational status of a drilling rig from SAP.

naftiko: "0.5"
info:
  label: "SAP Drilling Rig Status Lookup"
  description: "Retrieves operational status of a drilling rig from SAP."
  tags:
    - upstream
    - sap
capability:
  exposes:
    - type: mcp
      namespace: rig-status
      port: 8080
      tools:
        - name: get-rig-status
          description: "Look up drilling rig operational status."
          inputParameters:
            - name: rig_id
              in: body
              type: string
              description: "SAP rig equipment ID."
          call: "sap.get-rig"
          with:
            rig_id: "{{rig_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OperationalStatus"
            - name: depth_ft
              type: number
              mapping: "$.d.CurrentDepth"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: rigs
          path: "/A_Equipment('{{rig_id}}')"
          inputParameters:
            - name: rig_id
              in: path
          operations:
            - name: get-rig
              method: GET

Retrieves maintenance order history for a specific piece of field equipment from SAP Plant Maintenance, returning order type, completion date, and total cost.

naftiko: "0.5"
info:
  label: "SAP Equipment Maintenance History"
  description: "Retrieves maintenance order history for a specific piece of field equipment from SAP Plant Maintenance, returning order type, completion date, and total cost."
  tags:
    - operations
    - maintenance
    - sap
    - equipment
capability:
  exposes:
    - type: mcp
      namespace: field-maintenance
      port: 8080
      tools:
        - name: get-maintenance-history
          description: "Look up maintenance history for equipment in SAP PM. Returns past maintenance orders, dates, and costs."
          inputParameters:
            - name: equipment_id
              in: body
              type: string
              description: "The SAP equipment number."
          call: "sap.get-maintenance-orders"
          with:
            equipment_id: "{{equipment_id}}"
          outputParameters:
            - name: orders
              type: array
              mapping: "$.data"
              items:
                - name: order_number
                  type: string
                  mapping: "$.orderNumber"
                - name: order_type
                  type: string
                  mapping: "$.orderType"
                - name: completion_date
                  type: string
                  mapping: "$.completionDate"
                - name: total_cost
                  type: number
                  mapping: "$.totalCost"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: maintenance-orders
          path: "/plant-maintenance/equipment/{{equipment_id}}/orders"
          inputParameters:
            - name: equipment_id
              in: path
          operations:
            - name: get-maintenance-orders
              method: GET

Processes field service tickets by pulling the ticket from SAP, validating contractor rates against the master agreement, routing for supervisor approval via ServiceNow, and posting the approved amount to accounts payable.

naftiko: "0.5"
info:
  label: "SAP Field Ticket Approval Orchestrator"
  description: "Processes field service tickets by pulling the ticket from SAP, validating contractor rates against the master agreement, routing for supervisor approval via ServiceNow, and posting the approved amount to accounts payable."
  tags:
    - operations
    - finance
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: field-accounting
      port: 8080
      tools:
        - name: process-field-ticket
          description: "Orchestrate field ticket processing: pull ticket, validate rates, route for approval, and post to AP."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The SAP field ticket document number."
          steps:
            - name: get-field-ticket
              type: call
              call: "sap.get-field-ticket"
              with:
                ticket_id: "{{ticket_id}}"
            - name: validate-rates
              type: call
              call: "sap.validate-contractor-rates"
              with:
                vendor_id: "{{get-field-ticket.vendor_id}}"
                line_items: "{{get-field-ticket.line_items}}"
            - name: route-approval
              type: call
              call: "servicenow.create-approval"
              with:
                short_description: "Field ticket approval: {{ticket_id}} - ${{get-field-ticket.total_amount}}"
                approver: "{{get-field-ticket.supervisor_email}}"
                amount: "{{get-field-ticket.total_amount}}"
            - name: post-to-ap
              type: call
              call: "sap.post-invoice"
              with:
                vendor_id: "{{get-field-ticket.vendor_id}}"
                amount: "{{get-field-ticket.total_amount}}"
                reference: "{{ticket_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: field-tickets
          path: "/field-services/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-field-ticket
              method: GET
        - name: rate-validation
          path: "/procurement/rate-validation"
          operations:
            - name: validate-contractor-rates
              method: POST
        - name: invoices
          path: "/finance/invoices"
          operations:
            - name: post-invoice
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: approvals
          path: "/table/sysapproval_approver"
          operations:
            - name: create-approval
              method: POST

At month end, retrieves SAP S/4HANA period close status for all company codes and posts the consolidated checklist to the finance Teams channel.

naftiko: "0.5"
info:
  label: "SAP Finance Period Close Status Check"
  description: "At month end, retrieves SAP S/4HANA period close status for all company codes and posts the consolidated checklist to the finance Teams channel."
  tags:
    - finance
    - erp
    - sap
    - microsoft-teams
    - period-close
capability:
  exposes:
    - type: mcp
      namespace: finance-close
      port: 8080
      tools:
        - name: check-period-close-status
          description: "Given a fiscal year and period, retrieve the SAP period close status for all company codes and post the consolidated status to the finance Teams channel."
          inputParameters:
            - name: fiscal_year
              in: body
              type: string
              description: "The fiscal year, e.g. 2025."
            - name: fiscal_period
              in: body
              type: string
              description: "The fiscal period number, e.g. 03 for March."
          steps:
            - name: get-close-status
              type: call
              call: "sap-finance.get-period-status"
              with:
                fiscalYear: "{{fiscal_year}}"
                fiscalPeriod: "{{fiscal_period}}"
            - name: post-status
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "finance-team"
                message: "Period close FY{{fiscal_year}} P{{fiscal_period}}: Open items={{get-close-status.openItems}}, Blocked postings={{get-close-status.blockedPostings}}"
  consumes:
    - type: http
      namespace: sap-finance
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_FIGL_PERIOD_LOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: period-status
          path: "/A_AccountingPeriodLock"
          inputParameters:
            - name: fiscalYear
              in: query
            - name: fiscalPeriod
              in: query
          operations:
            - name: get-period-status
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves flare gas recovery rates from SAP for refinery units.

naftiko: "0.5"
info:
  label: "SAP Flare Gas Recovery Monitoring"
  description: "Retrieves flare gas recovery rates from SAP for refinery units."
  tags:
    - environmental
    - refining
    - sap
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: flare-recovery
      port: 8080
      tools:
        - name: get-flare-recovery
          description: "Look up flare recovery by refinery unit."
          inputParameters:
            - name: unit_id
              in: body
              type: string
              description: "SAP functional location."
          call: sap.get-flare-metrics
          with:
            unit_id: "{{unit_id}}"
          outputParameters:
            - name: recovery_pct
              type: number
              mapping: "$.d.RecoveryPercentage"
            - name: compliant
              type: boolean
              mapping: "$.d.RegulatoryCompliant"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: flare-metrics
          path: "/A_MeasurementDocument(FunctionalLocation='{{unit_id}}')"
          inputParameters:
            - name: unit_id
              in: path
          operations:
            - name: get-flare-metrics
              method: GET

Retrieves gas plant processing data from SAP, returning inlet volume, NGL yield, residue gas volume, and plant utilization percentage.

naftiko: "0.5"
info:
  label: "SAP Gas Plant Processing Lookup"
  description: "Retrieves gas plant processing data from SAP, returning inlet volume, NGL yield, residue gas volume, and plant utilization percentage."
  tags:
    - energy
    - operations
    - sap
    - gas-processing
capability:
  exposes:
    - type: mcp
      namespace: gas-processing
      port: 8080
      tools:
        - name: get-gas-plant-data
          description: "Look up gas plant processing metrics from SAP. Returns inlet, NGL yield, residue gas, and utilization."
          inputParameters:
            - name: plant_id
              in: body
              type: string
              description: "The gas processing plant identifier."
            - name: date
              in: body
              type: string
              description: "Processing date in YYYY-MM-DD format."
          call: "sap.get-plant-processing"
          with:
            plant_id: "{{plant_id}}"
            date: "{{date}}"
          outputParameters:
            - name: inlet_mcfd
              type: number
              mapping: "$.inletVolumeMCFD"
            - name: ngl_yield_bpd
              type: number
              mapping: "$.nglYieldBPD"
            - name: residue_gas_mcfd
              type: number
              mapping: "$.residueGasMCFD"
            - name: utilization_pct
              type: number
              mapping: "$.utilizationPercent"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: gas-plants
          path: "/gas-processing/plants/{{plant_id}}/data"
          inputParameters:
            - name: plant_id
              in: path
          operations:
            - name: get-plant-processing
              method: GET

Retrieves heat exchanger fouling data from SAP.

naftiko: "0.5"
info:
  label: "SAP Heat Exchanger Fouling Monitor"
  description: "Retrieves heat exchanger fouling data from SAP."
  tags:
    - refining
    - maintenance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: hx-fouling
      port: 8080
      tools:
        - name: get-fouling-status
          description: "Look up fouling by equipment number."
          inputParameters:
            - name: equipment_number
              in: body
              type: string
              description: "SAP equipment number."
          call: sap.get-hx-performance
          with:
            equipment_number: "{{equipment_number}}"
          outputParameters:
            - name: fouling_factor
              type: number
              mapping: "$.d.FoulingFactor"
            - name: cleaning_recommended
              type: boolean
              mapping: "$.d.CleaningRecommended"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: hx-data
          path: "/A_MeasurementDocument(Equipment='{{equipment_number}}')"
          inputParameters:
            - name: equipment_number
              in: path
          operations:
            - name: get-hx-performance
              method: GET

Retrieves health, safety, and environment incident count from SAP.

naftiko: "0.5"
info:
  label: "SAP HSE Incident Count Lookup"
  description: "Retrieves health, safety, and environment incident count from SAP."
  tags:
    - safety
    - sap
capability:
  exposes:
    - type: mcp
      namespace: hse-data
      port: 8080
      tools:
        - name: get-hse-incidents
          description: "Look up HSE incident count by location."
          inputParameters:
            - name: location_code
              in: body
              type: string
              description: "SAP location code."
          call: "sap.get-hse-count"
          with:
            location: "{{location_code}}"
          outputParameters:
            - name: incident_count
              type: number
              mapping: "$.d.IncidentCount"
            - name: severity
              type: string
              mapping: "$.d.MaxSeverity"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_INCIDENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: incidents
          path: "/A_HSEIncident(Location='{{location}}')"
          inputParameters:
            - name: location
              in: path
          operations:
            - name: get-hse-count
              method: GET

Retrieves joint venture billing details from SAP.

naftiko: "0.5"
info:
  label: "SAP Joint Venture Billing Lookup"
  description: "Retrieves joint venture billing details from SAP."
  tags:
    - finance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: jv-billing
      port: 8080
      tools:
        - name: get-jv-billing
          description: "Look up JV billing by venture ID."
          inputParameters:
            - name: venture_id
              in: body
              type: string
              description: "SAP joint venture ID."
          call: "sap.get-jv-bill"
          with:
            venture_id: "{{venture_id}}"
          outputParameters:
            - name: total_charges
              type: number
              mapping: "$.d.TotalCharges"
            - name: partner_share
              type: number
              mapping: "$.d.PartnerShare"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/JVA_BILLING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: billing
          path: "/A_JVBilling('{{venture_id}}')"
          inputParameters:
            - name: venture_id
              in: path
          operations:
            - name: get-jv-bill
              method: GET

Retrieves joint venture partner billing statements from SAP JVA, returning working interest percentages, net revenue interest, and billed amounts by partner.

naftiko: "0.5"
info:
  label: "SAP Joint Venture Partner Billing"
  description: "Retrieves joint venture partner billing statements from SAP JVA, returning working interest percentages, net revenue interest, and billed amounts by partner."
  tags:
    - energy
    - finance
    - sap
    - joint-venture
capability:
  exposes:
    - type: mcp
      namespace: jv-accounting
      port: 8080
      tools:
        - name: get-jv-billing
          description: "Look up JV partner billing data from SAP for a given venture and period. Returns partner shares and billed amounts."
          inputParameters:
            - name: venture_id
              in: body
              type: string
              description: "The SAP joint venture identifier."
            - name: period
              in: body
              type: string
              description: "Billing period in YYYY-MM format."
          call: "sap.get-jv-billing"
          with:
            venture_id: "{{venture_id}}"
            period: "{{period}}"
          outputParameters:
            - name: partners
              type: array
              mapping: "$.data"
              items:
                - name: partner_name
                  type: string
                  mapping: "$.partnerName"
                - name: working_interest_pct
                  type: number
                  mapping: "$.workingInterest"
                - name: billed_amount
                  type: number
                  mapping: "$.billedAmount"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: jv-billing
          path: "/joint-ventures/{{venture_id}}/billing"
          inputParameters:
            - name: venture_id
              in: path
            - name: period
              in: query
          operations:
            - name: get-jv-billing
              method: GET

Retrieves land lease expiry dates from SAP Real Estate.

naftiko: "0.5"
info:
  label: "SAP Land Lease Expiry Lookup"
  description: "Retrieves land lease expiry dates from SAP Real Estate."
  tags:
    - legal
    - sap
capability:
  exposes:
    - type: mcp
      namespace: lease-data
      port: 8080
      tools:
        - name: get-lease-expiry
          description: "Look up land lease expiry date."
          inputParameters:
            - name: lease_id
              in: body
              type: string
              description: "SAP lease contract ID."
          call: "sap.get-lease"
          with:
            lease_id: "{{lease_id}}"
          outputParameters:
            - name: expiry_date
              type: string
              mapping: "$.d.ExpiryDate"
            - name: annual_payment
              type: number
              mapping: "$.d.AnnualPayment"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/RE_LEASE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: leases
          path: "/A_Lease('{{lease_id}}')"
          inputParameters:
            - name: lease_id
              in: path
          operations:
            - name: get-lease
              method: GET

Calculates royalty payments from SAP production data and logs to Snowflake.

naftiko: "0.5"
info:
  label: "SAP Lease Royalty Payment Calculation"
  description: "Calculates royalty payments from SAP production data and logs to Snowflake."
  tags:
    - upstream
    - finance
    - sap
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: royalty-calc
      port: 8080
      tools:
        - name: calculate-royalties
          description: "Pull volumes, calculate royalties, log to Snowflake."
          inputParameters:
            - name: lease_id
              in: body
              type: string
              description: "Lease ID."
            - name: production_month
              in: body
              type: string
              description: "Month in YYYY-MM."
          steps:
            - name: get-production
              type: call
              call: sap.get-lease-production
              with:
                lease_id: "{{lease_id}}"
                month: "{{production_month}}"
            - name: log-royalty
              type: call
              call: snowflake.insert-royalty-record
              with:
                lease_id: "{{lease_id}}"
                volume: "{{get-production.total_volume}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_PRODUCTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: lease-production
          path: "/A_LeaseProduction"
          operations:
            - name: get-lease-production
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: royalties
          path: "/statements"
          operations:
            - name: insert-royalty-record
              method: POST

Retrieves MSDS from SAP EHS for chemical materials.

naftiko: "0.5"
info:
  label: "SAP Material Safety Data Sheet Lookup"
  description: "Retrieves MSDS from SAP EHS for chemical materials."
  tags:
    - safety
    - environmental
    - sap
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: msds-lookup
      port: 8080
      tools:
        - name: get-msds
          description: "Look up MSDS by material number."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number."
          call: sap.get-msds
          with:
            material_number: "{{material_number}}"
          outputParameters:
            - name: hazard_class
              type: string
              mapping: "$.d.HazardClassification"
            - name: ppe_required
              type: string
              mapping: "$.d.PPERequirements"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_MSDS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: safety-data-sheets
          path: "/A_MaterialSafetySheet('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-msds
              method: GET

Retrieves gas nomination balances from SAP.

naftiko: "0.5"
info:
  label: "SAP Natural Gas Nomination Balance"
  description: "Retrieves gas nomination balances from SAP."
  tags:
    - trading
    - upstream
    - sap
capability:
  exposes:
    - type: mcp
      namespace: gas-nomination
      port: 8080
      tools:
        - name: get-nomination-balance
          description: "Look up gas balance by pipeline contract."
          inputParameters:
            - name: pipeline_contract
              in: body
              type: string
              description: "SAP pipeline contract."
          call: sap.get-gas-balance
          with:
            pipeline_contract: "{{pipeline_contract}}"
          outputParameters:
            - name: nominated_mcf
              type: number
              mapping: "$.d.NominatedVolume"
            - name: actual_mcf
              type: number
              mapping: "$.d.ActualVolume"
            - name: imbalance_mcf
              type: number
              mapping: "$.d.ImbalanceVolume"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_GAS_BALANCE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: gas-balances
          path: "/A_GasNominationBalance('{{pipeline_contract}}')"
          inputParameters:
            - name: pipeline_contract
              in: path
          operations:
            - name: get-gas-balance
              method: GET

Retrieves real-time pipeline pressure readings from SAP.

naftiko: "0.5"
info:
  label: "SAP Natural Gas Pipeline Pressure Lookup"
  description: "Retrieves real-time pipeline pressure readings from SAP."
  tags:
    - upstream
    - sap
capability:
  exposes:
    - type: mcp
      namespace: pipeline-pressure
      port: 8080
      tools:
        - name: get-pipeline-pressure
          description: "Look up pipeline pressure by segment."
          inputParameters:
            - name: segment_id
              in: body
              type: string
              description: "Pipeline segment ID."
          call: "sap.get-pressure"
          with:
            segment_id: "{{segment_id}}"
          outputParameters:
            - name: pressure_psi
              type: number
              mapping: "$.d.Pressure"
            - name: timestamp
              type: string
              mapping: "$.d.ReadingTime"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_PIPELINE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: readings
          path: "/A_PipelinePressure(Segment='{{segment_id}}')"
          inputParameters:
            - name: segment_id
              in: path
          operations:
            - name: get-pressure
              method: GET

Retrieves pipeline inspection records from SAP.

naftiko: "0.5"
info:
  label: "SAP Pipeline Integrity Inspection Tracker"
  description: "Retrieves pipeline inspection records from SAP."
  tags:
    - upstream
    - safety
    - sap
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: pipeline-integrity
      port: 8080
      tools:
        - name: get-inspection-status
          description: "Look up inspection by functional location."
          inputParameters:
            - name: functional_location
              in: body
              type: string
              description: "SAP functional location."
          call: sap.get-inspection-records
          with:
            functional_location: "{{functional_location}}"
          outputParameters:
            - name: last_inspection
              type: string
              mapping: "$.d.LastInspectionDate"
            - name: wall_thickness_mm
              type: number
              mapping: "$.d.WallThickness"
            - name: corrosion_rate
              type: number
              mapping: "$.d.CorrosionRate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: inspections
          path: "/A_MeasurementDocument"
          operations:
            - name: get-inspection-records
              method: GET

Retrieves weekly oil and gas production forecasts from SAP by asset region, returning projected barrel-of-oil-equivalent volumes and variance against plan.

naftiko: "0.5"
info:
  label: "SAP Production Forecast Lookup"
  description: "Retrieves weekly oil and gas production forecasts from SAP by asset region, returning projected barrel-of-oil-equivalent volumes and variance against plan."
  tags:
    - production
    - energy
    - sap
    - forecasting
capability:
  exposes:
    - type: mcp
      namespace: production-planning
      port: 8080
      tools:
        - name: get-production-forecast
          description: "Look up weekly production forecasts from SAP for a given asset region. Returns projected BOE volumes and plan variance."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The asset region code (e.g., PERMIAN, ALASKA, NORWAY)."
            - name: week_start
              in: body
              type: string
              description: "Forecast week start date in YYYY-MM-DD format."
          call: "sap.get-production-forecast"
          with:
            region: "{{region_code}}"
            week: "{{week_start}}"
          outputParameters:
            - name: forecast_boe
              type: number
              mapping: "$.forecastBOE"
            - name: plan_boe
              type: number
              mapping: "$.planBOE"
            - name: variance_pct
              type: number
              mapping: "$.variancePercent"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: forecasts
          path: "/production/forecasts"
          inputParameters:
            - name: region
              in: query
            - name: week
              in: query
          operations:
            - name: get-production-forecast
              method: GET

Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, total value, and line items for procurement review.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Lookup"
  description: "Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, total value, and line items for procurement review."
  tags:
    - procurement
    - finance
    - sap
    - erp
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Given a PO number, retrieve the SAP S/4HANA purchase order status, vendor name, total value, and open line items. Use for procurement approvals and spend visibility."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number, e.g. 4500012345."
          call: "sap-erp.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: currency
              type: string
              mapping: "$.d.TransactionCurrency"
  consumes:
    - type: http
      namespace: sap-erp
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Checks catalyst inventory in SAP.

naftiko: "0.5"
info:
  label: "SAP Refinery Catalyst Inventory Check"
  description: "Checks catalyst inventory in SAP."
  tags:
    - refining
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: catalyst-inventory
      port: 8080
      tools:
        - name: check-catalyst-inventory
          description: "Look up catalyst stock."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code."
          call: sap.get-catalyst-stock
          with:
            material_number: "{{material_number}}"
            plant_code: "{{plant_code}}"
          outputParameters:
            - name: available_qty
              type: number
              mapping: "$.d.AvailableStock"
            - name: reorder_needed
              type: boolean
              mapping: "$.d.BelowReorderPoint"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_INVENTORY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/A_MaterialStock"
          operations:
            - name: get-catalyst-stock
              method: GET

Pulls refinery throughput from SAP and pushes to Power BI.

naftiko: "0.5"
info:
  label: "SAP Refinery Throughput Report"
  description: "Pulls refinery throughput from SAP and pushes to Power BI."
  tags:
    - refining
    - reporting
    - sap
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: refinery-throughput
      port: 8080
      tools:
        - name: generate-throughput-report
          description: "Pull throughput data and push to Power BI."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code."
            - name: date_from
              in: body
              type: string
              description: "Start date."
            - name: date_to
              in: body
              type: string
              description: "End date."
          steps:
            - name: get-throughput
              type: call
              call: sap.get-throughput-data
              with:
                plant_code: "{{plant_code}}"
                date_from: "{{date_from}}"
                date_to: "{{date_to}}"
            - name: push-to-powerbi
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "refinery-throughput-daily"
                rows: "{{get-throughput.results}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: throughput
          path: "/A_ProductionOutput"
          operations:
            - name: get-throughput-data
              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/refinery-throughput-daily/rows"
          operations:
            - name: push-rows
              method: POST

Retrieves current throughput for a refinery processing unit from SAP.

naftiko: "0.5"
info:
  label: "SAP Refinery Unit Throughput Lookup"
  description: "Retrieves current throughput for a refinery processing unit from SAP."
  tags:
    - downstream
    - sap
capability:
  exposes:
    - type: mcp
      namespace: refinery-ops
      port: 8080
      tools:
        - name: get-unit-throughput
          description: "Look up refinery unit throughput."
          inputParameters:
            - name: unit_id
              in: body
              type: string
              description: "SAP refinery unit ID."
          call: "sap.get-throughput"
          with:
            unit_id: "{{unit_id}}"
          outputParameters:
            - name: throughput_bpd
              type: number
              mapping: "$.d.Throughput"
            - name: utilization_pct
              type: number
              mapping: "$.d.UtilizationPercent"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_REFINERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: units
          path: "/A_RefiningUnit('{{unit_id}}')"
          inputParameters:
            - name: unit_id
              in: path
          operations:
            - name: get-throughput
              method: GET

Calculates monthly royalty payments by pulling production volumes from SAP, applying pricing from Bloomberg, computing net royalties in Snowflake, and posting payment entries back to SAP.

naftiko: "0.5"
info:
  label: "SAP Royalty Payment Calculation Orchestrator"
  description: "Calculates monthly royalty payments by pulling production volumes from SAP, applying pricing from Bloomberg, computing net royalties in Snowflake, and posting payment entries back to SAP."
  tags:
    - energy
    - finance
    - sap
    - bloomberg
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: royalty-accounting
      port: 8080
      tools:
        - name: calculate-royalty-payments
          description: "Orchestrate monthly royalty calculation: pull volumes, get pricing, compute royalties, and post payments."
          inputParameters:
            - name: lease_group
              in: body
              type: string
              description: "The lease group identifier."
            - name: production_month
              in: body
              type: string
              description: "Production month in YYYY-MM format."
          steps:
            - name: get-production-volumes
              type: call
              call: "sap.get-lease-production"
              with:
                lease_group: "{{lease_group}}"
                month: "{{production_month}}"
            - name: get-pricing
              type: call
              call: "bloomberg.get-monthly-avg-price"
              with:
                commodity: "WTI"
                month: "{{production_month}}"
            - name: compute-royalties
              type: call
              call: "snowflake.calculate-net-royalties"
              with:
                volumes: "{{get-production-volumes.data}}"
                price: "{{get-pricing.avg_price}}"
            - name: post-payments
              type: call
              call: "sap.post-royalty-payment"
              with:
                lease_group: "{{lease_group}}"
                month: "{{production_month}}"
                payments: "{{compute-royalties.payment_entries}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: production
          path: "/production/leases/{{lease_group}}/volumes"
          inputParameters:
            - name: lease_group
              in: path
          operations:
            - name: get-lease-production
              method: GET
        - name: payments
          path: "/finance/royalty-payments"
          operations:
            - name: post-royalty-payment
              method: POST
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: prices
          path: "/commodities/monthly-average"
          operations:
            - name: get-monthly-avg-price
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: calculate-net-royalties
              method: POST

Retrieves tank gauge readings from SAP.

naftiko: "0.5"
info:
  label: "SAP Tank Farm Gauge Reading"
  description: "Retrieves tank gauge readings from SAP."
  tags:
    - downstream
    - inventory
    - sap
capability:
  exposes:
    - type: mcp
      namespace: tank-gauge
      port: 8080
      tools:
        - name: get-tank-reading
          description: "Look up tank gauge by tank ID."
          inputParameters:
            - name: tank_id
              in: body
              type: string
              description: "SAP equipment ID."
          call: sap.get-gauge-reading
          with:
            tank_id: "{{tank_id}}"
          outputParameters:
            - name: level_feet
              type: number
              mapping: "$.d.CurrentLevel"
            - name: available_capacity_bbl
              type: number
              mapping: "$.d.AvailableCapacity"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: measurements
          path: "/A_MeasurementDocument(Equipment='{{tank_id}}')"
          inputParameters:
            - name: tank_id
              in: path
          operations:
            - name: get-gauge-reading
              method: GET

Retrieves crude oil truck transport logistics from SAP Transportation Management, returning shipment ID, carrier, pickup and delivery locations, and load volume in barrels.

naftiko: "0.5"
info:
  label: "SAP Transportation Logistics Lookup"
  description: "Retrieves crude oil truck transport logistics from SAP Transportation Management, returning shipment ID, carrier, pickup and delivery locations, and load volume in barrels."
  tags:
    - energy
    - logistics
    - sap
    - transportation
capability:
  exposes:
    - type: mcp
      namespace: logistics
      port: 8080
      tools:
        - name: get-transport-shipment
          description: "Look up a crude transport shipment from SAP TM. Returns carrier, locations, and volume."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "The SAP shipment document number."
          call: "sap.get-shipment"
          with:
            shipment_id: "{{shipment_id}}"
          outputParameters:
            - name: carrier
              type: string
              mapping: "$.carrier"
            - name: pickup_location
              type: string
              mapping: "$.pickupLocation"
            - name: delivery_location
              type: string
              mapping: "$.deliveryLocation"
            - name: volume_barrels
              type: number
              mapping: "$.volumeBarrels"
            - name: status
              type: string
              mapping: "$.transportStatus"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: shipments
          path: "/transportation/shipments/{{shipment_id}}"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-shipment
              method: GET

Retrieves vendor payment status from SAP Accounts Payable.

naftiko: "0.5"
info:
  label: "SAP Vendor Payment Status Lookup"
  description: "Retrieves vendor payment status from SAP Accounts Payable."
  tags:
    - procurement
    - sap
    - finance
capability:
  exposes:
    - type: mcp
      namespace: vendor-payment
      port: 8080
      tools:
        - name: get-payment-status
          description: "Look up payment status by invoice number."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "SAP invoice number."
          call: sap.get-payment
          with:
            invoice_number: "{{invoice_number}}"
          outputParameters:
            - name: payment_date
              type: string
              mapping: "$.d.ClearingDate"
            - name: amount
              type: number
              mapping: "$.d.AmountInCompanyCodeCurrency"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/FI_AP_INVOICE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoices
          path: "/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-payment
              method: GET

Retrieves wastewater effluent quality from SAP EHS.

naftiko: "0.5"
info:
  label: "SAP Wastewater Treatment Compliance Check"
  description: "Retrieves wastewater effluent quality from SAP EHS."
  tags:
    - environmental
    - refining
    - sap
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: wastewater-compliance
      port: 8080
      tools:
        - name: check-effluent-quality
          description: "Look up effluent quality by outfall ID."
          inputParameters:
            - name: outfall_id
              in: body
              type: string
              description: "SAP outfall ID."
          call: sap.get-effluent-data
          with:
            outfall_id: "{{outfall_id}}"
          outputParameters:
            - name: ph
              type: number
              mapping: "$.d.PHValue"
            - name: compliant
              type: boolean
              mapping: "$.d.WithinPermitLimits"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_MONITORING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: effluent
          path: "/A_EffluentMonitoring('{{outfall_id}}')"
          inputParameters:
            - name: outfall_id
              in: path
          operations:
            - name: get-effluent-data
              method: GET

Retrieves produced water disposal volumes from SAP for a given disposal well and date range, returning total barrels disposed, injection pressure, and permit compliance status.

naftiko: "0.5"
info:
  label: "SAP Water Disposal Volume Lookup"
  description: "Retrieves produced water disposal volumes from SAP for a given disposal well and date range, returning total barrels disposed, injection pressure, and permit compliance status."
  tags:
    - energy
    - operations
    - sap
    - water-management
capability:
  exposes:
    - type: mcp
      namespace: water-management
      port: 8080
      tools:
        - name: get-water-disposal-volumes
          description: "Look up produced water disposal data from SAP by disposal well. Returns volumes, pressure, and compliance status."
          inputParameters:
            - name: disposal_well_id
              in: body
              type: string
              description: "The disposal well identifier."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "sap.get-disposal-volumes"
          with:
            well_id: "{{disposal_well_id}}"
            from: "{{start_date}}"
            to: "{{end_date}}"
          outputParameters:
            - name: total_barrels
              type: number
              mapping: "$.totalBarrels"
            - name: avg_injection_pressure
              type: number
              mapping: "$.avgInjectionPressurePSI"
            - name: permit_compliant
              type: boolean
              mapping: "$.withinPermitLimit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: water-disposal
          path: "/water-management/disposal/{{well_id}}/volumes"
          inputParameters:
            - name: well_id
              in: path
          operations:
            - name: get-disposal-volumes
              method: GET

Retrieves daily well production allocation from SAP.

naftiko: "0.5"
info:
  label: "SAP Well Production Daily Allocation"
  description: "Retrieves daily well production allocation from SAP."
  tags:
    - upstream
    - production
    - sap
capability:
  exposes:
    - type: mcp
      namespace: well-allocation
      port: 8080
      tools:
        - name: get-well-allocation
          description: "Look up daily allocation by functional location and date."
          inputParameters:
            - name: functional_location
              in: body
              type: string
              description: "SAP functional location."
            - name: allocation_date
              in: body
              type: string
              description: "Date in YYYY-MM-DD."
          call: sap.get-allocation
          with:
            functional_location: "{{functional_location}}"
            allocation_date: "{{allocation_date}}"
          outputParameters:
            - name: oil_bbl
              type: number
              mapping: "$.d.OilVolume"
            - name: gas_mcf
              type: number
              mapping: "$.d.GasVolume"
            - name: water_bbl
              type: number
              mapping: "$.d.WaterVolume"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_PRODUCTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: allocations
          path: "/A_WellAllocation"
          operations:
            - name: get-allocation
              method: GET

Retrieves wellhead pressure readings from SAP.

naftiko: "0.5"
info:
  label: "SAP Wellhead Pressure Reading"
  description: "Retrieves wellhead pressure readings from SAP."
  tags:
    - upstream
    - production
    - sap
capability:
  exposes:
    - type: mcp
      namespace: wellhead-pressure
      port: 8080
      tools:
        - name: get-wellhead-pressure
          description: "Look up wellhead pressure by functional location."
          inputParameters:
            - name: functional_location
              in: body
              type: string
              description: "SAP functional location."
          call: sap.get-pressure-reading
          with:
            functional_location: "{{functional_location}}"
          outputParameters:
            - name: tubing_pressure_psi
              type: number
              mapping: "$.d.TubingPressure"
            - name: casing_pressure_psi
              type: number
              mapping: "$.d.CasingPressure"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_WELL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: pressure-readings
          path: "/A_WellMeasurement(FunctionalLocation='{{functional_location}}')"
          inputParameters:
            - name: functional_location
              in: path
          operations:
            - name: get-pressure-reading
              method: GET

Triggers seismic data processing workflows, monitors progress, and publishes results to Confluence.

naftiko: "0.5"
info:
  label: "Seismic Data Processing Orchestrator"
  description: "Triggers seismic data processing workflows, monitors progress, and publishes results to Confluence."
  tags:
    - upstream
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: seismic-data-processing
      port: 8080
      tools:
        - name: seismic-data-processing
          description: "Triggers seismic data processing workflows."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space_key: "OPS"
                title: "Seismic Data Processing"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content"
          operations:
            - name: create-page
              method: POST

Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning configuration item status, location, and assigned user.

naftiko: "0.5"
info:
  label: "ServiceNow Asset Inventory Lookup"
  description: "Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning configuration item status, location, and assigned user."
  tags:
    - it
    - asset-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-assets
      port: 8080
      tools:
        - name: get-asset-details
          description: "Look up an IT asset in ServiceNow CMDB by asset tag. Returns CI status, location, and owner."
          inputParameters:
            - name: asset_tag
              in: body
              type: string
              description: "The asset tag or serial number."
          call: "servicenow.get-ci"
          with:
            asset_tag: "{{asset_tag}}"
          outputParameters:
            - name: ci_name
              type: string
              mapping: "$.result.name"
            - name: status
              type: string
              mapping: "$.result.install_status"
            - name: location
              type: string
              mapping: "$.result.location.display_value"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: cmdb
          path: "/table/cmdb_ci?sysparm_query=asset_tag={{asset_tag}}"
          inputParameters:
            - name: asset_tag
              in: query
          operations:
            - name: get-ci
              method: GET

Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in Teams.

naftiko: "0.5"
info:
  label: "ServiceNow Change Request for Planned Maintenance"
  description: "Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in Teams."
  tags:
    - itsm
    - change-management
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: open-change-request
          description: "Given a change description, affected CIs, and planned window, create a ServiceNow change request and notify stakeholders in Teams."
          inputParameters:
            - name: change_description
              in: body
              type: string
              description: "Description of the planned change activity."
            - name: affected_ci
              in: body
              type: string
              description: "Comma-separated list of affected configuration item names."
            - name: planned_start
              in: body
              type: string
              description: "Planned change start in ISO 8601 format."
            - name: planned_end
              in: body
              type: string
              description: "Planned change end in ISO 8601 format."
          steps:
            - name: create-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "{{change_description}}"
                type: "standard"
                start_date: "{{planned_start}}"
                end_date: "{{planned_end}}"
                cmdb_ci: "{{affected_ci}}"
            - name: notify-stakeholders
              type: call
              call: "msteams.post-channel-message"
              with:
                channelId: "it-operations"
                message: "Change {{create-change.number}} scheduled: {{change_description}} | Window: {{planned_start}} to {{planned_end}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/channels/{{channelId}}/messages"
          inputParameters:
            - name: channelId
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves environmental permit status from ServiceNow.

naftiko: "0.5"
info:
  label: "ServiceNow Environmental Permit Lookup"
  description: "Retrieves environmental permit status from ServiceNow."
  tags:
    - compliance
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: permit-status
      port: 8080
      tools:
        - name: get-permit-status
          description: "Look up environmental permit status."
          inputParameters:
            - name: permit_id
              in: body
              type: string
              description: "ServiceNow permit record ID."
          call: "servicenow.get-permit"
          with:
            permit_id: "{{permit_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.result.state"
            - name: expiry_date
              type: string
              mapping: "$.result.expiry_date"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: permits
          path: "/table/u_env_permit/{{permit_id}}"
          inputParameters:
            - name: permit_id
              in: path
          operations:
            - name: get-permit
              method: GET

Tracks environmental permits approaching renewal via ServiceNow, Snowflake, and Teams.

naftiko: "0.5"
info:
  label: "ServiceNow Environmental Permit Tracker"
  description: "Tracks environmental permits approaching renewal via ServiceNow, Snowflake, and Teams."
  tags:
    - environmental
    - compliance
    - servicenow
    - snowflake
    - msteams
capability:
  exposes:
    - type: mcp
      namespace: env-permit
      port: 8080
      tools:
        - name: track-env-permits
          description: "Find permits nearing expiry, log, and alert."
          inputParameters:
            - name: days_lookahead
              in: body
              type: number
              description: "Days to look ahead."
          steps:
            - name: query-permits
              type: call
              call: servicenow.query-permits
              with:
                days_lookahead: "{{days_lookahead}}"
            - name: log-report
              type: call
              call: snowflake.insert-permit-report
              with:
                permits: "{{query-permits.records}}"
            - name: alert-team
              type: call
              call: msteams.send-message
              with:
                channel: "environmental-affairs"
                text: "Permit alert | {{query-permits.total_count}} expiring within {{days_lookahead}} days"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: permits
          path: "/table/u_environmental_permit"
          operations:
            - name: query-permits
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: permit-reports
          path: "/statements"
          operations:
            - name: insert-permit-report
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/environmental/channels/affairs/messages"
          operations:
            - name: send-message
              method: POST

Initiates MOC workflow in ServiceNow with Teams notifications.

naftiko: "0.5"
info:
  label: "ServiceNow Management of Change Workflow"
  description: "Initiates MOC workflow in ServiceNow with Teams notifications."
  tags:
    - safety
    - servicenow
    - msteams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: moc-workflow
      port: 8080
      tools:
        - name: initiate-moc
          description: "Create MOC record and notify stakeholders."
          inputParameters:
            - name: change_description
              in: body
              type: string
              description: "Change description."
            - name: facility
              in: body
              type: string
              description: "Facility."
            - name: change_type
              in: body
              type: string
              description: "Type."
          steps:
            - name: create-moc
              type: call
              call: servicenow.create-moc
              with:
                description: "{{change_description}}"
                facility: "{{facility}}"
            - name: notify-reviewers
              type: call
              call: msteams.send-message
              with:
                channel: "process-safety"
                text: "MOC | {{change_type}} | {{facility}} | {{create-moc.number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: moc
          path: "/table/u_management_of_change"
          operations:
            - name: create-moc
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/safety/channels/process/messages"
          operations:
            - name: send-message
              method: POST

Creates investigation in ServiceNow, assigns Workday team, logs in Snowflake, alerts via Teams.

naftiko: "0.5"
info:
  label: "ServiceNow Process Safety Event Investigation"
  description: "Creates investigation in ServiceNow, assigns Workday team, logs in Snowflake, alerts via Teams."
  tags:
    - safety
    - servicenow
    - workday
    - snowflake
    - msteams
capability:
  exposes:
    - type: mcp
      namespace: pse-investigation
      port: 8080
      tools:
        - name: initiate-pse-investigation
          description: "Create investigation, assign team, log, and alert."
          inputParameters:
            - name: event_description
              in: body
              type: string
              description: "Event description."
            - name: facility
              in: body
              type: string
              description: "Facility name."
            - name: severity
              in: body
              type: string
              description: "Severity tier."
          steps:
            - name: create-investigation
              type: call
              call: servicenow.create-investigation
              with:
                description: "{{event_description}}"
                facility: "{{facility}}"
            - name: assign-team
              type: call
              call: workday.get-investigation-team
              with:
                facility: "{{facility}}"
            - name: log-event
              type: call
              call: snowflake.insert-pse-record
              with:
                investigation_id: "{{create-investigation.sys_id}}"
            - name: alert-leadership
              type: call
              call: msteams.send-message
              with:
                channel: "hse-leadership"
                text: "PSE | {{severity}} | {{facility}} | {{create-investigation.number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: investigations
          path: "/table/u_pse_investigation"
          operations:
            - name: create-investigation
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: teams
          path: "/workers"
          operations:
            - name: get-investigation-team
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: pse-records
          path: "/statements"
          operations:
            - name: insert-pse-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/hse/channels/leadership/messages"
          operations:
            - name: send-message
              method: POST

Queries CCS data from Snowflake and pushes to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Carbon Capture Project Dashboard"
  description: "Queries CCS data from Snowflake and pushes to Power BI."
  tags:
    - environmental
    - upstream
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: carbon-capture
      port: 8080
      tools:
        - name: generate-ccs-dashboard
          description: "Query CCS data and push to Power BI."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "CCS project ID."
            - name: date_from
              in: body
              type: string
              description: "Start date."
          steps:
            - name: query-ccs-data
              type: call
              call: snowflake.query-ccs-metrics
              with:
                project_id: "{{project_id}}"
                date_from: "{{date_from}}"
            - name: push-dashboard
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "carbon-capture-monitoring"
                rows: "{{query-ccs-data.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: ccs-metrics
          path: "/statements"
          operations:
            - name: query-ccs-metrics
              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/carbon-capture-monitoring/rows"
          operations:
            - name: push-rows
              method: POST

Queries carbon emission rates per asset from Snowflake.

naftiko: "0.5"
info:
  label: "Snowflake Carbon Emission Rate Lookup"
  description: "Queries carbon emission rates per asset from Snowflake."
  tags:
    - sustainability
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: carbon-data
      port: 8080
      tools:
        - name: get-emission-rate
          description: "Look up carbon emission rate by asset."
          inputParameters:
            - name: asset_id
              in: body
              type: string
              description: "Asset identifier."
          call: "snowflake.run-query"
          with:
            asset_id: "{{asset_id}}"
          outputParameters:
            - name: co2_tons_per_day
              type: number
              mapping: "$.data[0][0]"
            - name: intensity
              type: number
              mapping: "$.data[0][1]"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST

Checks the execution status of Snowflake data pipeline tasks and creates ServiceNow incidents for jobs that fail repeatedly.

naftiko: "0.5"
info:
  label: "Snowflake Data Pipeline Health Monitor"
  description: "Checks the execution status of Snowflake data pipeline tasks and creates ServiceNow incidents for jobs that fail repeatedly."
  tags:
    - data
    - analytics
    - snowflake
    - servicenow
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: data-ops
      port: 8080
      tools:
        - name: check-pipeline-health
          description: "Given a Snowflake task name and failure threshold, check task execution history and open a ServiceNow incident if failures exceed the threshold."
          inputParameters:
            - name: task_name
              in: body
              type: string
              description: "The Snowflake task name to check."
            - name: failure_threshold
              in: body
              type: integer
              description: "Number of consecutive failures before opening an incident."
          steps:
            - name: get-task-history
              type: call
              call: "snowflake.get-task-history"
              with:
                taskName: "{{task_name}}"
            - name: open-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Snowflake task failure: {{task_name}}"
                category: "data_pipeline"
                description: "Task {{task_name}} exceeded failure threshold. Last error: {{get-task-history.error_message}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: task-history
          path: "/databases/tasks/{{taskName}}/executions"
          inputParameters:
            - name: taskName
              in: path
          operations:
            - name: get-task-history
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Queries downstream margins from Snowflake and pushes to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Downstream Margin Analysis"
  description: "Queries downstream margins from Snowflake and pushes to Power BI."
  tags:
    - downstream
    - trading
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: margin-analysis
      port: 8080
      tools:
        - name: analyze-downstream-margins
          description: "Query margins and push to Power BI."
          inputParameters:
            - name: refinery_code
              in: body
              type: string
              description: "Refinery code."
            - name: date_from
              in: body
              type: string
              description: "Start date."
          steps:
            - name: query-margins
              type: call
              call: snowflake.query-product-margins
              with:
                refinery_code: "{{refinery_code}}"
                date_from: "{{date_from}}"
            - name: push-results
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "downstream-margins"
                rows: "{{query-margins.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: margins
          path: "/statements"
          operations:
            - name: query-product-margins
              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/downstream-margins/rows"
          operations:
            - name: push-rows
              method: POST

Queries drilling costs from Snowflake and pushes to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Drilling Cost Per Foot Analysis"
  description: "Queries drilling costs from Snowflake and pushes to Power BI."
  tags:
    - upstream
    - drilling
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: drilling-cost
      port: 8080
      tools:
        - name: analyze-drilling-cost
          description: "Query drilling costs and push to Power BI."
          inputParameters:
            - name: basin
              in: body
              type: string
              description: "Basin name (e.g., Eagle Ford, Bakken, Alaska North Slope)."
            - name: date_from
              in: body
              type: string
              description: "Start date."
          steps:
            - name: query-costs
              type: call
              call: snowflake.query-drilling-costs
              with:
                basin: "{{basin}}"
                date_from: "{{date_from}}"
            - name: push-to-dashboard
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "drilling-cost-per-foot"
                rows: "{{query-costs.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: drilling-costs
          path: "/statements"
          operations:
            - name: query-drilling-costs
              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/drilling-cost-per-foot/rows"
          operations:
            - name: push-rows
              method: POST

Queries Snowflake for GHG emissions and pushes to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Emissions Monitoring Report"
  description: "Queries Snowflake for GHG emissions and pushes to Power BI."
  tags:
    - environmental
    - reporting
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: emissions-report
      port: 8080
      tools:
        - name: generate-emissions-report
          description: "Query emissions and push to Power BI."
          inputParameters:
            - name: period
              in: body
              type: string
              description: "Reporting period."
            - name: facility_type
              in: body
              type: string
              description: "Facility type."
          steps:
            - name: query-emissions
              type: call
              call: snowflake.query-emissions
              with:
                period: "{{period}}"
                facility_type: "{{facility_type}}"
            - name: push-to-dashboard
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "ghg-emissions-quarterly"
                rows: "{{query-emissions.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: emissions
          path: "/statements"
          operations:
            - name: query-emissions
              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/ghg-emissions-quarterly/rows"
          operations:
            - name: push-rows
              method: POST

Validates freshness and completeness of energy production data in Snowflake and raises a ServiceNow incident if data quality thresholds are breached.

naftiko: "0.5"
info:
  label: "Snowflake Energy Production Data Quality Check"
  description: "Validates freshness and completeness of energy production data in Snowflake and raises a ServiceNow incident if data quality thresholds are breached."
  tags:
    - data
    - analytics
    - snowflake
    - servicenow
    - data-quality
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: check-production-data-quality
          description: "Given a Snowflake production table and freshness threshold, validate the table's last update time and row count, and open a ServiceNow ticket if quality checks fail."
          inputParameters:
            - name: table_name
              in: body
              type: string
              description: "Fully qualified Snowflake table name in DATABASE.SCHEMA.TABLE format."
            - name: freshness_hours
              in: body
              type: integer
              description: "Maximum acceptable data age in hours."
          steps:
            - name: get-table-metadata
              type: call
              call: "snowflake.get-table-info"
              with:
                tableName: "{{table_name}}"
            - name: create-dq-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Data quality failure: {{table_name}}"
                category: "data_pipeline"
                description: "Table {{table_name}} failed freshness check. Last updated: {{get-table-metadata.last_altered}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: tables
          path: "/databases/tables"
          inputParameters:
            - name: tableName
              in: query
          operations:
            - name: get-table-info
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Queries trading positions from Snowflake and pushes to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Energy Trading Position Report"
  description: "Queries trading positions from Snowflake and pushes to Power BI."
  tags:
    - trading
    - risk-management
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: trading-positions
      port: 8080
      tools:
        - name: generate-position-report
          description: "Query positions and push to Power BI."
          inputParameters:
            - name: desk
              in: body
              type: string
              description: "Trading desk."
            - name: valuation_date
              in: body
              type: string
              description: "Valuation date."
          steps:
            - name: query-positions
              type: call
              call: snowflake.query-trading-positions
              with:
                desk: "{{desk}}"
                valuation_date: "{{valuation_date}}"
            - name: push-to-dashboard
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "trading-positions-daily"
                rows: "{{query-positions.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: positions
          path: "/statements"
          operations:
            - name: query-trading-positions
              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/trading-positions-daily/rows"
          operations:
            - name: push-rows
              method: POST

Queries Snowflake for daily field operations KPIs by asset area, returning production uptime, wells online count, safety incident count, and environmental compliance score.

naftiko: "0.5"
info:
  label: "Snowflake Field Operations KPI Lookup"
  description: "Queries Snowflake for daily field operations KPIs by asset area, returning production uptime, wells online count, safety incident count, and environmental compliance score."
  tags:
    - energy
    - operations
    - snowflake
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: field-ops
      port: 8080
      tools:
        - name: get-field-ops-kpis
          description: "Look up daily field operations KPIs from Snowflake by asset area. Returns uptime, wells online, safety, and compliance metrics."
          inputParameters:
            - name: asset_area
              in: body
              type: string
              description: "The operating asset area code."
            - name: date
              in: body
              type: string
              description: "Date in YYYY-MM-DD format."
          call: "snowflake.query-field-kpis"
          with:
            area: "{{asset_area}}"
            date: "{{date}}"
          outputParameters:
            - name: production_uptime_pct
              type: number
              mapping: "$.data[0].production_uptime_pct"
            - name: wells_online
              type: number
              mapping: "$.data[0].wells_online"
            - name: safety_incidents
              type: number
              mapping: "$.data[0].safety_incident_count"
            - name: environmental_score
              type: number
              mapping: "$.data[0].environmental_compliance_score"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-field-kpis
              method: POST

Queries Snowflake for LNG cargo tracking data, returning vessel name, current position, estimated arrival, and cargo volume in million cubic feet.

naftiko: "0.5"
info:
  label: "Snowflake LNG Cargo Tracking Lookup"
  description: "Queries Snowflake for LNG cargo tracking data, returning vessel name, current position, estimated arrival, and cargo volume in million cubic feet."
  tags:
    - energy
    - logistics
    - snowflake
    - lng
capability:
  exposes:
    - type: mcp
      namespace: lng-operations
      port: 8080
      tools:
        - name: get-lng-cargo-status
          description: "Look up LNG cargo tracking from Snowflake by cargo ID. Returns vessel details, position, and ETA."
          inputParameters:
            - name: cargo_id
              in: body
              type: string
              description: "The LNG cargo shipment identifier."
          call: "snowflake.query-lng-cargo"
          with:
            cargo_id: "{{cargo_id}}"
          outputParameters:
            - name: vessel_name
              type: string
              mapping: "$.data[0].vessel_name"
            - name: current_lat
              type: number
              mapping: "$.data[0].latitude"
            - name: current_lon
              type: number
              mapping: "$.data[0].longitude"
            - name: eta
              type: string
              mapping: "$.data[0].estimated_arrival"
            - name: volume_mmcf
              type: number
              mapping: "$.data[0].volume_mmcf"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-lng-cargo
              method: POST

Queries LDAR results from Snowflake and creates SAP repair orders.

naftiko: "0.5"
info:
  label: "Snowflake Methane Leak Detection Report"
  description: "Queries LDAR results from Snowflake and creates SAP repair orders."
  tags:
    - environmental
    - upstream
    - snowflake
    - sap
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: methane-ldar
      port: 8080
      tools:
        - name: process-ldar-results
          description: "Query LDAR and create repair orders."
          inputParameters:
            - name: facility_id
              in: body
              type: string
              description: "Facility ID."
            - name: survey_date
              in: body
              type: string
              description: "Survey date."
          steps:
            - name: query-leaks
              type: call
              call: snowflake.query-ldar-results
              with:
                facility_id: "{{facility_id}}"
                survey_date: "{{survey_date}}"
            - name: create-repair-orders
              type: call
              call: sap.create-pm-work-orders
              with:
                leaks: "{{query-leaks.active_leaks}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: ldar
          path: "/statements"
          operations:
            - name: query-ldar-results
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_ORDER_CREATE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: work-orders
          path: "/A_MaintenanceOrder"
          operations:
            - name: create-pm-work-orders
              method: POST

Detects pipeline flow anomalies via Snowflake and creates ServiceNow incidents.

naftiko: "0.5"
info:
  label: "Snowflake Pipeline Flow Rate Anomaly Detector"
  description: "Detects pipeline flow anomalies via Snowflake and creates ServiceNow incidents."
  tags:
    - upstream
    - pipeline
    - snowflake
    - servicenow
    - safety
capability:
  exposes:
    - type: mcp
      namespace: pipeline-anomaly
      port: 8080
      tools:
        - name: detect-flow-anomaly
          description: "Query flow rates and raise incident if anomalous."
          inputParameters:
            - name: pipeline_segment_id
              in: body
              type: string
              description: "Pipeline segment ID."
            - name: hours_lookback
              in: body
              type: number
              description: "Hours to look back."
          steps:
            - name: query-flow-data
              type: call
              call: snowflake.query-flow-rates
              with:
                pipeline_segment_id: "{{pipeline_segment_id}}"
                hours_lookback: "{{hours_lookback}}"
            - name: raise-incident
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Pipeline flow anomaly on {{pipeline_segment_id}}"
                urgency: "2"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: flow-rates
          path: "/statements"
          operations:
            - name: query-flow-rates
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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

Queries daily production volumes from Snowflake by asset.

naftiko: "0.5"
info:
  label: "Snowflake Production Volume Lookup"
  description: "Queries daily production volumes from Snowflake by asset."
  tags:
    - production
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: production-data
      port: 8080
      tools:
        - name: get-production-volume
          description: "Look up daily production volume by asset."
          inputParameters:
            - name: asset_id
              in: body
              type: string
              description: "Production asset identifier."
          call: "snowflake.run-query"
          with:
            asset_id: "{{asset_id}}"
          outputParameters:
            - name: oil_bbl
              type: number
              mapping: "$.data[0][0]"
            - name: gas_mcf
              type: number
              mapping: "$.data[0][1]"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST

Queries well production from Snowflake and pushes EUR estimates to Power BI.

naftiko: "0.5"
info:
  label: "Snowflake Reservoir Decline Curve Analysis"
  description: "Queries well production from Snowflake and pushes EUR estimates to Power BI."
  tags:
    - upstream
    - production
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: decline-curve
      port: 8080
      tools:
        - name: run-decline-analysis
          description: "Query production and push EUR to Power BI."
          inputParameters:
            - name: well_id
              in: body
              type: string
              description: "Well ID."
            - name: months_history
              in: body
              type: number
              description: "Months of history."
          steps:
            - name: query-production
              type: call
              call: snowflake.query-well-production
              with:
                well_id: "{{well_id}}"
                months_history: "{{months_history}}"
            - name: push-forecasts
              type: call
              call: powerbi.push-rows
              with:
                dataset_id: "decline-curve-eur"
                rows: "{{query-production.results}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: production
          path: "/statements"
          operations:
            - name: query-well-production
              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/decline-curve-eur/rows"
          operations:
            - name: push-rows
              method: POST

Queries Snowflake for well completion cost data by well API number, returning total completion cost, cost per lateral foot, and days on well.

naftiko: "0.5"
info:
  label: "Snowflake Well Completion Cost Lookup"
  description: "Queries Snowflake for well completion cost data by well API number, returning total completion cost, cost per lateral foot, and days on well."
  tags:
    - energy
    - finance
    - snowflake
    - drilling
capability:
  exposes:
    - type: mcp
      namespace: well-economics
      port: 8080
      tools:
        - name: get-completion-cost
          description: "Look up well completion costs in Snowflake by API number. Returns total cost, cost per foot, and days on well."
          inputParameters:
            - name: api_number
              in: body
              type: string
              description: "The well API number."
          call: "snowflake.query-completion-cost"
          with:
            api_number: "{{api_number}}"
          outputParameters:
            - name: total_cost
              type: number
              mapping: "$.data[0].total_completion_cost"
            - name: cost_per_foot
              type: number
              mapping: "$.data[0].cost_per_lateral_foot"
            - name: days_on_well
              type: number
              mapping: "$.data[0].days_on_well"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-completion-cost
              method: POST

Triggers a Terraform Cloud workspace run to provision or update oil and gas well monitoring infrastructure, and creates a ServiceNow change record.

naftiko: "0.5"
info:
  label: "Terraform Cloud Well Infrastructure Provisioning"
  description: "Triggers a Terraform Cloud workspace run to provision or update oil and gas well monitoring infrastructure, and creates a ServiceNow change record."
  tags:
    - cloud
    - infrastructure
    - terraform
    - servicenow
    - change-management
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: trigger-terraform-run
          description: "Given a Terraform Cloud workspace ID and change description, trigger a plan and apply run and create a ServiceNow change record."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Terraform Cloud workspace ID."
            - name: change_description
              in: body
              type: string
              description: "Description of the infrastructure change."
          steps:
            - name: create-run
              type: call
              call: "terraform.create-run"
              with:
                workspaceId: "{{workspace_id}}"
                message: "{{change_description}}"
            - name: create-change-record
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Terraform infra change: {{change_description}}"
                description: "Workspace: {{workspace_id}}\nRun ID: {{create-run.runId}}"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

Checks Terraform Cloud workspaces for configuration drift, returning workspace name, last run status, and resource count with drift detected.

naftiko: "0.5"
info:
  label: "Terraform Cloud Workspace Drift Detector"
  description: "Checks Terraform Cloud workspaces for configuration drift, returning workspace name, last run status, and resource count with drift detected."
  tags:
    - devops
    - infrastructure
    - terraform
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: check-workspace-drift
          description: "Check Terraform Cloud workspaces for drift. Returns workspaces with detected drift and resource counts."
          inputParameters:
            - name: organization
              in: body
              type: string
              description: "The Terraform Cloud organization name."
          call: "terraform.list-workspaces"
          with:
            organization: "{{organization}}"
          outputParameters:
            - name: workspaces
              type: array
              mapping: "$.data"
              items:
                - name: workspace_name
                  type: string
                  mapping: "$.attributes.name"
                - name: last_run_status
                  type: string
                  mapping: "$.attributes.latest-run.status"
                - name: resource_count
                  type: number
                  mapping: "$.attributes.resource-count"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: workspaces
          path: "/organizations/{{organization}}/workspaces"
          inputParameters:
            - name: organization
              in: path
          operations:
            - name: list-workspaces
              method: GET

Coordinates a refinery turnaround by pulling the maintenance scope from SAP, scheduling contractor crews in Workday, creating work orders in ServiceNow, and publishing the schedule to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Turnaround Planning Orchestrator"
  description: "Coordinates a refinery turnaround by pulling the maintenance scope from SAP, scheduling contractor crews in Workday, creating work orders in ServiceNow, and publishing the schedule to Microsoft Teams."
  tags:
    - operations
    - maintenance
    - sap
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: turnaround-mgmt
      port: 8080
      tools:
        - name: plan-turnaround
          description: "Orchestrate turnaround planning: pull scope, schedule crews, create work orders, and publish the timeline."
          inputParameters:
            - name: turnaround_id
              in: body
              type: string
              description: "The turnaround project identifier."
            - name: facility_code
              in: body
              type: string
              description: "The refinery or facility code."
          steps:
            - name: get-scope
              type: call
              call: "sap.get-turnaround-scope"
              with:
                turnaround_id: "{{turnaround_id}}"
                facility: "{{facility_code}}"
            - name: schedule-crews
              type: call
              call: "workday.schedule-contractor-crews"
              with:
                project_id: "{{turnaround_id}}"
                headcount: "{{get-scope.required_headcount}}"
                start_date: "{{get-scope.start_date}}"
            - name: create-work-orders
              type: call
              call: "servicenow.create-work-orders"
              with:
                project_id: "{{turnaround_id}}"
                tasks: "{{get-scope.task_list}}"
            - name: publish-schedule
              type: call
              call: "msteams.post-message"
              with:
                channel: "turnaround-{{facility_code}}"
                message: "Turnaround {{turnaround_id}} planned: {{get-scope.task_count}} tasks, {{schedule-crews.crew_count}} crews, start {{get-scope.start_date}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: turnarounds
          path: "/plant-maintenance/turnarounds/{{turnaround_id}}"
          inputParameters:
            - name: turnaround_id
              in: path
          operations:
            - name: get-turnaround-scope
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: scheduling
          path: "/conocophillips/staffing/schedules"
          operations:
            - name: schedule-contractor-crews
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: work-orders
          path: "/table/wm_order"
          operations:
            - name: create-work-orders
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Reconciles SAP vendor payments against contracts, identifies discrepancies, and routes exceptions to ServiceNow.

naftiko: "0.5"
info:
  label: "Vendor Payment Reconciliation Orchestrator"
  description: "Reconciles SAP vendor payments against contracts, identifies discrepancies, and routes exceptions to ServiceNow."
  tags:
    - finance
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vendor-payment-reconcilia
      port: 8080
      tools:
        - name: vendor-payment-reconciliation
          description: "Reconciles SAP vendor payments against contracts."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vendor Payment Reconciliation for {{entity_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

Pulls vendor spend data from SAP Ariba, retrieves quality and delivery metrics from Snowflake, generates a scorecard in Power BI, and emails the procurement team with the results.

naftiko: "0.5"
info:
  label: "Vendor Performance Review Orchestrator"
  description: "Pulls vendor spend data from SAP Ariba, retrieves quality and delivery metrics from Snowflake, generates a scorecard in Power BI, and emails the procurement team with the results."
  tags:
    - procurement
    - finance
    - sap
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: review-vendor-performance
          description: "Orchestrate a vendor performance review: pull spend, compute KPIs, refresh scorecard, and notify procurement."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "The SAP vendor ID."
            - name: review_period
              in: body
              type: string
              description: "Review period in YYYY-Q format."
          steps:
            - name: get-vendor-spend
              type: call
              call: "sap.get-vendor-spend"
              with:
                vendor_id: "{{vendor_id}}"
                period: "{{review_period}}"
            - name: get-quality-metrics
              type: call
              call: "snowflake.query-vendor-quality"
              with:
                vendor_id: "{{vendor_id}}"
                period: "{{review_period}}"
            - name: refresh-scorecard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                dataset_id: "vendor-scorecards"
            - name: send-report
              type: call
              call: "msteams.post-message"
              with:
                channel: "procurement-reviews"
                message: "Vendor {{get-vendor-spend.vendor_name}} review for {{review_period}}: Spend ${{get-vendor-spend.total_spend}}, On-time delivery {{get-quality-metrics.on_time_pct}}%, Quality score {{get-quality-metrics.quality_score}}/100."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: vendors
          path: "/procurement/vendors/{{vendor_id}}/spend"
          inputParameters:
            - name: vendor_id
              in: path
          operations:
            - name: get-vendor-spend
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: queries
          path: "/statements"
          operations:
            - name: query-vendor-quality
              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: trigger-refresh
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Monitors water usage from SAP, validates environmental compliance in Snowflake, and creates ServiceNow tickets.

naftiko: "0.5"
info:
  label: "Water Management Compliance Orchestrator"
  description: "Monitors water usage from SAP, validates environmental compliance in Snowflake, and creates ServiceNow tickets."
  tags:
    - compliance
    - sap
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: water-management-complian
      port: 8080
      tools:
        - name: water-management-compliance
          description: "Monitors water usage from SAP."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: query-data
              type: call
              call: "snowflake.run-query"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Water Management Compliance for {{entity_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
            - name: run-analysis
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

Orchestrates well completion handover by updating SAP asset records, creating ServiceNow operational tickets, and notifying production teams via Slack.

naftiko: "0.5"
info:
  label: "Well Completion Handover Orchestrator"
  description: "Orchestrates well completion handover by updating SAP asset records, creating ServiceNow operational tickets, and notifying production teams via Slack."
  tags:
    - upstream
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: well-completion-handover
      port: 8080
      tools:
        - name: well-completion-handover
          description: "Orchestrates well completion handover by updating SAP asset records."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Well Completion Handover for {{entity_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "Well Completion Handover processed"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              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

Processes well integrity test results from SAP, validates against standards, and creates ServiceNow tickets for failures.

naftiko: "0.5"
info:
  label: "Well Integrity Test Orchestrator"
  description: "Processes well integrity test results from SAP, validates against standards, and creates ServiceNow tickets for failures."
  tags:
    - upstream
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: well-integrity-test
      port: 8080
      tools:
        - name: well-integrity-test
          description: "Processes well integrity test results from SAP."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "Primary entity identifier."
          steps:
            - name: get-sap-data
              type: call
              call: "sap.get-data"
              with:
                entity_id: "{{entity_id}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Well Integrity Test for {{entity_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: data
          path: "/A_Data"
          operations:
            - name: get-data
              method: GET
            - name: create-record
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.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
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

When a new drilling permit is requested, validates well location data in SAP, checks environmental compliance in ServiceNow, generates the permit package in SharePoint, and notifies the regulatory affairs team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Well Permit Approval Orchestrator"
  description: "When a new drilling permit is requested, validates well location data in SAP, checks environmental compliance in ServiceNow, generates the permit package in SharePoint, and notifies the regulatory affairs team via Microsoft Teams."
  tags:
    - energy
    - compliance
    - sap
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: regulatory-affairs
      port: 8080
      tools:
        - name: process-well-permit
          description: "Orchestrate a drilling permit application: validate location, check compliance, generate permit package, and notify the team."
          inputParameters:
            - name: well_name
              in: body
              type: string
              description: "The proposed well name."
            - name: api_number
              in: body
              type: string
              description: "The proposed API well number."
            - name: location_lat
              in: body
              type: number
              description: "Well latitude coordinate."
            - name: location_lon
              in: body
              type: number
              description: "Well longitude coordinate."
          steps:
            - name: validate-location
              type: call
              call: "sap.validate-well-location"
              with:
                api_number: "{{api_number}}"
                lat: "{{location_lat}}"
                lon: "{{location_lon}}"
            - name: check-environmental
              type: call
              call: "servicenow.check-environmental-compliance"
              with:
                well_name: "{{well_name}}"
                lat: "{{location_lat}}"
                lon: "{{location_lon}}"
            - name: generate-permit-package
              type: call
              call: "sharepoint.create-document"
              with:
                library: "DrillPermits"
                filename: "permit-{{api_number}}.docx"
                template: "drilling_permit"
                data:
                  well_name: "{{well_name}}"
                  compliance_status: "{{check-environmental.status}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel: "regulatory-affairs"
                message: "Drilling permit package ready for {{well_name}} ({{api_number}}). Compliance: {{check-environmental.status}}. Review: {{generate-permit-package.url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: well-locations
          path: "/wells/validate-location"
          operations:
            - name: validate-well-location
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: environmental
          path: "/table/u_environmental_compliance"
          operations:
            - name: check-environmental-compliance
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: documents
          path: "/drive/items"
          operations:
            - name: create-document
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/channels/messages"
          operations:
            - name: post-message
              method: POST

Returns benefits enrollment status for an employee from Workday, including medical plan, dental plan, and 401k contribution percentage.

naftiko: "0.5"
info:
  label: "Workday Benefits Enrollment Status"
  description: "Returns benefits enrollment status for an employee from Workday, including medical plan, dental plan, and 401k contribution percentage."
  tags:
    - hr
    - benefits
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-benefits
      port: 8080
      tools:
        - name: get-benefits-status
          description: "Look up benefits enrollment for an employee by worker ID. Returns medical, dental, and 401k enrollment details."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-benefits"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: medical_plan
              type: string
              mapping: "$.medicalPlan"
            - name: dental_plan
              type: string
              mapping: "$.dentalPlan"
            - name: retirement_contribution_pct
              type: number
              mapping: "$.retirementContributionPercent"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: benefits
          path: "/conocophillips/workers/{{worker_id}}/benefits"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-benefits
              method: GET

Verifies contractor safety certifications and site access in Workday with Teams notification.

naftiko: "0.5"
info:
  label: "Workday Contractor Compliance Verification"
  description: "Verifies contractor safety certifications and site access in Workday with Teams notification."
  tags:
    - safety
    - compliance
    - workday
    - msteams
    - upstream
capability:
  exposes:
    - type: mcp
      namespace: contractor-compliance
      port: 8080
      tools:
        - name: verify-contractor
          description: "Check contractor certs and access, notify supervisor."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: site_code
              in: body
              type: string
              description: "Site code."
          steps:
            - name: check-certifications
              type: call
              call: workday.get-worker-certifications
              with:
                worker_id: "{{worker_id}}"
            - name: notify-supervisor
              type: call
              call: msteams.send-message
              with:
                channel: "field-supervisors"
                text: "Contractor | {{worker_id}} | Site: {{site_code}} | Certs: {{check-certifications.all_valid}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: certifications
          path: "/workers/certifications"
          operations:
            - name: get-worker-certifications
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/field/channels/supervisors/messages"
          operations:
            - name: send-message
              method: POST

When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and resolves open ServiceNow tickets.

naftiko: "0.5"
info:
  label: "Workday Employee Offboarding"
  description: "When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and resolves open ServiceNow tickets."
  tags:
    - hr
    - offboarding
    - workday
    - okta
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: trigger-offboarding
          description: "Given a Workday employee ID and termination date, deactivate Okta, disable the Microsoft Graph account, and close open ServiceNow tickets."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID for the departing employee."
            - name: termination_date
              in: body
              type: string
              description: "Termination date in YYYY-MM-DD format."
          steps:
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: deactivate-okta
              type: call
              call: "okta.deactivate-user"
              with:
                login: "{{get-worker.work_email}}"
            - name: disable-m365
              type: call
              call: "msgraph.update-user"
              with:
                userPrincipalName: "{{get-worker.work_email}}"
                accountEnabled: "false"
            - name: close-tickets
              type: call
              call: "servicenow.close-user-tickets"
              with:
                caller_id: "{{get-worker.work_email}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta
      baseUri: "https://conocophillips.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users
          path: "/users/{{login}}/lifecycle/deactivate"
          inputParameters:
            - name: login
              in: path
          operations:
            - name: deactivate-user
              method: POST
    - type: http
      namespace: msgraph
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{userPrincipalName}}"
          inputParameters:
            - name: userPrincipalName
              in: path
          operations:
            - name: update-user
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://conocophillips.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.snow_user"
        password: "$secrets.snow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: close-user-tickets
              method: PATCH

Retrieves field worker schedule from Workday.

naftiko: "0.5"
info:
  label: "Workday Field Worker Schedule Lookup"
  description: "Retrieves field worker schedule from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: field-scheduling
      port: 8080
      tools:
        - name: get-field-schedule
          description: "Look up field worker schedule."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-schedule"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: next_shift
              type: string
              mapping: "$.schedule.nextShift"
            - name: rotation
              type: string
              mapping: "$.schedule.rotation"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers/{{worker_id}}/schedule"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-schedule
              method: GET

Returns current active headcount by department and cost center from Workday for workforce planning and finance reporting.

naftiko: "0.5"
info:
  label: "Workday Headcount Snapshot"
  description: "Returns current active headcount by department and cost center from Workday for workforce planning and finance reporting."
  tags:
    - hr
    - finance
    - workday
    - headcount
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: hr-reporting
      port: 8080
      tools:
        - name: get-headcount-snapshot
          description: "Returns current active employee headcount grouped by department and cost center from Workday. Use for workforce planning, headcount budgeting, and finance period close."
          call: "workday.get-headcount"
          outputParameters:
            - name: employees
              type: array
              mapping: "$.data"
              items:
                - name: employee_id
                  type: string
                  mapping: "$.id"
                - name: full_name
                  type: string
                  mapping: "$.name"
                - name: department
                  type: string
                  mapping: "$.department"
                - name: cost_center
                  type: string
                  mapping: "$.costCenter"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers"
          operations:
            - name: get-headcount
              method: GET

Retrieves mandatory training completion rates from Workday Learning for a given business unit, returning total assigned, completed, overdue, and compliance percentage.

naftiko: "0.5"
info:
  label: "Workday Learning Compliance Dashboard"
  description: "Retrieves mandatory training completion rates from Workday Learning for a given business unit, returning total assigned, completed, overdue, and compliance percentage."
  tags:
    - hr
    - compliance
    - workday
    - training
capability:
  exposes:
    - type: mcp
      namespace: hr-learning
      port: 8080
      tools:
        - name: get-training-compliance
          description: "Look up mandatory training compliance from Workday Learning by business unit. Returns completion rates and overdue counts."
          inputParameters:
            - name: business_unit
              in: body
              type: string
              description: "The Workday business unit code."
          call: "workday.get-learning-compliance"
          with:
            unit: "{{business_unit}}"
          outputParameters:
            - name: total_assigned
              type: number
              mapping: "$.totalAssigned"
            - name: completed
              type: number
              mapping: "$.completed"
            - name: overdue
              type: number
              mapping: "$.overdue"
            - name: compliance_pct
              type: number
              mapping: "$.compliancePercent"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: learning
          path: "/conocophillips/learning/compliance"
          operations:
            - name: get-learning-compliance
              method: GET

Pulls current payroll totals from Workday by department and pay grade for finance period close and compensation analysis.

naftiko: "0.5"
info:
  label: "Workday Payroll Results Export"
  description: "Pulls current payroll totals from Workday by department and pay grade for finance period close and compensation analysis."
  tags:
    - hr
    - finance
    - workday
    - payroll
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: payroll-reporting
      port: 8080
      tools:
        - name: get-payroll-results
          description: "Returns current period payroll totals grouped by department from Workday. Use for finance period close, compensation analysis, and headcount cost reporting."
          call: "workday.get-payroll-results"
          outputParameters:
            - name: total_gross_pay
              type: number
              mapping: "$.totals.grossPay"
            - name: total_employees
              type: number
              mapping: "$.totals.headcount"
            - name: pay_period
              type: string
              mapping: "$.payPeriod"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payroll-results
          path: "/conocophillips/payrollResults"
          operations:
            - name: get-payroll-results
              method: GET

Returns a candidate stage summary for an open Workday job requisition for use by the recruiting team.

naftiko: "0.5"
info:
  label: "Workday Recruiting Pipeline Summary"
  description: "Returns a candidate stage summary for an open Workday job requisition for use by the recruiting team."
  tags:
    - hr
    - recruiting
    - workday
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: recruiting
      port: 8080
      tools:
        - name: get-requisition-pipeline
          description: "Given a Workday job requisition ID, return stage-by-stage candidate counts and the job title. Use when tracking open position pipeline health."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          call: "workday.get-job-requisition"
          with:
            requisitionId: "{{requisition_id}}"
          outputParameters:
            - name: job_title
              type: string
              mapping: "$.jobRequisition.jobTitle"
            - name: total_candidates
              type: number
              mapping: "$.jobRequisition.candidateCount"
            - name: open_since
              type: string
              mapping: "$.jobRequisition.openDate"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: job-requisitions
          path: "/conocophillips/jobRequisitions/{{requisitionId}}"
          inputParameters:
            - name: requisitionId
              in: path
          operations:
            - name: get-job-requisition
              method: GET

When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access profile.

naftiko: "0.5"
info:
  label: "Workday Role Change Access Provisioning"
  description: "When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access profile."
  tags:
    - hr
    - identity
    - workday
    - okta
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: hr-identity
      port: 8080
      tools:
        - name: sync-role-access
          description: "Given a Workday employee ID and new job profile, update Okta group memberships to match the new role's access entitlements."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: new_job_profile
              in: body
              type: string
              description: "The new Workday job profile name."
          steps:
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: assign-okta-group
              type: call
              call: "okta.add-user-to-group"
              with:
                userId: "{{get-worker.okta_user_id}}"
                groupProfile: "{{new_job_profile}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/conocophillips/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: okta
      baseUri: "https://conocophillips.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: group-members
          path: "/groups/{{groupProfile}}/users/{{userId}}"
          inputParameters:
            - name: groupProfile
              in: path
            - name: userId
              in: path
          operations:
            - name: add-user-to-group
              method: PUT

Checks HSE training completion in Workday and notifies safety coordinator via Teams.

naftiko: "0.5"
info:
  label: "Workday Safety Training Compliance Check"
  description: "Checks HSE training completion in Workday and notifies safety coordinator via Teams."
  tags:
    - safety
    - training
    - workday
    - msteams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: safety-training
      port: 8080
      tools:
        - name: check-safety-training
          description: "Verify training completion and notify if overdue."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          steps:
            - name: get-training-status
              type: call
              call: workday.get-learning-records
              with:
                worker_id: "{{worker_id}}"
            - name: notify-overdue
              type: call
              call: msteams.send-message
              with:
                channel: "hse-compliance"
                text: "Safety training | {{worker_id}} | Overdue: {{get-training-status.overdue_count}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: learning
          path: "/learning/records"
          operations:
            - name: get-learning-records
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msteams_token"
      resources:
        - name: channel-messages
          path: "/teams/hse/channels/compliance/messages"
          operations:
            - name: send-message
              method: POST

Returns current vacation, PTO, and sick leave balances for a ConocoPhillips employee from Workday for absence planning and approval workflows.

naftiko: "0.5"
info:
  label: "Workday Time-Off Balance Lookup"
  description: "Returns current vacation, PTO, and sick leave balances for a ConocoPhillips employee from Workday for absence planning and approval workflows."
  tags:
    - hr
    - workday
    - absence-management
capability:
  exposes:
    - type: mcp
      namespace: hr-absence
      port: 8080
      tools:
        - name: get-time-off-balance
          description: "Given a Workday employee ID, return the employee's current accrued vacation, PTO, and sick leave balances. Use before approving a time-off request."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-leave-balance"
          with:
            worker_id: "{{employee_id}}"
          outputParameters:
            - name: vacation_days
              type: number
              mapping: "$.leaveBalances.vacation"
            - name: pto_days
              type: number
              mapping: "$.leaveBalances.pto"
            - name: sick_days
              type: number
              mapping: "$.leaveBalances.sick"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: leave-balances
          path: "/conocophillips/workers/{{worker_id}}/leaveBalance"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-leave-balance
              method: GET