TotalEnergies Capabilities

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

Sort
Expand

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

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

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

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

Retrieves the latest build status for an Azure DevOps pipeline.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Retrieves the latest build status for an Azure DevOps pipeline."
  tags:
    - development
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Fetch latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The Azure DevOps pipeline ID."
          call: "azdo.get-latest-build"
          with:
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/totalenergies"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azure_devops_pat"
      resources:
        - name: builds
          path: "/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: path
          operations:
            - name: get-latest-build
              method: GET

Pulls emissions data from the SAP sustainability module, calculates carbon intensity metrics, logs in the compliance system, and distributes the report via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Carbon Emissions Tracking Pipeline"
  description: "Pulls emissions data from the SAP sustainability module, calculates carbon intensity metrics, logs in the compliance system, and distributes the report via Microsoft Teams."
  tags:
    - sustainability
    - emissions
    - sap
    - compliance
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: carbon-tracking
      port: 8080
      tools:
        - name: generate-emissions-report
          description: "Generate a carbon emissions report across SAP, compliance system, and Teams."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The facility site identifier."
            - name: reporting_period
              in: body
              type: string
              description: "The reporting period in YYYY-MM format."
          steps:
            - name: get-emissions-data
              type: call
              call: "sap.get-emissions"
              with:
                site: "{{site_id}}"
                period: "{{reporting_period}}"
            - name: log-in-compliance
              type: call
              call: "compliance.submit-emissions"
              with:
                site: "{{site_id}}"
                period: "{{reporting_period}}"
                co2_tons: "{{get-emissions-data.total_co2}}"
                methane_tons: "{{get-emissions-data.total_methane}}"
            - name: distribute-report
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "sustainability_reporting"
                text: "Emissions report for {{site_id}} ({{reporting_period}}): CO2: {{get-emissions-data.total_co2}} tons, CH4: {{get-emissions-data.total_methane}} tons. Carbon intensity: {{get-emissions-data.carbon_intensity}} kg/boe."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZSU_EMISSIONS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: emissions
          path: "/EmissionsSet?$filter=Site eq '{{site}}' and Period eq '{{period}}'"
          inputParameters:
            - name: site
              in: path
            - name: period
              in: path
          operations:
            - name: get-emissions
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: emissions-submissions
          path: "/emissions/submit"
          operations:
            - name: submit-emissions
              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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Searches Confluence for articles matching a query string.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches Confluence for articles matching a query string."
  tags:
    - knowledge-management
    - confluence
    - search
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-confluence
          description: "Search Confluence knowledge base for matching articles."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query string."
          call: "confluence.search"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://totalenergies.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql=text~\"{{query}}\""
          inputParameters:
            - name: query
              in: path
          operations:
            - name: search
              method: GET

Retrieves a Confluence wiki page.

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

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

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

Fetches real-time crude oil benchmark prices from Bloomberg Enterprise Data and returns Brent, WTI, and Dubai spot prices.

naftiko: "0.5"
info:
  label: "Crude Oil Price Monitor"
  description: "Fetches real-time crude oil benchmark prices from Bloomberg Enterprise Data and returns Brent, WTI, and Dubai spot prices."
  tags:
    - energy-trading
    - pricing
    - bloomberg-enterprise-data
    - commodities
capability:
  exposes:
    - type: mcp
      namespace: commodity-pricing
      port: 8080
      tools:
        - name: get-crude-prices
          description: "Retrieve current crude oil benchmark prices from Bloomberg."
          inputParameters:
            - name: benchmark
              in: body
              type: string
              description: "The benchmark type (BRENT, WTI, DUBAI, or ALL)."
          call: "bloomberg.get-prices"
          with:
            benchmark: "{{benchmark}}"
  consumes:
    - 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/{{benchmark}}/snapshots"
          inputParameters:
            - name: benchmark
              in: path
          operations:
            - name: get-prices
              method: GET

When a crude oil trade is executed, records the deal in SAP, generates a trade confirmation, sends it to the counterparty via email, and logs in the Tradeweb platform.

naftiko: "0.5"
info:
  label: "Crude Oil Trade Confirmation Pipeline"
  description: "When a crude oil trade is executed, records the deal in SAP, generates a trade confirmation, sends it to the counterparty via email, and logs in the Tradeweb platform."
  tags:
    - energy-trading
    - trade-confirmation
    - sap
    - tradeweb
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: trade-confirmation
      port: 8080
      tools:
        - name: confirm-crude-trade
          description: "Record a trade in SAP, generate confirmation, email counterparty, and log in Tradeweb."
          inputParameters:
            - name: trade_id
              in: body
              type: string
              description: "The internal trade reference."
            - name: counterparty_email
              in: body
              type: string
              description: "The counterparty contact email."
          steps:
            - name: record-trade
              type: call
              call: "sap.record-trade"
              with:
                trade_id: "{{trade_id}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-email"
              with:
                to: "{{counterparty_email}}"
                subject: "Trade Confirmation: {{record-trade.deal_number}}"
                body: "Trade {{record-trade.deal_number}}: {{record-trade.commodity}} {{record-trade.volume}} barrels at ${{record-trade.price}}/bbl. Settlement: {{record-trade.settlement_date}}."
            - name: log-tradeweb
              type: call
              call: "tradeweb.submit-confirmation"
              with:
                deal_number: "{{record-trade.deal_number}}"
                commodity: "{{record-trade.commodity}}"
                volume: "{{record-trade.volume}}"
                price: "{{record-trade.price}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_DEAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: trades
          path: "/TradeSet"
          operations:
            - name: record-trade
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: tradeweb
      baseUri: "https://api.tradeweb.com/v1"
      authentication:
        type: bearer
        token: "$secrets.tradeweb_token"
      resources:
        - name: confirmations
          path: "/confirmations"
          operations:
            - name: submit-confirmation
              method: POST

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

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

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

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

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

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

Queries Datadog for the health status of a specified application service.

naftiko: "0.5"
info:
  label: "Datadog Application Health Check"
  description: "Queries Datadog for the health status of a specified application service."
  tags:
    - monitoring
    - datadog
    - application-health
capability:
  exposes:
    - type: mcp
      namespace: app-monitoring
      port: 8080
      tools:
        - name: get-app-health
          description: "Fetch application health metrics from Datadog."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name."
          call: "datadog.get-service-metrics"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        headerName: "DD-API-KEY"
      resources:
        - name: service-metrics
          path: "/query?query=avg:trace.http.request.duration{service:{{service_name}}}"
          inputParameters:
            - name: service_name
              in: path
          operations:
            - name: get-service-metrics
              method: GET

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

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

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

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

Sends a vendor contract for e-signature via DocuSign and logs status in Salesforce.

naftiko: "0.5"
info:
  label: "DocuSign Contract Execution"
  description: "Sends a vendor contract for e-signature via DocuSign and logs status in Salesforce."
  tags:
    - legal
    - docusign
    - salesforce
    - contracts
capability:
  exposes:
    - type: mcp
      namespace: contract-management
      port: 8080
      tools:
        - name: send-contract-for-signature
          description: "Send a contract via DocuSign and log status in Salesforce."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "The Salesforce contract record ID."
            - name: signer_email
              in: body
              type: string
              description: "The signer's email."
            - name: signer_name
              in: body
              type: string
              description: "The signer's name."
          steps:
            - name: get-contract
              type: call
              call: "salesforce.get-contract"
              with:
                contract_id: "{{contract_id}}"
            - name: send-envelope
              type: call
              call: "docusign.create-envelope"
              with:
                document_url: "{{get-contract.document_url}}"
                signer_email: "{{signer_email}}"
                signer_name: "{{signer_name}}"
            - name: update-contract
              type: call
              call: "salesforce.update-contract"
              with:
                contract_id: "{{contract_id}}"
                status: "Sent for Signature"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://totalenergies.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contracts
          path: "/sobjects/Contract/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              method: GET
            - name: update-contract
              method: PATCH
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: create-envelope
              method: POST

Triggers an emergency shutdown sequence for a facility unit by sending commands to the SCADA system, creating a major ServiceNow incident, alerting the HSE team via Microsoft Teams, and logging in SAP.

naftiko: "0.5"
info:
  label: "Emergency Shutdown Protocol"
  description: "Triggers an emergency shutdown sequence for a facility unit by sending commands to the SCADA system, creating a major ServiceNow incident, alerting the HSE team via Microsoft Teams, and logging in SAP."
  tags:
    - safety
    - emergency
    - scada
    - servicenow
    - microsoft-teams
    - sap
capability:
  exposes:
    - type: mcp
      namespace: emergency-response
      port: 8080
      tools:
        - name: trigger-emergency-shutdown
          description: "Execute emergency shutdown across SCADA, ServiceNow, Teams, and SAP."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The facility plant code."
            - name: unit_id
              in: body
              type: string
              description: "The unit to shut down."
            - name: reason
              in: body
              type: string
              description: "Reason for emergency shutdown."
          steps:
            - name: initiate-shutdown
              type: call
              call: "scada.emergency-stop"
              with:
                plant: "{{plant_code}}"
                unit: "{{unit_id}}"
            - name: create-major-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "EMERGENCY SHUTDOWN: Unit {{unit_id}} at {{plant_code}}"
                priority: "1"
                category: "emergency"
                description: "Emergency shutdown initiated. Reason: {{reason}}. SCADA status: {{initiate-shutdown.status}}."
            - name: alert-all
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "emergency_response"
                text: "EMERGENCY: Unit {{unit_id}} at {{plant_code}} shutdown. Reason: {{reason}}. ServiceNow: {{create-major-incident.number}}"
            - name: log-in-sap
              type: call
              call: "sap.log-emergency-event"
              with:
                plant: "{{plant_code}}"
                unit: "{{unit_id}}"
                reason: "{{reason}}"
                incident_ref: "{{create-major-incident.number}}"
  consumes:
    - type: http
      namespace: scada
      baseUri: "https://scada.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scada_token"
      resources:
        - name: emergency
          path: "/plants/{{plant}}/units/{{unit}}/emergency-stop"
          inputParameters:
            - name: plant
              in: path
            - name: unit
              in: path
          operations:
            - name: emergency-stop
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZPM_EMERGENCY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: emergency-events
          path: "/EmergencyEventSet"
          operations:
            - name: log-emergency-event
              method: POST

Retrieves emissions monitoring data for a facility.

naftiko: "0.5"
info:
  label: "Emissions Monitoring Data"
  description: "Retrieves emissions monitoring data for a facility."
  tags:
    - sustainability
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: get-emissions
          description: "Retrieves emissions monitoring data for a facility."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The emissions monitoring data identifier."
          call: "sustainability-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sustainability-api
      baseUri: "https://api.totalenergies.com/sustainability/v1"
      authentication:
        type: bearer
        token: "$secrets.totalenergies_api_token"
      resources:
        - name: emissions
          path: "/emissions/monitoring/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-emissions
              method: GET

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

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

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

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate new hire onboarding across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to TotalEnergies, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents are at {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves current commodity prices for oil and gas.

naftiko: "0.5"
info:
  label: "Energy Commodity Price Lookup"
  description: "Retrieves current commodity prices for oil and gas."
  tags:
    - trading
    - finance
capability:
  exposes:
    - type: mcp
      namespace: trading
      port: 8080
      tools:
        - name: get-energy
          description: "Retrieves current commodity prices for oil and gas."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The energy commodity price lookup identifier."
          call: "trading-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: trading-api
      baseUri: "https://api.totalenergies.com/trading/v1"
      authentication:
        type: bearer
        token: "$secrets.totalenergies_api_token"
      resources:
        - name: energy
          path: "/energy/commodity/price/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-energy
              method: GET

Retrieves the current hedge position from SAP and Bloomberg market data, calculates hedge effectiveness, and posts analysis to the trading team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Energy Portfolio Hedging Analyzer"
  description: "Retrieves the current hedge position from SAP and Bloomberg market data, calculates hedge effectiveness, and posts analysis to the trading team via Microsoft Teams."
  tags:
    - energy-trading
    - hedging
    - sap
    - bloomberg-enterprise-data
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hedge-analysis
      port: 8080
      tools:
        - name: analyze-hedge-position
          description: "Analyze hedge effectiveness using SAP positions and Bloomberg market data."
          inputParameters:
            - name: portfolio_id
              in: body
              type: string
              description: "The hedge portfolio identifier."
            - name: commodity
              in: body
              type: string
              description: "The commodity being hedged."
          steps:
            - name: get-hedge-position
              type: call
              call: "sap.get-hedge-data"
              with:
                portfolio: "{{portfolio_id}}"
                commodity: "{{commodity}}"
            - name: get-market-data
              type: call
              call: "bloomberg.get-forward-curve"
              with:
                commodity: "{{commodity}}"
            - name: post-analysis
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "trading_hedging"
                text: "Hedge analysis for {{commodity}} ({{portfolio_id}}): Position: {{get-hedge-position.hedge_volume}}. Effectiveness: {{get-hedge-position.effectiveness_pct}}%. Market forward: ${{get-market-data.six_month_forward}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_HEDGE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: hedge-data
          path: "/HedgePositionSet(Portfolio='{{portfolio}}',Commodity='{{commodity}}')"
          inputParameters:
            - name: portfolio
              in: path
            - name: commodity
              in: path
          operations:
            - name: get-hedge-data
              method: GET
    - 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/{{commodity}}/forward-curve"
          inputParameters:
            - name: commodity
              in: path
          operations:
            - name: get-forward-curve
              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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves the current trading position for a commodity and trading desk from the SAP trading system, returning exposure, mark-to-market value, and risk limits.

naftiko: "0.5"
info:
  label: "Energy Trading Position Lookup"
  description: "Retrieves the current trading position for a commodity and trading desk from the SAP trading system, returning exposure, mark-to-market value, and risk limits."
  tags:
    - energy-trading
    - commodities
    - sap
    - risk-management
capability:
  exposes:
    - type: mcp
      namespace: trading-positions
      port: 8080
      tools:
        - name: get-trading-position
          description: "Look up current trading position by commodity and desk from SAP."
          inputParameters:
            - name: commodity
              in: body
              type: string
              description: "The commodity code (e.g., CRUDE, NATGAS, POWER)."
            - name: desk_id
              in: body
              type: string
              description: "The trading desk identifier."
          call: "sap.get-position"
          with:
            commodity: "{{commodity}}"
            desk_id: "{{desk_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_POSITION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: positions
          path: "/PositionSet(Commodity='{{commodity}}',Desk='{{desk_id}}')"
          inputParameters:
            - name: commodity
              in: path
            - name: desk_id
              in: path
          operations:
            - name: get-position
              method: GET

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

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

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

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

Retrieves energy operational data for workflow 3.

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

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

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

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

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

Retrieves energy operational data for workflow 6.

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

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

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

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

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

Retrieves energy operational data for workflow 9.

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

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

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

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

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

Retrieves energy operational data for workflow 12.

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

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

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

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

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

Retrieves energy operational data for workflow 15.

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

Retrieves the operational status and utilization metrics for TotalEnergies electric vehicle charging stations in a region.

naftiko: "0.5"
info:
  label: "EV Charging Station Status"
  description: "Retrieves the operational status and utilization metrics for TotalEnergies electric vehicle charging stations in a region."
  tags:
    - renewable
    - ev-charging
    - station-management
    - sustainability
capability:
  exposes:
    - type: mcp
      namespace: ev-charging
      port: 8080
      tools:
        - name: get-charging-station-status
          description: "Fetch EV charging station status and utilization for a region."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The geographic region code."
          call: "station-mgmt.get-ev-status"
          with:
            region: "{{region_code}}"
  consumes:
    - type: http
      namespace: station-mgmt
      baseUri: "https://stations.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.station_mgmt_token"
      resources:
        - name: ev-stations
          path: "/regions/{{region}}/ev/status"
          inputParameters:
            - name: region
              in: path
          operations:
            - name: get-ev-status
              method: GET

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

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

Retrieves fuel card transaction data from Mastercard and reconciles against station sales in SAP.

naftiko: "0.5"
info:
  label: "Fuel Card Transaction Monitor"
  description: "Retrieves fuel card transaction data from Mastercard and reconciles against station sales in SAP."
  tags:
    - retail
    - payments
    - mastercard
    - sap
capability:
  exposes:
    - type: mcp
      namespace: fuel-card-ops
      port: 8080
      tools:
        - name: reconcile-fuel-card-transactions
          description: "Fetch Mastercard fuel card transactions and reconcile with SAP station sales."
          inputParameters:
            - name: station_id
              in: body
              type: string
              description: "The station identifier."
            - name: date
              in: body
              type: string
              description: "The transaction date in YYYY-MM-DD format."
          steps:
            - name: get-card-transactions
              type: call
              call: "mastercard.get-transactions"
              with:
                merchant_id: "{{station_id}}"
                date: "{{date}}"
            - name: get-sap-sales
              type: call
              call: "sap.get-station-sales"
              with:
                station: "{{station_id}}"
                date: "{{date}}"
  consumes:
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_token"
      resources:
        - name: transactions
          path: "/merchant/{{merchant_id}}/transactions?date={{date}}"
          inputParameters:
            - name: merchant_id
              in: path
            - name: date
              in: path
          operations:
            - name: get-transactions
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZSD_STATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: station-sales
          path: "/StationSalesSet(Station='{{station}}',Date='{{date}}')"
          inputParameters:
            - name: station
              in: path
            - name: date
              in: path
          operations:
            - name: get-station-sales
              method: GET

Retrieves current wholesale gas prices from the trading system and publishes updated retail prices to the station management platform.

naftiko: "0.5"
info:
  label: "Gas Price Update Publisher"
  description: "Retrieves current wholesale gas prices from the trading system and publishes updated retail prices to the station management platform."
  tags:
    - retail
    - pricing
    - energy-trading
    - station-management
capability:
  exposes:
    - type: mcp
      namespace: retail-pricing
      port: 8080
      tools:
        - name: update-station-prices
          description: "Fetch wholesale gas prices and update retail station pricing."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The geographic region code."
            - name: fuel_type
              in: body
              type: string
              description: "Fuel type (e.g., DIESEL, UNLEADED95, UNLEADED98)."
          steps:
            - name: get-wholesale-price
              type: call
              call: "sap.get-wholesale-price"
              with:
                region: "{{region_code}}"
                fuel_type: "{{fuel_type}}"
            - name: update-retail-price
              type: call
              call: "station-mgmt.set-price"
              with:
                region: "{{region_code}}"
                fuel_type: "{{fuel_type}}"
                price: "{{get-wholesale-price.recommended_retail}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZSD_PRICING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: wholesale-prices
          path: "/WholesalePriceSet(Region='{{region}}',FuelType='{{fuel_type}}')"
          inputParameters:
            - name: region
              in: path
            - name: fuel_type
              in: path
          operations:
            - name: get-wholesale-price
              method: GET
    - type: http
      namespace: station-mgmt
      baseUri: "https://stations.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.station_mgmt_token"
      resources:
        - name: prices
          path: "/regions/{{region}}/fuels/{{fuel_type}}/price"
          inputParameters:
            - name: region
              in: path
            - name: fuel_type
              in: path
          operations:
            - name: set-price
              method: PUT

Fetches a document from Google Drive by file ID.

naftiko: "0.5"
info:
  label: "Google Drive Document Retrieval"
  description: "Fetches a document from Google Drive by file ID."
  tags:
    - document-management
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: doc-retrieval
      port: 8080
      tools:
        - name: get-drive-document
          description: "Retrieve a Google Drive document by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
          call: "gdrive.get-file"
          with:
            file_id: "{{file_id}}"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves a file from Google Drive.

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

Creates a permit-to-work in ServiceNow for hazardous operations, validates required safety training via Workday, and notifies the site supervisor via Microsoft Teams.

naftiko: "0.5"
info:
  label: "HSE Permit to Work Manager"
  description: "Creates a permit-to-work in ServiceNow for hazardous operations, validates required safety training via Workday, and notifies the site supervisor via Microsoft Teams."
  tags:
    - safety
    - permit-to-work
    - servicenow
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: permit-management
      port: 8080
      tools:
        - name: create-permit-to-work
          description: "Create a permit-to-work with training validation and supervisor notification."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The site identifier."
            - name: work_type
              in: body
              type: string
              description: "Type of hazardous work (e.g., hot-work, confined-space, electrical)."
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID of the person performing the work."
            - name: supervisor_upn
              in: body
              type: string
              description: "The supervisor's email for notification."
          steps:
            - name: validate-training
              type: call
              call: "workday.get-training-status"
              with:
                worker_id: "{{worker_id}}"
                required_course: "{{work_type}}_safety"
            - name: create-permit
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_permit_to_work"
                site: "{{site_id}}"
                work_type: "{{work_type}}"
                worker: "{{worker_id}}"
                training_valid: "{{validate-training.is_current}}"
            - name: notify-supervisor
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{supervisor_upn}}"
                text: "Permit to Work request: {{work_type}} at {{site_id}}. Worker training: {{validate-training.is_current}}. Permit: {{create-permit.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: training
          path: "/workers/{{worker_id}}/training?course={{required_course}}"
          inputParameters:
            - name: worker_id
              in: path
            - name: required_course
              in: path
          operations:
            - name: get-training-status
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves hydrogen production metrics from the green hydrogen facility management system including output rate, electrolyzer efficiency, and water consumption.

naftiko: "0.5"
info:
  label: "Hydrogen Production Monitor"
  description: "Retrieves hydrogen production metrics from the green hydrogen facility management system including output rate, electrolyzer efficiency, and water consumption."
  tags:
    - renewable
    - hydrogen
    - sustainability
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: hydrogen-ops
      port: 8080
      tools:
        - name: get-hydrogen-production
          description: "Fetch green hydrogen production metrics."
          inputParameters:
            - name: facility_id
              in: body
              type: string
              description: "The hydrogen facility identifier."
          call: "energy-mgmt.get-hydrogen-data"
          with:
            facility: "{{facility_id}}"
  consumes:
    - type: http
      namespace: energy-mgmt
      baseUri: "https://ems.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ems_token"
      resources:
        - name: hydrogen
          path: "/hydrogen/facilities/{{facility}}/production"
          inputParameters:
            - name: facility
              in: path
          operations:
            - name: get-hydrogen-data
              method: GET

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

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

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

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

Retrieves the current sprint and its issues for a Jira project board.

naftiko: "0.5"
info:
  label: "Jira Sprint Board Viewer"
  description: "Retrieves the current sprint and its issues for a Jira project board."
  tags:
    - development
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: dev-ops
      port: 8080
      tools:
        - name: get-current-sprint
          description: "Fetch current sprint details for a Jira board."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
          call: "jira.get-sprint"
          with:
            board_id: "{{board_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://totalenergies.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprint
              method: GET

Retrieves a Jira ticket by issue key.

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

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

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

Fetches a job requisition from Workday and publishes it to LinkedIn Talent Solutions.

naftiko: "0.5"
info:
  label: "LinkedIn Job Posting Publisher"
  description: "Fetches a job requisition from Workday and publishes it to LinkedIn Talent Solutions."
  tags:
    - hr
    - recruiting
    - workday
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: publish-job-to-linkedin
          description: "Fetch a Workday job requisition and publish to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: publish-posting
              type: call
              call: "linkedin.create-job-posting"
              with:
                title: "{{get-requisition.title}}"
                description: "{{get-requisition.description}}"
                location: "{{get-requisition.location}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/simpleJobPostings"
          operations:
            - name: create-job-posting
              method: POST

Checks LNG vessel availability from the fleet management system, creates a cargo booking in SAP, and notifies the shipping desk via Microsoft Teams.

naftiko: "0.5"
info:
  label: "LNG Cargo Scheduling Pipeline"
  description: "Checks LNG vessel availability from the fleet management system, creates a cargo booking in SAP, and notifies the shipping desk via Microsoft Teams."
  tags:
    - energy-trading
    - lng
    - shipping
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: lng-scheduling
      port: 8080
      tools:
        - name: schedule-lng-cargo
          description: "Check vessel availability, book cargo in SAP, and notify shipping desk."
          inputParameters:
            - name: loading_terminal
              in: body
              type: string
              description: "The loading terminal identifier."
            - name: discharge_port
              in: body
              type: string
              description: "The discharge port."
            - name: volume_cbm
              in: body
              type: string
              description: "Cargo volume in cubic meters."
            - name: loading_date
              in: body
              type: string
              description: "Requested loading date in YYYY-MM-DD format."
          steps:
            - name: check-vessel
              type: call
              call: "fleet-mgmt.get-available-vessel"
              with:
                terminal: "{{loading_terminal}}"
                date: "{{loading_date}}"
                volume: "{{volume_cbm}}"
            - name: create-booking
              type: call
              call: "sap.create-cargo-booking"
              with:
                vessel_id: "{{check-vessel.vessel_id}}"
                terminal: "{{loading_terminal}}"
                discharge: "{{discharge_port}}"
                volume: "{{volume_cbm}}"
                date: "{{loading_date}}"
            - name: notify-desk
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "lng_shipping_desk"
                text: "LNG cargo booked: {{check-vessel.vessel_name}} from {{loading_terminal}} to {{discharge_port}}. Volume: {{volume_cbm}} cbm. Loading: {{loading_date}}. Booking: {{create-booking.booking_id}}"
  consumes:
    - type: http
      namespace: fleet-mgmt
      baseUri: "https://fleet.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.fleet_mgmt_token"
      resources:
        - name: vessels
          path: "/vessels/available?terminal={{terminal}}&date={{date}}&minCapacity={{volume}}"
          inputParameters:
            - name: terminal
              in: path
            - name: date
              in: path
            - name: volume
              in: path
          operations:
            - name: get-available-vessel
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_CARGO_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: bookings
          path: "/CargoBookingSet"
          operations:
            - name: create-cargo-booking
              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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

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

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

Sends a formatted email via Microsoft Outlook Graph API.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends a formatted email via Microsoft Outlook Graph API."
  tags:
    - communications
    - microsoft-outlook
    - email
capability:
  exposes:
    - type: mcp
      namespace: email-comms
      port: 8080
      tools:
        - name: send-outlook-email
          description: "Send an email via Microsoft Outlook."
          inputParameters:
            - name: to_address
              in: body
              type: string
              description: "The recipient email."
            - name: subject
              in: body
              type: string
              description: "The subject."
            - name: body_text
              in: body
              type: string
              description: "The body."
          call: "outlook.send-email"
          with:
            to: "{{to_address}}"
            subject: "{{subject}}"
            body: "{{body_text}}"
  consumes:
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Sends a formatted message to a specified Microsoft Teams channel.

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

Sends a message to a Microsoft Teams channel.

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

Submits a natural gas transportation nomination to the pipeline operator via the nomination system, records in SAP, and confirms with the trading desk via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Natural Gas Nomination Pipeline"
  description: "Submits a natural gas transportation nomination to the pipeline operator via the nomination system, records in SAP, and confirms with the trading desk via Microsoft Teams."
  tags:
    - energy-trading
    - natural-gas
    - nominations
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: gas-nominations
      port: 8080
      tools:
        - name: submit-gas-nomination
          description: "Submit a gas transportation nomination, record in SAP, and confirm with trading."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline operator identifier."
            - name: receipt_point
              in: body
              type: string
              description: "The receipt point on the pipeline."
            - name: delivery_point
              in: body
              type: string
              description: "The delivery point."
            - name: volume_mmbtu
              in: body
              type: string
              description: "Volume in MMBtu."
            - name: flow_date
              in: body
              type: string
              description: "The flow date in YYYY-MM-DD format."
          steps:
            - name: submit-nomination
              type: call
              call: "nomination-system.submit"
              with:
                pipeline: "{{pipeline_id}}"
                receipt: "{{receipt_point}}"
                delivery: "{{delivery_point}}"
                volume: "{{volume_mmbtu}}"
                date: "{{flow_date}}"
            - name: record-in-sap
              type: call
              call: "sap.create-nomination-record"
              with:
                pipeline: "{{pipeline_id}}"
                volume: "{{volume_mmbtu}}"
                date: "{{flow_date}}"
                confirmation_id: "{{submit-nomination.confirmation_id}}"
            - name: confirm-with-desk
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "gas_trading_desk"
                text: "Gas nomination confirmed: {{volume_mmbtu}} MMBtu on {{pipeline_id}} ({{receipt_point}} to {{delivery_point}}) for {{flow_date}}. Confirmation: {{submit-nomination.confirmation_id}}"
  consumes:
    - type: http
      namespace: nomination-system
      baseUri: "https://nominations.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.nomination_token"
      resources:
        - name: nominations
          path: "/nominations"
          operations:
            - name: submit
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_NOMINATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: nominations
          path: "/NominationSet"
          operations:
            - name: create-nomination-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Aggregates daily production data from SAP for an offshore platform, generates a Power BI report, and distributes to operations management via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Offshore Platform Production Report"
  description: "Aggregates daily production data from SAP for an offshore platform, generates a Power BI report, and distributes to operations management via Microsoft Teams."
  tags:
    - production
    - offshore
    - sap
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: offshore-reporting
      port: 8080
      tools:
        - name: generate-platform-report
          description: "Generate and distribute an offshore platform production report."
          inputParameters:
            - name: platform_id
              in: body
              type: string
              description: "The offshore platform identifier."
            - name: report_date
              in: body
              type: string
              description: "The report date in YYYY-MM-DD format."
          steps:
            - name: get-production-data
              type: call
              call: "sap.get-platform-production"
              with:
                platform: "{{platform_id}}"
                date: "{{report_date}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "offshore_production_ds"
            - name: distribute-report
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "offshore_ops_management"
                text: "Platform {{platform_id}} production ({{report_date}}): Oil: {{get-production-data.oil_bpd}} bpd, Gas: {{get-production-data.gas_mmscfd}} MMscfd, Water cut: {{get-production-data.water_cut_pct}}%. Report: {{refresh-dashboard.report_url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZPR_PLATFORM_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: platform-production
          path: "/PlatformProductionSet(Platform='{{platform}}',Date='{{date}}')"
          inputParameters:
            - name: platform
              in: path
            - name: date
              in: path
          operations:
            - name: get-platform-production
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Monitors flow rates in a pipeline segment.

naftiko: "0.5"
info:
  label: "Pipeline Flow Rate Monitor"
  description: "Monitors flow rates in a pipeline segment."
  tags:
    - operations
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-pipeline
          description: "Monitors flow rates in a pipeline segment."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The pipeline flow rate monitor identifier."
          call: "operations-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: operations-api
      baseUri: "https://api.totalenergies.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.totalenergies_api_token"
      resources:
        - name: pipeline
          path: "/pipeline/flow/rate/monitor/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-pipeline
              method: GET

Checks pipeline integrity sensor data from the SCADA system and creates a ServiceNow incident if anomalies are detected.

naftiko: "0.5"
info:
  label: "Pipeline Integrity Monitor"
  description: "Checks pipeline integrity sensor data from the SCADA system and creates a ServiceNow incident if anomalies are detected."
  tags:
    - safety
    - pipeline
    - scada
    - servicenow
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: pipeline-integrity
      port: 8080
      tools:
        - name: check-pipeline-integrity
          description: "Monitor pipeline integrity sensors and create incident if anomalies detected."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline segment identifier."
          steps:
            - name: get-sensor-data
              type: call
              call: "scada.get-pipeline-readings"
              with:
                pipeline_id: "{{pipeline_id}}"
            - name: create-alert
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Pipeline integrity anomaly: {{pipeline_id}}"
                category: "pipeline_safety"
                priority: "1"
                description: "Pressure: {{get-sensor-data.pressure_psi}}. Flow: {{get-sensor-data.flow_rate}}. Anomaly score: {{get-sensor-data.anomaly_score}}."
  consumes:
    - type: http
      namespace: scada
      baseUri: "https://scada.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scada_token"
      resources:
        - name: pipeline-readings
          path: "/pipelines/{{pipeline_id}}/current"
          inputParameters:
            - name: pipeline_id
              in: path
          operations:
            - name: get-pipeline-readings
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.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

Triggers a Power BI dataset refresh.

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

Triggers a Power BI dataset refresh for executive energy dashboards and returns status.

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

Retrieves current power grid load data from the energy management system and adjusts generation dispatch recommendations.

naftiko: "0.5"
info:
  label: "Power Grid Load Balancer"
  description: "Retrieves current power grid load data from the energy management system and adjusts generation dispatch recommendations."
  tags:
    - energy-trading
    - power-grid
    - energy-management
    - dispatch
capability:
  exposes:
    - type: mcp
      namespace: grid-management
      port: 8080
      tools:
        - name: get-grid-load
          description: "Fetch current power grid load and dispatch data."
          inputParameters:
            - name: grid_zone
              in: body
              type: string
              description: "The grid zone identifier."
          call: "energy-mgmt.get-grid-load"
          with:
            zone: "{{grid_zone}}"
  consumes:
    - type: http
      namespace: energy-mgmt
      baseUri: "https://ems.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ems_token"
      resources:
        - name: grid-load
          path: "/grid/zones/{{zone}}/load"
          inputParameters:
            - name: zone
              in: path
          operations:
            - name: get-grid-load
              method: GET

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

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

Queries SAP for an oil/gas well's production performance data including daily production rate, water cut, and gas-oil ratio.

naftiko: "0.5"
info:
  label: "Production Well Performance Lookup"
  description: "Queries SAP for an oil/gas well's production performance data including daily production rate, water cut, and gas-oil ratio."
  tags:
    - production
    - upstream
    - sap
    - wells
capability:
  exposes:
    - type: mcp
      namespace: well-performance
      port: 8080
      tools:
        - name: get-well-production
          description: "Retrieve well production performance data from SAP."
          inputParameters:
            - name: well_id
              in: body
              type: string
              description: "The well identifier."
          call: "sap.get-well-data"
          with:
            well_id: "{{well_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZPR_WELL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: well-data
          path: "/WellProductionSet('{{well_id}}')"
          inputParameters:
            - name: well_id
              in: path
          operations:
            - name: get-well-data
              method: GET

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

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

Checks SAP Plant Maintenance for upcoming turnaround tasks at a refinery and creates ServiceNow work orders for the maintenance team.

naftiko: "0.5"
info:
  label: "Refinery Maintenance Scheduler"
  description: "Checks SAP Plant Maintenance for upcoming turnaround tasks at a refinery and creates ServiceNow work orders for the maintenance team."
  tags:
    - refining
    - maintenance
    - sap
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: refinery-maintenance
      port: 8080
      tools:
        - name: schedule-turnaround-tasks
          description: "Retrieve upcoming turnaround tasks from SAP and create ServiceNow work orders."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The SAP refinery plant code."
            - name: days_ahead
              in: body
              type: string
              description: "Days to look ahead for scheduled tasks."
          steps:
            - name: get-tasks
              type: call
              call: "sap.get-turnaround-tasks"
              with:
                plant: "{{plant_code}}"
                days: "{{days_ahead}}"
            - name: create-work-orders
              type: call
              call: "servicenow.create-record"
              with:
                table: "wm_order"
                short_description: "Turnaround: {{get-tasks.task_summary}}"
                plant: "{{plant_code}}"
                scheduled_date: "{{get-tasks.scheduled_date}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZPM_TURNAROUND_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: turnaround-tasks
          path: "/TurnaroundTaskSet?$filter=Plant eq '{{plant}}' and DaysAhead le {{days}}"
          inputParameters:
            - name: plant
              in: path
            - name: days
              in: path
          operations:
            - name: get-turnaround-tasks
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Queries SAP for refined product inventory at a refinery including gasoline, diesel, jet fuel, and naphtha stock levels.

naftiko: "0.5"
info:
  label: "Refinery Product Inventory"
  description: "Queries SAP for refined product inventory at a refinery including gasoline, diesel, jet fuel, and naphtha stock levels."
  tags:
    - refining
    - inventory
    - sap
    - products
capability:
  exposes:
    - type: mcp
      namespace: refinery-inventory
      port: 8080
      tools:
        - name: get-product-inventory
          description: "Fetch refined product inventory levels at a refinery from SAP."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The SAP refinery plant code."
          call: "sap.get-refinery-stock"
          with:
            plant: "{{plant_code}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZMM_REFINERY_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: refinery-stock
          path: "/RefineryStockSet?$filter=Plant eq '{{plant}}'"
          inputParameters:
            - name: plant
              in: path
          operations:
            - name: get-refinery-stock
              method: GET

Checks current refinery throughput and capacity utilization.

naftiko: "0.5"
info:
  label: "Refinery Throughput Status"
  description: "Checks current refinery throughput and capacity utilization."
  tags:
    - refining
    - operations
capability:
  exposes:
    - type: mcp
      namespace: refining
      port: 8080
      tools:
        - name: get-refinery
          description: "Checks current refinery throughput and capacity utilization."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The refinery throughput status identifier."
          call: "refining-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: refining-api
      baseUri: "https://api.totalenergies.com/refining/v1"
      authentication:
        type: bearer
        token: "$secrets.totalenergies_api_token"
      resources:
        - name: refinery
          path: "/refinery/throughput/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-refinery
              method: GET

Queries the SAP Plant Maintenance system for current operational status of a refinery processing unit, returning throughput, temperature, pressure, and alarm status.

naftiko: "0.5"
info:
  label: "Refinery Unit Status Monitor"
  description: "Queries the SAP Plant Maintenance system for current operational status of a refinery processing unit, returning throughput, temperature, pressure, and alarm status."
  tags:
    - refining
    - operations
    - sap
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: refinery-ops
      port: 8080
      tools:
        - name: get-unit-status
          description: "Retrieve operational status for a refinery processing unit from SAP."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The SAP plant code for the refinery."
            - name: unit_id
              in: body
              type: string
              description: "The processing unit identifier."
          call: "sap.get-unit-status"
          with:
            plant: "{{plant_code}}"
            unit: "{{unit_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZPM_REFINERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: unit-status
          path: "/UnitStatusSet(Plant='{{plant}}',Unit='{{unit}}')"
          inputParameters:
            - name: plant
              in: path
            - name: unit
              in: path
          operations:
            - name: get-unit-status
              method: GET

Generates a regulatory compliance report from SAP environmental data, uploads to SharePoint, and logs the submission in ServiceNow.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Report Submitter"
  description: "Generates a regulatory compliance report from SAP environmental data, uploads to SharePoint, and logs the submission in ServiceNow."
  tags:
    - compliance
    - regulatory
    - sap
    - sharepoint
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: regulatory-reporting
      port: 8080
      tools:
        - name: submit-regulatory-report
          description: "Generate, upload, and log a regulatory compliance report."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The facility site identifier."
            - name: regulation_type
              in: body
              type: string
              description: "The regulation type (e.g., EU-ETS, REACH, SEVESO)."
            - name: period
              in: body
              type: string
              description: "The reporting period in YYYY-MM format."
          steps:
            - name: generate-data
              type: call
              call: "sap.get-compliance-data"
              with:
                site: "{{site_id}}"
                regulation: "{{regulation_type}}"
                period: "{{period}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "regulatory_compliance"
                file_path: "Reports/{{regulation_type}}/{{site_id}}_{{period}}.pdf"
                content: "{{generate-data.report_content}}"
            - name: log-submission
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_regulatory_filing"
                site: "{{site_id}}"
                regulation: "{{regulation_type}}"
                period: "{{period}}"
                document_url: "{{upload-report.url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZSU_COMPLIANCE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: compliance-data
          path: "/ComplianceDataSet"
          operations:
            - name: get-compliance-data
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Fetches solar and wind generation data from the energy management system for a renewable asset and returns current output, capacity factor, and forecast.

naftiko: "0.5"
info:
  label: "Renewable Energy Generation Dashboard"
  description: "Fetches solar and wind generation data from the energy management system for a renewable asset and returns current output, capacity factor, and forecast."
  tags:
    - renewable
    - energy-generation
    - monitoring
    - sustainability
capability:
  exposes:
    - type: mcp
      namespace: renewable-generation
      port: 8080
      tools:
        - name: get-generation-data
          description: "Retrieve current renewable energy generation metrics for an asset."
          inputParameters:
            - name: asset_id
              in: body
              type: string
              description: "The renewable energy asset identifier."
          call: "energy-mgmt.get-generation"
          with:
            asset_id: "{{asset_id}}"
  consumes:
    - type: http
      namespace: energy-mgmt
      baseUri: "https://ems.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ems_token"
      resources:
        - name: generation
          path: "/assets/{{asset_id}}/generation/current"
          inputParameters:
            - name: asset_id
              in: path
          operations:
            - name: get-generation
              method: GET

Logs a safety incident in ServiceNow, creates a Jira investigation task, and sends an urgent alert to the HSE team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Safety Incident Reporter"
  description: "Logs a safety incident in ServiceNow, creates a Jira investigation task, and sends an urgent alert to the HSE team via Microsoft Teams."
  tags:
    - safety
    - hse
    - servicenow
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: safety-reporting
      port: 8080
      tools:
        - name: report-safety-incident
          description: "Log a safety incident across ServiceNow, Jira, and Teams."
          inputParameters:
            - name: site_name
              in: body
              type: string
              description: "The facility or site name."
            - name: incident_type
              in: body
              type: string
              description: "Type of safety incident (e.g., spill, injury, near-miss, fire)."
            - name: severity
              in: body
              type: string
              description: "Severity level: minor, moderate, major, critical."
            - name: description
              in: body
              type: string
              description: "Detailed description of the incident."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Safety incident: {{incident_type}} at {{site_name}}"
                category: "hse_incident"
                priority: "{{severity}}"
                description: "{{description}}"
            - name: create-investigation
              type: call
              call: "jira.create-issue"
              with:
                project: "HSE"
                summary: "Investigate: {{incident_type}} at {{site_name}}"
                description: "ServiceNow: {{create-incident.number}}. {{description}}"
                issue_type: "Task"
                priority: "{{severity}}"
            - name: alert-hse-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "hse_alerts"
                text: "SAFETY ALERT ({{severity}}): {{incident_type}} at {{site_name}}. ServiceNow: {{create-incident.number}}. Jira: {{create-investigation.key}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://totalenergies.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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves a Salesforce account by ID including contract details and relationship tier.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves a Salesforce account by ID including contract details and relationship tier."
  tags:
    - sales
    - salesforce
    - accounts
capability:
  exposes:
    - type: mcp
      namespace: sales-accounts
      port: 8080
      tools:
        - name: get-account
          description: "Look up a Salesforce account by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://totalenergies.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

Retrieves a Salesforce account by account ID.

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

Creates and submits a travel expense report in SAP Concur.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Submitter"
  description: "Creates and submits a travel expense report in SAP Concur."
  tags:
    - finance
    - sap-concur
    - expense-management
    - travel
capability:
  exposes:
    - type: mcp
      namespace: expense-mgmt
      port: 8080
      tools:
        - name: submit-expense-report
          description: "Create and submit a travel expense report in SAP Concur."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee ID."
            - name: report_name
              in: body
              type: string
              description: "Name for the expense report."
            - name: expense_entries
              in: body
              type: string
              description: "JSON array of expense entries."
          call: "concur.create-report"
          with:
            employee_id: "{{employee_id}}"
            report_name: "{{report_name}}"
            entries: "{{expense_entries}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports"
          operations:
            - name: create-report
              method: POST

Retrieves material master data from SAP by material number.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves material master data from SAP by material number."
  tags:
    - erp
    - sap
    - materials
    - master-data
capability:
  exposes:
    - type: mcp
      namespace: material-master
      port: 8080
      tools:
        - name: get-material
          description: "Look up SAP material master data by material number."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          call: "sap.get-material"
          with:
            material_number: "{{material_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: get-material
              method: GET

Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery schedule.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery schedule."
  tags:
    - procurement
    - sap
    - purchase-order
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP purchase order by PO number."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.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

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

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

Retrieves seismic survey data from the geoscience database for a specified exploration block.

naftiko: "0.5"
info:
  label: "Seismic Survey Data Retrieval"
  description: "Retrieves seismic survey data from the geoscience database for a specified exploration block."
  tags:
    - upstream
    - exploration
    - geoscience
    - research
capability:
  exposes:
    - type: mcp
      namespace: geoscience
      port: 8080
      tools:
        - name: get-seismic-data
          description: "Fetch seismic survey data for an exploration block."
          inputParameters:
            - name: block_id
              in: body
              type: string
              description: "The exploration block identifier."
          call: "geoscience-db.get-survey"
          with:
            block_id: "{{block_id}}"
  consumes:
    - type: http
      namespace: geoscience-db
      baseUri: "https://geoscience.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.geoscience_token"
      resources:
        - name: surveys
          path: "/blocks/{{block_id}}/seismic"
          inputParameters:
            - name: block_id
              in: path
          operations:
            - name: get-survey
              method: GET

Creates a new incident in ServiceNow.

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

Retrieves a ServiceNow incident by number and returns current state, priority, assigned group, and resolution notes.

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

Fetches a document from SharePoint by site and path.

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

Sends a notification to a Slack channel.

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

Runs an analytics query against the Snowflake data warehouse.

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

Retrieves solar panel performance data from the energy management system, compares against weather forecasts, identifies underperforming arrays, and creates Jira maintenance tasks.

naftiko: "0.5"
info:
  label: "Solar Farm Performance Optimizer"
  description: "Retrieves solar panel performance data from the energy management system, compares against weather forecasts, identifies underperforming arrays, and creates Jira maintenance tasks."
  tags:
    - renewable
    - solar
    - energy-management
    - jira
    - optimization
capability:
  exposes:
    - type: mcp
      namespace: solar-optimization
      port: 8080
      tools:
        - name: optimize-solar-performance
          description: "Analyze solar array performance and create maintenance tasks for underperformers."
          inputParameters:
            - name: farm_id
              in: body
              type: string
              description: "The solar farm identifier."
          steps:
            - name: get-performance
              type: call
              call: "energy-mgmt.get-array-performance"
              with:
                farm_id: "{{farm_id}}"
            - name: get-weather
              type: call
              call: "energy-mgmt.get-weather-forecast"
              with:
                farm_id: "{{farm_id}}"
            - name: create-maintenance
              type: call
              call: "jira.create-issue"
              with:
                project: "SOLAR"
                summary: "Underperforming arrays at {{farm_id}}: {{get-performance.underperforming_count}} arrays"
                description: "Expected output: {{get-weather.expected_kwh}}. Actual: {{get-performance.actual_kwh}}. Gap: {{get-performance.gap_pct}}%."
                issue_type: "Task"
  consumes:
    - type: http
      namespace: energy-mgmt
      baseUri: "https://ems.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ems_token"
      resources:
        - name: array-performance
          path: "/farms/{{farm_id}}/arrays/performance"
          inputParameters:
            - name: farm_id
              in: path
          operations:
            - name: get-array-performance
              method: GET
        - name: weather
          path: "/farms/{{farm_id}}/weather/forecast"
          inputParameters:
            - name: farm_id
              in: path
          operations:
            - name: get-weather-forecast
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://totalenergies.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

Queries Splunk for security events in a time range for OT and IT systems, returning event counts and severity breakdown.

naftiko: "0.5"
info:
  label: "Splunk Security Event Monitor"
  description: "Queries Splunk for security events in a time range for OT and IT systems, returning event counts and severity breakdown."
  tags:
    - security
    - splunk
    - monitoring
    - cybersecurity
capability:
  exposes:
    - type: mcp
      namespace: security-monitoring
      port: 8080
      tools:
        - name: get-security-events
          description: "Fetch security events from Splunk for a time range."
          inputParameters:
            - name: index
              in: body
              type: string
              description: "The Splunk index (e.g., ot_security, it_security)."
            - name: time_range
              in: body
              type: string
              description: "Time range (e.g., -24h, -7d)."
          call: "splunk.search-events"
          with:
            index: "{{index}}"
            range: "{{time_range}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.totalenergies.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search-events
              method: POST

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

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

Retrieves real-time tank inventory levels from the SCADA system for a terminal, returning product type, volume, temperature, and capacity utilization.

naftiko: "0.5"
info:
  label: "Tank Farm Inventory Monitor"
  description: "Retrieves real-time tank inventory levels from the SCADA system for a terminal, returning product type, volume, temperature, and capacity utilization."
  tags:
    - operations
    - storage
    - scada
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: tank-inventory
      port: 8080
      tools:
        - name: get-tank-levels
          description: "Fetch real-time tank inventory levels from SCADA."
          inputParameters:
            - name: terminal_id
              in: body
              type: string
              description: "The terminal identifier."
          call: "scada.get-tank-inventory"
          with:
            terminal_id: "{{terminal_id}}"
  consumes:
    - type: http
      namespace: scada
      baseUri: "https://scada.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scada_token"
      resources:
        - name: tank-inventory
          path: "/terminals/{{terminal_id}}/tanks"
          inputParameters:
            - name: terminal_id
              in: path
          operations:
            - name: get-tank-inventory
              method: GET

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

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

Monitors trading desk risk limits in SAP, and when a threshold is breached, creates a Jira escalation ticket and alerts the risk management team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Trading Risk Limit Alert"
  description: "Monitors trading desk risk limits in SAP, and when a threshold is breached, creates a Jira escalation ticket and alerts the risk management team via Microsoft Teams."
  tags:
    - energy-trading
    - risk-management
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: risk-alerts
      port: 8080
      tools:
        - name: check-risk-limits
          description: "Check trading risk limits and escalate breaches."
          inputParameters:
            - name: desk_id
              in: body
              type: string
              description: "The trading desk identifier."
            - name: commodity
              in: body
              type: string
              description: "The commodity code."
          steps:
            - name: get-risk-position
              type: call
              call: "sap.get-risk-limits"
              with:
                desk: "{{desk_id}}"
                commodity: "{{commodity}}"
            - name: create-escalation
              type: call
              call: "jira.create-issue"
              with:
                project: "RISK"
                summary: "Risk limit breach: {{commodity}} on desk {{desk_id}}"
                description: "Current exposure: {{get-risk-position.current_exposure}}. Limit: {{get-risk-position.risk_limit}}. Utilization: {{get-risk-position.utilization_pct}}%."
                issue_type: "Bug"
                priority: "Critical"
            - name: alert-risk-team
              type: call
              call: "msteams.post-channel-message"
              with:
                channel_id: "risk_management_alerts"
                text: "RISK LIMIT BREACH: {{commodity}} desk {{desk_id}}. Utilization: {{get-risk-position.utilization_pct}}%. Jira: {{create-escalation.key}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZTR_RISK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: risk-limits
          path: "/RiskLimitSet(Desk='{{desk}}',Commodity='{{commodity}}')"
          inputParameters:
            - name: desk
              in: path
            - name: commodity
              in: path
          operations:
            - name: get-risk-limits
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://totalenergies.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/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

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

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

Matches a vendor invoice to its purchase order in SAP, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing Pipeline"
  description: "Matches a vendor invoice to its purchase order in SAP, routes for approval via Microsoft Power Automate, and logs the result in ServiceNow."
  tags:
    - finance
    - sap
    - microsoft-power-automate
    - servicenow
    - invoice
capability:
  exposes:
    - type: mcp
      namespace: invoice-processing
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Match invoice to PO in SAP, route for approval, and log in ServiceNow."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The vendor invoice number."
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          steps:
            - name: match-invoice
              type: call
              call: "sap.match-invoice"
              with:
                invoice_number: "{{invoice_number}}"
                po_number: "{{po_number}}"
            - name: route-approval
              type: call
              call: "power-automate.trigger-flow"
              with:
                flow_id: "invoice_approval"
                invoice_number: "{{invoice_number}}"
                amount: "{{match-invoice.amount}}"
            - name: log-processing
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_invoice_log"
                invoice_number: "{{invoice_number}}"
                status: "{{route-approval.status}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://totalenergies.sap.com/sap/opu/odata/sap/ZFI_INVOICE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoice-match
          path: "/InvoiceMatchSet"
          operations:
            - name: match-invoice
              method: POST
    - type: http
      namespace: power-automate
      baseUri: "https://prod-01.westus.logic.azure.com/workflows"
      authentication:
        type: bearer
        token: "$secrets.power_automate_token"
      resources:
        - name: flows
          path: "/{{flow_id}}/triggers/manual/paths/invoke"
          inputParameters:
            - name: flow_id
              in: path
          operations:
            - name: trigger-flow
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Validates a contractor's safety certifications via the compliance system and creates a ServiceNow record for the permit process.

naftiko: "0.5"
info:
  label: "Vendor Safety Qualification Checker"
  description: "Validates a contractor's safety certifications via the compliance system and creates a ServiceNow record for the permit process."
  tags:
    - safety
    - vendor-management
    - compliance
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vendor-safety
      port: 8080
      tools:
        - name: check-vendor-safety
          description: "Validate contractor safety certifications and log in ServiceNow."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "The vendor/contractor identifier."
            - name: site_id
              in: body
              type: string
              description: "The site where work will be performed."
          steps:
            - name: validate-certs
              type: call
              call: "compliance.check-vendor-safety"
              with:
                vendor: "{{vendor_id}}"
                site: "{{site_id}}"
            - name: log-qualification
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_vendor_qualification"
                vendor: "{{vendor_id}}"
                site: "{{site_id}}"
                status: "{{validate-certs.qualification_status}}"
                expiry: "{{validate-certs.cert_expiry}}"
  consumes:
    - type: http
      namespace: compliance
      baseUri: "https://compliance.totalenergies.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: vendor-safety
          path: "/vendors/{{vendor}}/safety?site={{site}}"
          inputParameters:
            - name: vendor
              in: path
            - name: site
              in: path
          operations:
            - name: check-vendor-safety
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://totalenergies.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Retrieves production rate data for an oil or gas well.

naftiko: "0.5"
info:
  label: "Well Production Rate Lookup"
  description: "Retrieves production rate data for an oil or gas well."
  tags:
    - production
    - operations
capability:
  exposes:
    - type: mcp
      namespace: production
      port: 8080
      tools:
        - name: get-well
          description: "Retrieves production rate data for an oil or gas well."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The well production rate lookup identifier."
          call: "production-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: production-api
      baseUri: "https://api.totalenergies.com/production/v1"
      authentication:
        type: bearer
        token: "$secrets.totalenergies_api_token"
      resources:
        - name: well
          path: "/well/production/rate/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-well
              method: GET

Retrieves individual turbine health data from the wind farm management system including vibration, temperature, and power output for predictive maintenance.

naftiko: "0.5"
info:
  label: "Wind Farm Turbine Health Monitor"
  description: "Retrieves individual turbine health data from the wind farm management system including vibration, temperature, and power output for predictive maintenance."
  tags:
    - renewable
    - wind
    - monitoring
    - predictive-maintenance
capability:
  exposes:
    - type: mcp
      namespace: wind-monitoring
      port: 8080
      tools:
        - name: get-turbine-health
          description: "Fetch turbine health metrics for a wind farm."
          inputParameters:
            - name: farm_id
              in: body
              type: string
              description: "The wind farm identifier."
            - name: turbine_id
              in: body
              type: string
              description: "The specific turbine identifier."
          call: "energy-mgmt.get-turbine-data"
          with:
            farm_id: "{{farm_id}}"
            turbine_id: "{{turbine_id}}"
  consumes:
    - type: http
      namespace: energy-mgmt
      baseUri: "https://ems.totalenergies.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ems_token"
      resources:
        - name: turbine-data
          path: "/farms/{{farm_id}}/turbines/{{turbine_id}}/health"
          inputParameters:
            - name: farm_id
              in: path
            - name: turbine_id
              in: path
          operations:
            - name: get-turbine-data
              method: GET

Retrieves employee profile from Workday.

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

Retrieves payroll summary data from Workday for a pay period.

naftiko: "0.5"
info:
  label: "Workday Payroll Summary"
  description: "Retrieves payroll summary data from Workday for a pay period."
  tags:
    - hr
    - payroll
    - workday
    - finance
capability:
  exposes:
    - type: mcp
      namespace: payroll
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch Workday payroll summary for a pay period."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "The pay period identifier."
          call: "workday.get-payroll"
          with:
            pay_period: "{{pay_period}}"
  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
          path: "/payroll/summaries?payPeriod={{pay_period}}"
          inputParameters:
            - name: pay_period
              in: path
          operations:
            - name: get-payroll
              method: GET

Retrieves an employee's current time-off balances from Workday.

naftiko: "0.5"
info:
  label: "Workday Time-Off Balance"
  description: "Retrieves an employee's current time-off balances from Workday."
  tags:
    - hr
    - workday
    - time-off
capability:
  exposes:
    - type: mcp
      namespace: hr-time-off
      port: 8080
      tools:
        - name: get-time-off-balance
          description: "Look up an employee's time-off balances in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-time-off"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: time-off
          path: "/workers/{{worker_id}}/timeOffBalance"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-time-off
              method: GET