ConocoPhillips Capabilities
Naftiko 0.5 capability definitions for ConocoPhillips - 144 capabilities showing integration workflows and service orchestrations.
Prepares an asset divestiture data room by collecting production history from SAP, financial data from Snowflake, legal documents from SharePoint, and setting up secure access in Box for prospective buyers.
naftiko: "0.5"
info:
label: "Asset Divestiture Data Room Orchestrator"
description: "Prepares an asset divestiture data room by collecting production history from SAP, financial data from Snowflake, legal documents from SharePoint, and setting up secure access in Box for prospective buyers."
tags:
- finance
- energy
- sap
- snowflake
- sharepoint
- box
capability:
exposes:
- type: mcp
namespace: corporate-development
port: 8080
tools:
- name: prepare-data-room
description: "Orchestrate data room preparation for asset divestiture: collect production, financial, and legal data, and set up secure access."
inputParameters:
- name: asset_id
in: body
type: string
description: "The asset package identifier."
- name: project_name
in: body
type: string
description: "The divestiture project name."
steps:
- name: get-production-history
type: call
call: "sap.get-asset-production-history"
with:
asset_id: "{{asset_id}}"
- name: get-financial-data
type: call
call: "snowflake.query-asset-financials"
with:
asset_id: "{{asset_id}}"
- name: collect-legal-docs
type: call
call: "sharepoint.get-documents"
with:
library: "LegalDocuments"
folder: "{{asset_id}}"
- name: create-data-room
type: call
call: "box.create-folder"
with:
name: "DataRoom-{{project_name}}"
parent_id: "0"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: assets
path: "/production/assets/{{asset_id}}/history"
inputParameters:
- name: asset_id
in: path
operations:
- name: get-asset-production-history
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-asset-financials
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/drive/items"
operations:
- name: get-documents
method: GET
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: folders
path: "/folders"
operations:
- name: create-folder
method: POST
Calculates ARO from SAP asset data, validates in Snowflake, and publishes to Confluence for audit review.
naftiko: "0.5"
info:
label: "Asset Retirement Obligation Orchestrator"
description: "Calculates ARO from SAP asset data, validates in Snowflake, and publishes to Confluence for audit review."
tags:
- finance
- sap
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: asset-retirement-obligati
port: 8080
tools:
- name: asset-retirement-obligation
description: "Calculates ARO from SAP asset data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Asset Retirement Obligation"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves the current state of AWS CloudWatch alarms for ConocoPhillips cloud workloads, returning alarm name, state, and last state change timestamp.
naftiko: "0.5"
info:
label: "AWS CloudWatch Alarm Status Lookup"
description: "Retrieves the current state of AWS CloudWatch alarms for ConocoPhillips cloud workloads, returning alarm name, state, and last state change timestamp."
tags:
- monitoring
- it
- aws
- cloudwatch
capability:
exposes:
- type: mcp
namespace: cloud-monitoring
port: 8080
tools:
- name: get-cloudwatch-alarms
description: "Look up CloudWatch alarm status for a specific namespace. Returns alarm names, states, and timestamps."
inputParameters:
- name: namespace
in: body
type: string
description: "The CloudWatch metric namespace."
call: "cloudwatch.describe-alarms"
with:
namespace: "{{namespace}}"
outputParameters:
- name: alarms
type: array
mapping: "$.MetricAlarms"
items:
- name: alarm_name
type: string
mapping: "$.AlarmName"
- name: state
type: string
mapping: "$.StateValue"
- name: last_updated
type: string
mapping: "$.StateUpdatedTimestamp"
consumes:
- type: http
namespace: cloudwatch
baseUri: "https://monitoring.us-east-1.amazonaws.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_auth_header"
placement: header
resources:
- name: alarms
path: "/"
operations:
- name: describe-alarms
method: POST
When AWS Cost Anomaly Detection flags a spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams.
naftiko: "0.5"
info:
label: "AWS Cost Anomaly Alert Handler"
description: "When AWS Cost Anomaly Detection flags a spend spike, creates a ServiceNow ticket and alerts the FinOps team in Microsoft Teams."
tags:
- cloud
- finops
- aws
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-aws-cost-anomaly
description: "Given an AWS account ID and anomalous service and spend amount, create a ServiceNow cost ticket and alert the FinOps team in Teams."
inputParameters:
- name: aws_account_id
in: body
type: string
description: "The AWS account ID where the anomaly occurred."
- name: anomaly_amount
in: body
type: number
description: "The anomalous incremental spend in USD."
- name: aws_service
in: body
type: string
description: "The AWS service responsible for the spend spike."
steps:
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "AWS cost anomaly: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}}"
category: "cloud_cost"
urgency: "2"
- name: alert-finops
type: call
call: "msteams.post-channel-message"
with:
channelId: "finops-team"
message: "AWS cost spike: {{aws_service}} in {{aws_account_id}} +${{anomaly_amount}} | ServiceNow: {{create-ticket.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves seismic survey data file metadata from AWS S3, returning file size, last modified date, and pre-signed download URL for geoscience analysis.
naftiko: "0.5"
info:
label: "AWS S3 Seismic Data Retrieval"
description: "Retrieves seismic survey data file metadata from AWS S3, returning file size, last modified date, and pre-signed download URL for geoscience analysis."
tags:
- energy
- geoscience
- aws
- data
capability:
exposes:
- type: mcp
namespace: geoscience-data
port: 8080
tools:
- name: get-seismic-file
description: "Retrieve seismic data file metadata and download URL from S3. Returns file details and a pre-signed URL."
inputParameters:
- name: survey_id
in: body
type: string
description: "The seismic survey identifier."
- name: file_key
in: body
type: string
description: "The S3 object key for the seismic data file."
call: "aws-s3.get-object-metadata"
with:
bucket: "cop-seismic-data"
key: "{{survey_id}}/{{file_key}}"
outputParameters:
- name: file_size_mb
type: number
mapping: "$.ContentLength"
- name: last_modified
type: string
mapping: "$.LastModified"
- name: download_url
type: string
mapping: "$.presignedUrl"
consumes:
- type: http
namespace: aws-s3
baseUri: "https://s3.us-west-2.amazonaws.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_s3_auth"
placement: header
resources:
- name: objects
path: "/cop-seismic-data/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: get-object-metadata
method: HEAD
Retrieves current crude oil spot prices from Bloomberg.
naftiko: "0.5"
info:
label: "Bloomberg Crude Oil Price Lookup"
description: "Retrieves current crude oil spot prices from Bloomberg."
tags:
- trading
- bloomberg
capability:
exposes:
- type: mcp
namespace: oil-prices
port: 8080
tools:
- name: get-crude-price
description: "Look up crude oil spot price."
inputParameters:
- name: benchmark
in: body
type: string
description: "Price benchmark (e.g., WTI, Brent)."
call: "bloomberg.get-price"
with:
benchmark: "{{benchmark}}"
outputParameters:
- name: price_usd
type: number
mapping: "$.data.price"
- name: change_pct
type: number
mapping: "$.data.change_pct"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/v1"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: prices
path: "/data/commodities/{{benchmark}}"
inputParameters:
- name: benchmark
in: path
operations:
- name: get-price
method: GET
Fetches energy commodity prices from Bloomberg.
naftiko: "0.5"
info:
label: "Bloomberg Energy Market Price Snapshot"
description: "Fetches energy commodity prices from Bloomberg."
tags:
- trading
- bloomberg
- energy-markets
capability:
exposes:
- type: mcp
namespace: market-prices
port: 8080
tools:
- name: get-energy-prices
description: "Look up energy prices by Bloomberg ticker."
inputParameters:
- name: ticker
in: body
type: string
description: "Bloomberg ticker."
call: bloomberg.get-price
with:
ticker: "{{ticker}}"
outputParameters:
- name: bid
type: number
mapping: "$.data.bid"
- name: ask
type: number
mapping: "$.data.ask"
- name: last_trade
type: number
mapping: "$.data.lastTrade"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/fields"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: prices
path: "/{{ticker}}/snapshot"
inputParameters:
- name: ticker
in: path
operations:
- name: get-price
method: GET
Retrieves Henry Hub natural gas forward curve pricing from Bloomberg Enterprise Data for the next twelve months, returning settlement prices and implied volatility.
naftiko: "0.5"
info:
label: "Bloomberg Natural Gas Forward Curve Lookup"
description: "Retrieves Henry Hub natural gas forward curve pricing from Bloomberg Enterprise Data for the next twelve months, returning settlement prices and implied volatility."
tags:
- energy
- trading
- bloomberg
- natural-gas
capability:
exposes:
- type: mcp
namespace: market-data
port: 8080
tools:
- name: get-natgas-forward-curve
description: "Look up Henry Hub natural gas forward curve from Bloomberg. Returns monthly settlement prices and volatility."
inputParameters:
- name: months_forward
in: body
type: number
description: "Number of months forward to retrieve (max 12)."
call: "bloomberg.get-forward-curve"
with:
ticker: "NG"
months: "{{months_forward}}"
outputParameters:
- name: curve
type: array
mapping: "$.data.forwardCurve"
items:
- name: month
type: string
mapping: "$.deliveryMonth"
- name: settlement_price
type: number
mapping: "$.settlementPrice"
- name: implied_vol
type: number
mapping: "$.impliedVolatility"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: forward-curves
path: "/commodities/{{ticker}}/forward-curve"
inputParameters:
- name: ticker
in: path
operations:
- name: get-forward-curve
method: GET
Pulls capital project actuals from SAP, compares against forecasts in Snowflake, generates a variance report in Power BI, and posts a budget alert to Microsoft Teams when variance exceeds threshold.
naftiko: "0.5"
info:
label: "Capital Project Budget Review Orchestrator"
description: "Pulls capital project actuals from SAP, compares against forecasts in Snowflake, generates a variance report in Power BI, and posts a budget alert to Microsoft Teams when variance exceeds threshold."
tags:
- finance
- energy
- sap
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: capital-projects
port: 8080
tools:
- name: review-project-budget
description: "Orchestrate a capital project budget review: pull actuals, compute variance, refresh dashboard, and alert if over threshold."
inputParameters:
- name: project_id
in: body
type: string
description: "The SAP capital project WBS element."
- name: variance_threshold_pct
in: body
type: number
description: "Alert threshold for budget variance percentage."
steps:
- name: get-actuals
type: call
call: "sap.get-project-actuals"
with:
project_id: "{{project_id}}"
- name: get-forecast
type: call
call: "snowflake.query-project-forecast"
with:
project_id: "{{project_id}}"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "capital-projects-dashboard"
- name: post-alert
type: call
call: "msteams.post-message"
with:
channel: "capital-projects-finance"
message: "Project {{project_id}} budget review: Actuals ${{get-actuals.total_spend}}M vs Forecast ${{get-forecast.forecast_amount}}M. Variance: {{get-forecast.variance_pct}}%."
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: projects
path: "/projects/{{project_id}}/actuals"
inputParameters:
- name: project_id
in: path
operations:
- name: get-project-actuals
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-project-forecast
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Tracks carbon credits in Snowflake, validates against commitments, and publishes reports to Confluence.
naftiko: "0.5"
info:
label: "Carbon Credit Tracking Orchestrator"
description: "Tracks carbon credits in Snowflake, validates against commitments, and publishes reports to Confluence."
tags:
- sustainability
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: carbon-credit-tracking
port: 8080
tools:
- name: carbon-credit-tracking
description: "Tracks carbon credits in Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Carbon Credit Tracking"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Validates contractor safety certifications in Workday, checks compliance, and creates ServiceNow tickets for gaps.
naftiko: "0.5"
info:
label: "Contractor Safety Compliance Orchestrator"
description: "Validates contractor safety certifications in Workday, checks compliance, and creates ServiceNow tickets for gaps."
tags:
- safety
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: contractor-safety-complia
port: 8080
tools:
- name: contractor-safety-compliance
description: "Validates contractor safety certifications in Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Contractor Safety Compliance for {{entity_id}}"
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{entity_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers"
operations:
- name: get-worker
method: GET
Verifies contractor safety certifications in Workday, assigns required orientation modules in the LMS, creates a site access badge request in ServiceNow, and notifies the site supervisor via Microsoft Teams.
naftiko: "0.5"
info:
label: "Contractor Safety Orientation Orchestrator"
description: "Verifies contractor safety certifications in Workday, assigns required orientation modules in the LMS, creates a site access badge request in ServiceNow, and notifies the site supervisor via Microsoft Teams."
tags:
- safety
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: contractor-safety
port: 8080
tools:
- name: onboard-contractor-safety
description: "Orchestrate contractor safety orientation: verify certs, assign training, request badge, and notify supervisor."
inputParameters:
- name: contractor_id
in: body
type: string
description: "The contractor worker ID."
- name: site_code
in: body
type: string
description: "The field site code."
steps:
- name: verify-certifications
type: call
call: "workday.get-certifications"
with:
worker_id: "{{contractor_id}}"
- name: assign-orientation
type: call
call: "workday.assign-learning"
with:
worker_id: "{{contractor_id}}"
course_id: "SAFETY-ORIENTATION-{{site_code}}"
- name: request-badge
type: call
call: "servicenow.create-request"
with:
category: "site_access"
short_description: "Badge request: contractor {{contractor_id}} for site {{site_code}}"
- name: notify-supervisor
type: call
call: "msteams.post-message"
with:
channel: "site-{{site_code}}-ops"
message: "Contractor {{contractor_id}} orientation initiated for site {{site_code}}. Certs valid: {{verify-certifications.all_valid}}. Badge request: {{request-badge.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: certifications
path: "/conocophillips/workers/{{worker_id}}/certifications"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-certifications
method: GET
- name: learning
path: "/conocophillips/learning/assignments"
operations:
- name: assign-learning
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Detects corrosion rate exceedances from sensor data in Snowflake, creates a maintenance notification in SAP, opens a ServiceNow ticket for inspection, and alerts the integrity management team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Corrosion Monitoring Alert Orchestrator"
description: "Detects corrosion rate exceedances from sensor data in Snowflake, creates a maintenance notification in SAP, opens a ServiceNow ticket for inspection, and alerts the integrity management team via Microsoft Teams."
tags:
- operations
- safety
- snowflake
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: integrity-management
port: 8080
tools:
- name: handle-corrosion-alert
description: "Orchestrate corrosion alert response: check sensor data, create SAP notification, open ticket, and alert team."
inputParameters:
- name: pipeline_segment_id
in: body
type: string
description: "The pipeline segment identifier."
- name: sensor_id
in: body
type: string
description: "The corrosion sensor identifier."
steps:
- name: get-corrosion-reading
type: call
call: "snowflake.query-corrosion-data"
with:
sensor_id: "{{sensor_id}}"
- name: create-sap-notification
type: call
call: "sap.create-maintenance-notification"
with:
equipment_id: "{{pipeline_segment_id}}"
type: "corrosion"
reading: "{{get-corrosion-reading.rate_mpy}}"
- name: open-inspection-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Corrosion rate exceedance: segment {{pipeline_segment_id}}, sensor {{sensor_id}}"
category: "pipeline_integrity"
urgency: "2"
- name: alert-team
type: call
call: "msteams.post-message"
with:
channel: "integrity-management"
message: "Corrosion alert on segment {{pipeline_segment_id}}: {{get-corrosion-reading.rate_mpy}} mpy (threshold: {{get-corrosion-reading.threshold_mpy}} mpy). SAP notification: {{create-sap-notification.number}}. ServiceNow: {{open-inspection-ticket.number}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-corrosion-data
method: POST
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: notifications
path: "/plant-maintenance/notifications"
operations:
- name: create-maintenance-notification
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Processes crude cargo nominations by validating SAP inventory, creating trade confirmations, and notifying traders via Slack.
naftiko: "0.5"
info:
label: "Crude Oil Cargo Nomination Orchestrator"
description: "Processes crude cargo nominations by validating SAP inventory, creating trade confirmations, and notifying traders via Slack."
tags:
- trading
- sap
- slack
capability:
exposes:
- type: mcp
namespace: crude-oil-cargo-nominatio
port: 8080
tools:
- name: crude-oil-cargo-nomination
description: "Processes crude cargo nominations by validating SAP inventory."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Crude Oil Cargo Nomination processed"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Validates crude quality test results from SAP labs, compares against specifications, and creates Jira tickets for deviations.
naftiko: "0.5"
info:
label: "Crude Quality Assurance Orchestrator"
description: "Validates crude quality test results from SAP labs, compares against specifications, and creates Jira tickets for deviations."
tags:
- downstream
- sap
- jira
capability:
exposes:
- type: mcp
namespace: crude-quality-assurance
port: 8080
tools:
- name: crude-quality-assurance
description: "Validates crude quality test results from SAP labs."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "OPS"
summary: "Crude Quality Assurance"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Generates daily production reports from SAP and Snowflake data, publishes to Power BI, and distributes via email.
naftiko: "0.5"
info:
label: "Daily Production Reporting Orchestrator"
description: "Generates daily production reports from SAP and Snowflake data, publishes to Power BI, and distributes via email."
tags:
- production
- sap
- snowflake
- email
capability:
exposes:
- type: mcp
namespace: daily-production-reportin
port: 8080
tools:
- name: daily-production-reporting
description: "Generates daily production reports from SAP and Snowflake data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@conocophillips.com"
subject: "Daily Production Reporting"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Retrieves p95 latency metrics from Datadog for a specified application service over the last hour, returning average latency, peak latency, and error rate.
naftiko: "0.5"
info:
label: "Datadog Application Latency Check"
description: "Retrieves p95 latency metrics from Datadog for a specified application service over the last hour, returning average latency, peak latency, and error rate."
tags:
- monitoring
- it
- datadog
- performance
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-app-latency
description: "Check p95 latency for a Datadog-monitored service. Returns average latency, peak, and error rate."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name."
call: "datadog.query-metrics"
with:
query: "avg:trace.http.request.duration.by_service{service:{{service_name}}}.as_count()"
outputParameters:
- name: avg_latency_ms
type: number
mapping: "$.series[0].pointlist[-1][1]"
- name: peak_latency_ms
type: number
mapping: "$.series[0].attributes.max"
- name: error_rate
type: number
mapping: "$.series[0].attributes.error_rate"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
When a Datadog monitor triggers a critical infrastructure alert, automatically creates a ServiceNow P1 incident and pages the on-call team in Teams.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert to ServiceNow"
description: "When a Datadog monitor triggers a critical infrastructure alert, automatically creates a ServiceNow P1 incident and pages the on-call team in Teams."
tags:
- observability
- itsm
- datadog
- servicenow
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: handle-infra-alert
description: "Given a Datadog monitor ID and alert details, create a ServiceNow P1 incident and page the on-call team in Teams."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that triggered the alert."
- name: monitor_name
in: body
type: string
description: "The Datadog monitor name."
- name: alert_message
in: body
type: string
description: "The alert message body from Datadog."
steps:
- name: get-monitor
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Infra alert: {{monitor_name}}"
description: "{{alert_message}}\nMonitor: {{monitor_id}}\nState: {{get-monitor.overall_state}}"
urgency: "1"
- name: page-oncall
type: call
call: "msteams.post-channel-message"
with:
channelId: "infra-oncall"
message: "P1 Alert: {{monitor_name}} | ServiceNow: {{create-incident.number}} | {{alert_message}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Checks SCADA system health via Datadog monitors.
naftiko: "0.5"
info:
label: "Datadog SCADA System Health Lookup"
description: "Checks SCADA system health via Datadog monitors."
tags:
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: scada-health
port: 8080
tools:
- name: get-scada-health
description: "Look up SCADA system health status."
inputParameters:
- name: service_tag
in: body
type: string
description: "Datadog service tag for SCADA."
call: "datadog.get-monitors"
with:
tags: "{{service_tag}}"
outputParameters:
- name: alert_count
type: number
mapping: "$.length"
- name: status
type: string
mapping: "$.overall_state"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor"
operations:
- name: get-monitors
method: GET
Synchronizes digital twin well models by pulling real-time production data from Snowflake, updating the simulation model in AWS, comparing predicted versus actual performance, and publishing variance reports to Power BI.
naftiko: "0.5"
info:
label: "Digital Twin Well Performance Orchestrator"
description: "Synchronizes digital twin well models by pulling real-time production data from Snowflake, updating the simulation model in AWS, comparing predicted versus actual performance, and publishing variance reports to Power BI."
tags:
- energy
- geoscience
- snowflake
- aws
- power-bi
capability:
exposes:
- type: mcp
namespace: digital-twin
port: 8080
tools:
- name: sync-digital-twin
description: "Orchestrate digital twin sync: pull production data, update model, compare performance, and publish report."
inputParameters:
- name: well_id
in: body
type: string
description: "The well API number."
- name: model_version
in: body
type: string
description: "The digital twin model version."
steps:
- name: get-production-data
type: call
call: "snowflake.query-well-production"
with:
well_id: "{{well_id}}"
- name: update-model
type: call
call: "aws-lambda.invoke-model-update"
with:
function_name: "digital-twin-updater"
payload:
well_id: "{{well_id}}"
model_version: "{{model_version}}"
actual_data: "{{get-production-data.data}}"
- name: compare-performance
type: call
call: "snowflake.query-twin-variance"
with:
well_id: "{{well_id}}"
predicted: "{{update-model.predicted_output}}"
- name: refresh-report
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "digital-twin-performance"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-well-production
method: POST
- name: query-twin-variance
method: POST
- type: http
namespace: aws-lambda
baseUri: "https://lambda.us-west-2.amazonaws.com/2015-03-31"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_auth_header"
placement: header
resources:
- name: functions
path: "/functions/{{function_name}}/invocations"
inputParameters:
- name: function_name
in: path
operations:
- name: invoke-model-update
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Analyzes drilling costs from SAP, compares against benchmarks in Snowflake, and publishes analysis to Confluence.
naftiko: "0.5"
info:
label: "Drilling Cost Analysis Orchestrator"
description: "Analyzes drilling costs from SAP, compares against benchmarks in Snowflake, and publishes analysis to Confluence."
tags:
- upstream
- sap
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: drilling-cost-analysis
port: 8080
tools:
- name: drilling-cost-analysis
description: "Analyzes drilling costs from SAP."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Drilling Cost Analysis"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Coordinates drilling rig schedules by pulling well program timelines from SAP, checking rig availability in ServiceNow, assigning crews in Workday, and posting the updated schedule to Microsoft Teams.
naftiko: "0.5"
info:
label: "Drilling Rig Scheduling Orchestrator"
description: "Coordinates drilling rig schedules by pulling well program timelines from SAP, checking rig availability in ServiceNow, assigning crews in Workday, and posting the updated schedule to Microsoft Teams."
tags:
- energy
- operations
- sap
- servicenow
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: drilling-ops
port: 8080
tools:
- name: schedule-drilling-rig
description: "Orchestrate drilling rig scheduling: pull program, check rig availability, assign crew, and publish schedule."
inputParameters:
- name: rig_id
in: body
type: string
description: "The drilling rig identifier."
- name: well_program_id
in: body
type: string
description: "The well program identifier."
steps:
- name: get-well-program
type: call
call: "sap.get-well-program"
with:
program_id: "{{well_program_id}}"
- name: check-rig-availability
type: call
call: "servicenow.check-asset-availability"
with:
asset_id: "{{rig_id}}"
start_date: "{{get-well-program.spud_date}}"
- name: assign-crew
type: call
call: "workday.assign-drilling-crew"
with:
rig_id: "{{rig_id}}"
start_date: "{{get-well-program.spud_date}}"
duration_days: "{{get-well-program.estimated_days}}"
- name: publish-schedule
type: call
call: "msteams.post-message"
with:
channel: "drilling-operations"
message: "Rig {{rig_id}} scheduled for {{get-well-program.well_name}} starting {{get-well-program.spud_date}}. Crew: {{assign-crew.crew_lead}}. Est. duration: {{get-well-program.estimated_days}} days."
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: well-programs
path: "/drilling/programs/{{program_id}}"
inputParameters:
- name: program_id
in: path
operations:
- name: get-well-program
method: GET
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: assets
path: "/table/alm_asset"
operations:
- name: check-asset-availability
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: staffing
path: "/conocophillips/staffing/assignments"
operations:
- name: assign-drilling-crew
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
When an environment health and safety incident is reported in ServiceNow, pulls employee details from Workday, attaches the safety training record, creates a root cause investigation in Jira, and notifies HSE leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "EHS Incident Investigation Orchestrator"
description: "When an environment health and safety incident is reported in ServiceNow, pulls employee details from Workday, attaches the safety training record, creates a root cause investigation in Jira, and notifies HSE leadership via Microsoft Teams."
tags:
- safety
- hr
- servicenow
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ehs
port: 8080
tools:
- name: investigate-ehs-incident
description: "Orchestrate an EHS incident investigation: get incident details, pull employee training records, create investigation task, and alert leadership."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{get-incident.caller_id}}"
- name: get-training-record
type: call
call: "workday.get-training-history"
with:
worker_id: "{{get-incident.caller_id}}"
category: "safety"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project: "EHS"
issue_type: "Investigation"
summary: "EHS Investigation: {{get-incident.short_description}}"
description: "Employee: {{get-employee.full_name}}. Last safety training: {{get-training-record.last_completion_date}}."
- name: notify-leadership
type: call
call: "msteams.post-message"
with:
channel: "hse-leadership"
message: "EHS Incident {{incident_number}} investigation opened ({{create-investigation.key}}): {{get-incident.short_description}}. Employee: {{get-employee.full_name}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-incident
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- name: get-training-history
method: GET
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Coordinates emergency drills by creating ServiceNow exercises, notifying participants via Slack, and logging results in Confluence.
naftiko: "0.5"
info:
label: "Emergency Response Drill Orchestrator"
description: "Coordinates emergency drills by creating ServiceNow exercises, notifying participants via Slack, and logging results in Confluence."
tags:
- safety
- servicenow
- slack
- confluence
capability:
exposes:
- type: mcp
namespace: emergency-response-drill
port: 8080
tools:
- name: emergency-response-drill
description: "Coordinates emergency drills by creating ServiceNow exercises."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Emergency Response Drill for {{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Emergency Response Drill"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Emergency Response Drill processed"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Aggregates Scope 1 and Scope 2 emissions data from Snowflake, maps to EPA reporting categories in SAP, generates the quarterly compliance report in SharePoint, and emails the regulatory team.
naftiko: "0.5"
info:
label: "Emissions Reporting Orchestrator"
description: "Aggregates Scope 1 and Scope 2 emissions data from Snowflake, maps to EPA reporting categories in SAP, generates the quarterly compliance report in SharePoint, and emails the regulatory team."
tags:
- sustainability
- compliance
- snowflake
- sap
- sharepoint
capability:
exposes:
- type: mcp
namespace: emissions
port: 8080
tools:
- name: generate-emissions-report
description: "Orchestrate quarterly emissions reporting: aggregate data, map categories, generate compliance report, and notify the team."
inputParameters:
- name: quarter
in: body
type: string
description: "Reporting quarter (e.g., 2026-Q1)."
- name: region
in: body
type: string
description: "Operating region code."
steps:
- name: aggregate-emissions
type: call
call: "snowflake.query-emissions"
with:
quarter: "{{quarter}}"
region: "{{region}}"
- name: map-epa-categories
type: call
call: "sap.map-emission-categories"
with:
emissions_data: "{{aggregate-emissions.data}}"
framework: "EPA"
- name: generate-report
type: call
call: "sharepoint.create-document"
with:
library: "EmissionsReports"
filename: "emissions-{{region}}-{{quarter}}.xlsx"
data: "{{map-epa-categories.mapped_data}}"
- name: notify-team
type: call
call: "msteams.post-message"
with:
channel: "sustainability-reporting"
message: "Emissions report for {{region}} {{quarter}} ready: {{aggregate-emissions.total_co2e_tons}} tCO2e. Report: {{generate-report.url}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-emissions
method: POST
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: emissions
path: "/sustainability/emissions/map"
operations:
- name: map-emission-categories
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/drive/items"
operations:
- name: create-document
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Reconciles trading positions between SAP and Bloomberg, identifies breaks, and creates Jira tickets.
naftiko: "0.5"
info:
label: "Energy Trading Position Reconciliation Orchestrator"
description: "Reconciles trading positions between SAP and Bloomberg, identifies breaks, and creates Jira tickets."
tags:
- trading
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: energy-trading-position-r
port: 8080
tools:
- name: energy-trading-position-reconciliation
description: "Reconciles trading positions between SAP and Bloomberg."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "OPS"
summary: "Energy Trading Position Reconciliation"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Tracks remediation projects in SAP, validates compliance in ServiceNow, and publishes status to Confluence.
naftiko: "0.5"
info:
label: "Environmental Remediation Tracking Orchestrator"
description: "Tracks remediation projects in SAP, validates compliance in ServiceNow, and publishes status to Confluence."
tags:
- compliance
- sap
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: environmental-remediation
port: 8080
tools:
- name: environmental-remediation-tracking
description: "Tracks remediation projects in SAP."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Environmental Remediation Tracking for {{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Environmental Remediation Tracking"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Manages facility shutdowns by creating SAP notifications, ServiceNow change requests, and alerting stakeholders via email.
naftiko: "0.5"
info:
label: "Facility Shutdown Notification Orchestrator"
description: "Manages facility shutdowns by creating SAP notifications, ServiceNow change requests, and alerting stakeholders via email."
tags:
- operations
- sap
- servicenow
- email
capability:
exposes:
- type: mcp
namespace: facility-shutdown-notific
port: 8080
tools:
- name: facility-shutdown-notification
description: "Manages facility shutdowns by creating SAP notifications."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Facility Shutdown Notification for {{entity_id}}"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@conocophillips.com"
subject: "Facility Shutdown Notification"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
When a ServiceNow incident is raised for a field operations issue, pages the on-call engineer via Teams and logs the event in Datadog for observability.
naftiko: "0.5"
info:
label: "Field Operations Incident Response"
description: "When a ServiceNow incident is raised for a field operations issue, pages the on-call engineer via Teams and logs the event in Datadog for observability."
tags:
- itsm
- operations
- servicenow
- datadog
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: field-ops
port: 8080
tools:
- name: handle-field-incident
description: "Given a ServiceNow incident number for a field operations issue, retrieve details, log a Datadog event, and page the on-call team in Teams."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number, e.g. INC0012345."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
- name: log-datadog
type: call
call: "datadog.create-event"
with:
title: "Field Ops Incident: {{incident_number}}"
text: "{{get-incident.short_description}} | Impact: {{get-incident.impact}}"
alert_type: "error"
- name: page-oncall
type: call
call: "msteams.post-channel-message"
with:
channelId: "field-ops-oncall"
message: "Field incident {{incident_number}}: {{get-incident.short_description}} | Priority: {{get-incident.priority}} | Location: {{get-incident.location}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Processes field safety observations by logging in SAP EHS, creating ServiceNow follow-ups, and alerting safety leads.
naftiko: "0.5"
info:
label: "Field Safety Observation Orchestrator"
description: "Processes field safety observations by logging in SAP EHS, creating ServiceNow follow-ups, and alerting safety leads."
tags:
- safety
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: field-safety-observation
port: 8080
tools:
- name: field-safety-observation
description: "Processes field safety observations by logging in SAP EHS."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Field Safety Observation for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Field Safety Observation processed"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors flare gas volumes in SAP, identifies reduction opportunities in Snowflake, and creates Jira improvement tickets.
naftiko: "0.5"
info:
label: "Flare Gas Reduction Orchestrator"
description: "Monitors flare gas volumes in SAP, identifies reduction opportunities in Snowflake, and creates Jira improvement tickets."
tags:
- sustainability
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: flare-gas-reduction
port: 8080
tools:
- name: flare-gas-reduction
description: "Monitors flare gas volumes in SAP."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "OPS"
summary: "Flare Gas Reduction"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, sends a Datadog event marker, and alerts the engineering team in Teams.
naftiko: "0.5"
info:
label: "GitHub CI/CD Pipeline Failure Handler"
description: "On a GitHub Actions workflow failure on a protected branch, creates a Jira bug, sends a Datadog event marker, and alerts the engineering team in Teams."
tags:
- devops
- cicd
- github
- jira
- datadog
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions workflow failure event, create a Jira bug, send a Datadog event, and alert the engineering Teams channel."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository in owner/repo format."
- name: workflow_name
in: body
type: string
description: "The name of the failed GitHub Actions workflow."
- name: branch
in: body
type: string
description: "The branch on which the failure occurred."
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
steps:
- name: get-run-details
type: call
call: "github.get-workflow-run"
with:
repo: "{{repo}}"
run_id: "{{run_id}}"
- name: create-jira-bug
type: call
call: "jira.create-issue"
with:
projectKey: "ENG"
issuetype: "Bug"
summary: "[CI Failure] {{repo}} / {{branch}} — {{workflow_name}}"
description: "Run: {{run_id}}\nConclusion: {{get-run-details.conclusion}}"
- name: log-datadog
type: call
call: "datadog.create-event"
with:
title: "CI Failure: {{repo}} {{workflow_name}}"
text: "Branch: {{branch}}, Run: {{run_id}}"
alert_type: "error"
- name: alert-team
type: call
call: "msteams.post-channel-message"
with:
channelId: "engineering-alerts"
message: "CI Failure: {{repo}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Jira: {{create-jira-bug.key}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Checks a GitHub repository for compliance with ConocoPhillips standards including branch protection rules, required reviewers, and secret scanning enablement.
naftiko: "0.5"
info:
label: "GitHub Repository Compliance Check"
description: "Checks a GitHub repository for compliance with ConocoPhillips standards including branch protection rules, required reviewers, and secret scanning enablement."
tags:
- security
- compliance
- github
- devops
capability:
exposes:
- type: mcp
namespace: dev-compliance
port: 8080
tools:
- name: check-repo-compliance
description: "Verify GitHub repository compliance settings. Returns branch protection status, reviewer requirements, and secret scanning state."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository name (org/repo format)."
call: "github.get-repo-settings"
with:
repo: "{{repo_name}}"
outputParameters:
- name: branch_protection_enabled
type: boolean
mapping: "$.branchProtection.enabled"
- name: required_reviewers
type: number
mapping: "$.branchProtection.requiredReviewers"
- name: secret_scanning_enabled
type: boolean
mapping: "$.securitySettings.secretScanning"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{repo}}"
inputParameters:
- name: repo
in: path
operations:
- name: get-repo-settings
method: GET
Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Teams.
naftiko: "0.5"
info:
label: "GitHub Security Vulnerability Triage"
description: "Scans GitHub Dependabot alerts for critical vulnerabilities, creates Jira security tickets, and notifies the security team in Teams."
tags:
- security
- devops
- github
- jira
- microsoft-teams
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-vulnerability-alerts
description: "Given a GitHub repository, retrieve critical Dependabot security alerts, create Jira security tickets, and post a summary to the security Teams channel."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository in owner/repo format."
steps:
- name: get-alerts
type: call
call: "github.get-dependabot-alerts"
with:
repo: "{{repo}}"
severity: "critical"
- name: create-security-ticket
type: call
call: "jira.create-issue"
with:
projectKey: "SEC"
issuetype: "Security"
summary: "Critical vulnerability: {{get-alerts.advisory_summary}}"
description: "Package: {{get-alerts.package_name}}\nCVSS: {{get-alerts.cvss_score}}\nRepo: {{repo}}"
- name: notify-security
type: call
call: "msteams.post-channel-message"
with:
channelId: "security-team"
message: "Critical vulnerability in {{repo}}: {{get-alerts.advisory_summary}} | Jira: {{create-security-ticket.key}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{{repo}}/dependabot/alerts"
inputParameters:
- name: repo
in: path
- name: severity
in: query
operations:
- name: get-dependabot-alerts
method: GET
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Uses Anthropic Claude to summarize regulatory and HSE compliance documents from SharePoint and posts the key points to the compliance Teams channel.
naftiko: "0.5"
info:
label: "Intelligent Document Summarization for Regulatory Reports"
description: "Uses Anthropic Claude to summarize regulatory and HSE compliance documents from SharePoint and posts the key points to the compliance Teams channel."
tags:
- ai
- automation
- anthropic
- sharepoint
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: ai-compliance
port: 8080
tools:
- name: summarize-regulatory-document
description: "Given a SharePoint file path and target Teams channel, retrieve the document, send it to Claude for a compliance-focused summary, and post the result to Teams."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site ID containing the regulatory document."
- name: file_path
in: body
type: string
description: "The relative file path in SharePoint."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel ID to post the summary to."
steps:
- name: get-document
type: call
call: "sharepoint.get-file-content"
with:
siteId: "{{site_id}}"
filePath: "{{file_path}}"
- name: summarize
type: call
call: "anthropic.create-message"
with:
model: "claude-3-5-sonnet-20241022"
content: "Summarize this regulatory or HSE compliance document in 5 key bullet points highlighting obligations and deadlines: {{get-document.content}}"
- name: post-summary
type: call
call: "msteams.post-channel-message"
with:
channelId: "{{teams_channel_id}}"
message: "Regulatory document summary for {{file_path}}:\n{{summarize.content}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/sites/{{siteId}}/drive/root:{{filePath}}:/content"
inputParameters:
- name: siteId
in: path
- name: filePath
in: path
operations:
- name: get-file-content
method: GET
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves the current engineering backlog from Jira for a specified project, returning open issue count, priority breakdown, and sprint velocity.
naftiko: "0.5"
info:
label: "Jira Engineering Backlog Lookup"
description: "Retrieves the current engineering backlog from Jira for a specified project, returning open issue count, priority breakdown, and sprint velocity."
tags:
- engineering
- devops
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-engineering-backlog
description: "Look up engineering backlog metrics from Jira. Returns open issues, priority breakdown, and velocity."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key."
call: "jira.get-backlog"
with:
project: "{{project_key}}"
outputParameters:
- name: open_issues
type: number
mapping: "$.total"
- name: critical_count
type: number
mapping: "$.priorityCounts.critical"
- name: high_count
type: number
mapping: "$.priorityCounts.high"
- name: sprint_velocity
type: number
mapping: "$.velocity"
consumes:
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: get-backlog
method: GET
Retrieves completed Jira sprint data for an engineering team and posts a velocity summary to the team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Velocity Report"
description: "Retrieves completed Jira sprint data for an engineering team and posts a velocity summary to the team's Microsoft Teams channel."
tags:
- devops
- engineering
- jira
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: engineering-reporting
port: 8080
tools:
- name: publish-sprint-velocity
description: "Given a Jira board ID and sprint ID, retrieve completed story points and issues, then post a velocity summary to the engineering Teams channel."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira software board ID."
- name: sprint_id
in: body
type: string
description: "The Jira sprint ID to report on."
steps:
- name: get-sprint-issues
type: call
call: "jira.get-sprint-issues"
with:
boardId: "{{board_id}}"
sprintId: "{{sprint_id}}"
- name: post-velocity
type: call
call: "msteams.post-channel-message"
with:
channelId: "engineering-team"
message: "Sprint {{sprint_id}} complete: {{get-sprint-issues.completedIssues}} issues, {{get-sprint-issues.completedPoints}} story points."
consumes:
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprint-issues
path: "/board/{{boardId}}/sprint/{{sprintId}}/issue"
inputParameters:
- name: boardId
in: path
- name: sprintId
in: path
operations:
- name: get-sprint-issues
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Audits joint venture accounts by pulling SAP billing data, validating in Snowflake, and publishing findings to Confluence.
naftiko: "0.5"
info:
label: "Joint Venture Audit Orchestrator"
description: "Audits joint venture accounts by pulling SAP billing data, validating in Snowflake, and publishing findings to Confluence."
tags:
- finance
- sap
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: joint-venture-audit
port: 8080
tools:
- name: joint-venture-audit
description: "Audits joint venture accounts by pulling SAP billing data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Joint Venture Audit"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Performs due diligence by gathering SAP land records, analyzing in Snowflake, and publishing findings to Confluence.
naftiko: "0.5"
info:
label: "Land Acquisition Due Diligence Orchestrator"
description: "Performs due diligence by gathering SAP land records, analyzing in Snowflake, and publishing findings to Confluence."
tags:
- legal
- sap
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: land-acquisition-due-dili
port: 8080
tools:
- name: land-acquisition-due-diligence
description: "Performs due diligence by gathering SAP land records."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Land Acquisition Due Diligence"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Identifies expiring mineral leases in SAP, generates renewal documentation in SharePoint, creates a Salesforce task for the landman, and sends a reminder via Microsoft Teams.
naftiko: "0.5"
info:
label: "Land Lease Renewal Orchestrator"
description: "Identifies expiring mineral leases in SAP, generates renewal documentation in SharePoint, creates a Salesforce task for the landman, and sends a reminder via Microsoft Teams."
tags:
- energy
- legal
- sap
- sharepoint
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: land-management
port: 8080
tools:
- name: process-lease-renewal
description: "Orchestrate a mineral lease renewal: check expiry, generate docs, assign task, and notify the landman."
inputParameters:
- name: lease_id
in: body
type: string
description: "The SAP lease identifier."
steps:
- name: get-lease-details
type: call
call: "sap.get-lease"
with:
lease_id: "{{lease_id}}"
- name: generate-renewal-docs
type: call
call: "sharepoint.create-document"
with:
library: "LeaseRenewals"
filename: "renewal-{{lease_id}}.docx"
template: "lease_renewal"
data:
lessor: "{{get-lease-details.lessor_name}}"
acres: "{{get-lease-details.gross_acres}}"
expiry: "{{get-lease-details.expiration_date}}"
- name: create-sf-task
type: call
call: "salesforce.create-task"
with:
subject: "Lease renewal needed: {{get-lease-details.lease_name}}"
owner_id: "{{get-lease-details.landman_id}}"
due_date: "{{get-lease-details.expiration_date}}"
- name: notify-landman
type: call
call: "msteams.post-message"
with:
recipient: "{{get-lease-details.landman_email}}"
message: "Lease {{get-lease-details.lease_name}} expires {{get-lease-details.expiration_date}}. Renewal docs: {{generate-renewal-docs.url}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: leases
path: "/real-estate/leases/{{lease_id}}"
inputParameters:
- name: lease_id
in: path
operations:
- name: get-lease
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/drive/items"
operations:
- name: create-document
method: POST
- type: http
namespace: salesforce
baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/chats/messages"
operations:
- name: post-message
method: POST
Responds to methane leaks by analyzing Snowflake sensor data, creating ServiceNow incidents, and alerting EHS teams via Slack.
naftiko: "0.5"
info:
label: "Methane Leak Detection Response Orchestrator"
description: "Responds to methane leaks by analyzing Snowflake sensor data, creating ServiceNow incidents, and alerting EHS teams via Slack."
tags:
- safety
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: methane-leak-detection-re
port: 8080
tools:
- name: methane-leak-detection-response
description: "Responds to methane leaks by analyzing Snowflake sensor data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Methane Leak Detection Response for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Methane Leak Detection Response processed"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Books midstream pipeline transport capacity by checking available nominations in SAP, validating shipper credentials, confirming the booking, and logging the reservation in Snowflake for analytics.
naftiko: "0.5"
info:
label: "Midstream Capacity Booking Orchestrator"
description: "Books midstream pipeline transport capacity by checking available nominations in SAP, validating shipper credentials, confirming the booking, and logging the reservation in Snowflake for analytics."
tags:
- energy
- midstream
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: midstream
port: 8080
tools:
- name: book-pipeline-capacity
description: "Orchestrate a pipeline capacity booking: check nominations, validate shipper, confirm booking, and log."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The midstream pipeline identifier."
- name: volume_mmbtu
in: body
type: number
description: "Requested volume in MMBtu per day."
- name: flow_date
in: body
type: string
description: "Flow date in YYYY-MM-DD format."
steps:
- name: check-nominations
type: call
call: "sap.check-pipeline-nominations"
with:
pipeline_id: "{{pipeline_id}}"
date: "{{flow_date}}"
- name: validate-shipper
type: call
call: "sap.validate-shipper"
with:
pipeline_id: "{{pipeline_id}}"
- name: confirm-booking
type: call
call: "sap.create-nomination"
with:
pipeline_id: "{{pipeline_id}}"
volume: "{{volume_mmbtu}}"
date: "{{flow_date}}"
- name: log-reservation
type: call
call: "snowflake.insert-booking-record"
with:
pipeline_id: "{{pipeline_id}}"
volume: "{{volume_mmbtu}}"
date: "{{flow_date}}"
confirmation_id: "{{confirm-booking.nomination_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: nominations
path: "/midstream/nominations"
operations:
- name: check-pipeline-nominations
method: GET
- name: create-nomination
method: POST
- name: shippers
path: "/midstream/shippers/validate"
operations:
- name: validate-shipper
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: insert-booking-record
method: POST
Schedules pipeline shipments by validating SAP capacity, creating nominations, and notifying shippers via email.
naftiko: "0.5"
info:
label: "Midstream Pipeline Scheduling Orchestrator"
description: "Schedules pipeline shipments by validating SAP capacity, creating nominations, and notifying shippers via email."
tags:
- midstream
- sap
- email
capability:
exposes:
- type: mcp
namespace: midstream-pipeline-schedu
port: 8080
tools:
- name: midstream-pipeline-scheduling
description: "Schedules pipeline shipments by validating SAP capacity."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@conocophillips.com"
subject: "Midstream Pipeline Scheduling"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "New Employee Onboarding Orchestrator"
description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta access, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- okta
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision Okta, and send a Teams welcome."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "Employee start date in YYYY-MM-DD format."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-snow-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-worker.full_name}}"
category: "hr_onboarding"
- name: activate-okta
type: call
call: "okta.create-user"
with:
login: "{{get-worker.work_email}}"
firstName: "{{get-worker.first_name}}"
lastName: "{{get-worker.last_name}}"
- name: send-welcome
type: call
call: "msteams.post-message"
with:
recipient: "{{get-worker.work_email}}"
message: "Welcome to ConocoPhillips, {{get-worker.first_name}}! Your onboarding ticket: {{create-snow-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: okta
baseUri: "https://conocophillips.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/chats/messages"
operations:
- name: post-message
method: POST
Onboards field employees by creating Workday records, provisioning ServiceNow access, and enrolling in safety training.
naftiko: "0.5"
info:
label: "New Field Employee Onboarding Orchestrator"
description: "Onboards field employees by creating Workday records, provisioning ServiceNow access, and enrolling in safety training."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: new-field-employee-onboar
port: 8080
tools:
- name: new-field-employee-onboarding
description: "Onboards field employees by creating Workday records."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New Field Employee Onboarding for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "New Field Employee Onboarding processed"
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{entity_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers"
operations:
- name: get-worker
method: GET
Manages offshore platform crew rotations by pulling schedules from Workday, booking helicopter transport, updating the platform manifest in SAP, and notifying the offshore installation manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Offshore Crew Rotation Orchestrator"
description: "Manages offshore platform crew rotations by pulling schedules from Workday, booking helicopter transport, updating the platform manifest in SAP, and notifying the offshore installation manager via Microsoft Teams."
tags:
- operations
- hr
- workday
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: offshore-ops
port: 8080
tools:
- name: rotate-offshore-crew
description: "Orchestrate an offshore crew rotation: pull schedules, book transport, update manifest, and notify the OIM."
inputParameters:
- name: platform_id
in: body
type: string
description: "The offshore platform identifier."
- name: rotation_date
in: body
type: string
description: "Rotation date in YYYY-MM-DD format."
steps:
- name: get-rotation-schedule
type: call
call: "workday.get-crew-schedule"
with:
platform_id: "{{platform_id}}"
date: "{{rotation_date}}"
- name: book-transport
type: call
call: "sap.book-helicopter-flight"
with:
platform_id: "{{platform_id}}"
date: "{{rotation_date}}"
pax_count: "{{get-rotation-schedule.outgoing_count}}"
- name: update-manifest
type: call
call: "sap.update-platform-manifest"
with:
platform_id: "{{platform_id}}"
incoming: "{{get-rotation-schedule.incoming_crew}}"
outgoing: "{{get-rotation-schedule.outgoing_crew}}"
- name: notify-oim
type: call
call: "msteams.post-message"
with:
channel: "platform-{{platform_id}}-ops"
message: "Crew rotation {{rotation_date}}: {{get-rotation-schedule.incoming_count}} incoming, {{get-rotation-schedule.outgoing_count}} outgoing. Flight: {{book-transport.flight_number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: schedules
path: "/conocophillips/staffing/schedules"
operations:
- name: get-crew-schedule
method: GET
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: logistics
path: "/logistics/flights"
operations:
- name: book-helicopter-flight
method: POST
- name: manifests
path: "/offshore/manifests/{{platform_id}}"
inputParameters:
- name: platform_id
in: path
operations:
- name: update-platform-manifest
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Plans offshore maintenance by pulling SAP schedules, coordinating logistics in ServiceNow, and notifying crews.
naftiko: "0.5"
info:
label: "Offshore Platform Maintenance Orchestrator"
description: "Plans offshore maintenance by pulling SAP schedules, coordinating logistics in ServiceNow, and notifying crews."
tags:
- operations
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: offshore-platform-mainten
port: 8080
tools:
- name: offshore-platform-maintenance
description: "Plans offshore maintenance by pulling SAP schedules."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Offshore Platform Maintenance for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Offshore Platform Maintenance processed"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the list of Okta groups an employee belongs to, including application access groups and security roles.
naftiko: "0.5"
info:
label: "Okta Group Membership Lookup"
description: "Returns the list of Okta groups an employee belongs to, including application access groups and security roles."
tags:
- security
- identity
- okta
- access
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-groups
description: "Look up Okta group memberships for a user by email. Returns group names and types."
inputParameters:
- name: user_email
in: body
type: string
description: "The employee email address."
call: "okta.get-user-groups"
with:
login: "{{user_email}}"
outputParameters:
- name: groups
type: array
mapping: "$.data"
items:
- name: group_name
type: string
mapping: "$.profile.name"
- name: group_type
type: string
mapping: "$.type"
consumes:
- type: http
namespace: okta
baseUri: "https://conocophillips.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-groups
path: "/users/{{login}}/groups"
inputParameters:
- name: login
in: path
operations:
- name: get-user-groups
method: GET
Retrieves Okta users with privileged application assignments for a quarterly access review and uploads the report to SharePoint.
naftiko: "0.5"
info:
label: "Okta User Access Review"
description: "Retrieves Okta users with privileged application assignments for a quarterly access review and uploads the report to SharePoint."
tags:
- identity
- security
- okta
- sharepoint
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: run-access-review
description: "Given an Okta group ID, retrieve all active members and their application assignments, then upload the access review report to SharePoint."
inputParameters:
- name: group_id
in: body
type: string
description: "The Okta group ID to review for privileged access."
- name: sharepoint_site_id
in: body
type: string
description: "The SharePoint site ID where the access review report should be stored."
steps:
- name: get-group-members
type: call
call: "okta.get-group-members"
with:
groupId: "{{group_id}}"
- name: upload-report
type: call
call: "sharepoint.create-file"
with:
siteId: "{{sharepoint_site_id}}"
fileName: "access-review-{{group_id}}.json"
content: "{{get-group-members.members}}"
consumes:
- type: http
namespace: okta
baseUri: "https://conocophillips.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: group-members
path: "/groups/{{groupId}}/users"
inputParameters:
- name: groupId
in: path
operations:
- name: get-group-members
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/sites/{{siteId}}/drive/root/children"
inputParameters:
- name: siteId
in: path
operations:
- name: create-file
method: POST
Aggregates operational KPIs from Snowflake, benchmarks against targets, and publishes review to Confluence.
naftiko: "0.5"
info:
label: "Operational Excellence Review Orchestrator"
description: "Aggregates operational KPIs from Snowflake, benchmarks against targets, and publishes review to Confluence."
tags:
- operations
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: operational-excellence-re
port: 8080
tools:
- name: operational-excellence-review
description: "Aggregates operational KPIs from Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Operational Excellence Review"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Manages pipeline integrity by analyzing inspection data in Snowflake, creating SAP work orders, and notifying engineers.
naftiko: "0.5"
info:
label: "Pipeline Integrity Management Orchestrator"
description: "Manages pipeline integrity by analyzing inspection data in Snowflake, creating SAP work orders, and notifying engineers."
tags:
- operations
- snowflake
- sap
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-integrity-manage
port: 8080
tools:
- name: pipeline-integrity-management
description: "Manages pipeline integrity by analyzing inspection data in Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Pipeline Integrity Management processed"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a pipeline leak alarm fires from Snowflake sensor data, creates a P1 incident in ServiceNow, dispatches the nearest field crew via SAP, triggers an emergency notification in Microsoft Teams, and logs the event for regulatory reporting.
naftiko: "0.5"
info:
label: "Pipeline Leak Detection Response Orchestrator"
description: "When a pipeline leak alarm fires from Snowflake sensor data, creates a P1 incident in ServiceNow, dispatches the nearest field crew via SAP, triggers an emergency notification in Microsoft Teams, and logs the event for regulatory reporting."
tags:
- safety
- operations
- snowflake
- servicenow
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pipeline-safety
port: 8080
tools:
- name: respond-to-leak-alarm
description: "Orchestrate emergency response to a pipeline leak detection: create incident, dispatch crew, notify, and log for compliance."
inputParameters:
- name: pipeline_segment_id
in: body
type: string
description: "The pipeline segment identifier."
- name: alarm_id
in: body
type: string
description: "The leak detection alarm identifier."
steps:
- name: get-alarm-details
type: call
call: "snowflake.get-alarm-data"
with:
alarm_id: "{{alarm_id}}"
- name: create-p1-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Pipeline leak alarm: segment {{pipeline_segment_id}}"
urgency: "1"
impact: "1"
category: "pipeline_safety"
description: "Pressure drop: {{get-alarm-details.pressure_drop_psi}} PSI at mile marker {{get-alarm-details.mile_marker}}"
- name: dispatch-crew
type: call
call: "sap.dispatch-field-crew"
with:
segment_id: "{{pipeline_segment_id}}"
location: "{{get-alarm-details.mile_marker}}"
priority: "emergency"
- name: notify-emergency-team
type: call
call: "msteams.post-message"
with:
channel: "pipeline-emergencies"
message: "LEAK ALARM on segment {{pipeline_segment_id}}, mile marker {{get-alarm-details.mile_marker}}. Incident: {{create-p1-incident.number}}. Crew dispatched ETA: {{dispatch-crew.eta_minutes}} min."
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: get-alarm-data
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: field-dispatch
path: "/plant-maintenance/dispatch"
operations:
- name: dispatch-field-crew
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Triggers a Power BI dataset refresh for the energy production analytics dashboard and notifies the analytics team in Teams upon completion.
naftiko: "0.5"
info:
label: "Power BI Energy Analytics Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the energy production analytics dashboard and notifies the analytics team in Teams upon completion."
tags:
- data
- analytics
- power-bi
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: trigger-dashboard-refresh
description: "Given a Power BI workspace ID and dataset ID, trigger a dataset refresh and notify the analytics team in Teams."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace (group) ID."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
steps:
- name: trigger-refresh
type: call
call: "powerbi.refresh-dataset"
with:
workspaceId: "{{workspace_id}}"
datasetId: "{{dataset_id}}"
- name: notify-analytics
type: call
call: "msteams.post-channel-message"
with:
channelId: "analytics-team"
message: "Power BI dataset {{dataset_id}} refresh triggered in workspace {{workspace_id}}."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspaceId}}/datasets/{{datasetId}}/refreshes"
inputParameters:
- name: workspaceId
in: path
- name: datasetId
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves ESG metrics from a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI ESG Dashboard Lookup"
description: "Retrieves ESG metrics from a Power BI dataset."
tags:
- sustainability
- power-bi
capability:
exposes:
- type: mcp
namespace: esg-data
port: 8080
tools:
- name: get-esg-metrics
description: "Look up ESG metrics from Power BI."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID."
call: "powerbi.get-dataset-value"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: esg_score
type: number
mapping: "$.value[0].esg_score"
- name: carbon_intensity
type: number
mapping: "$.value[0].carbon_intensity"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/executeQueries"
operations:
- name: get-dataset-value
method: POST
Triggers a refresh of the Health Safety and Environment Power BI dashboard dataset, returning refresh status and completion timestamp.
naftiko: "0.5"
info:
label: "Power BI HSE Dashboard Refresh"
description: "Triggers a refresh of the Health Safety and Environment Power BI dashboard dataset, returning refresh status and completion timestamp."
tags:
- safety
- reporting
- power-bi
- hse
capability:
exposes:
- type: mcp
namespace: hse-reporting
port: 8080
tools:
- name: refresh-hse-dashboard
description: "Trigger a Power BI dataset refresh for the HSE dashboard. Returns refresh status."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset identifier for the HSE dashboard."
call: "powerbi.trigger-refresh"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: refresh_id
type: string
mapping: "$.id"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Reconciles production allocations between SAP and Snowflake, identifies discrepancies, and creates Jira tickets.
naftiko: "0.5"
info:
label: "Production Allocation Reconciliation Orchestrator"
description: "Reconciles production allocations between SAP and Snowflake, identifies discrepancies, and creates Jira tickets."
tags:
- production
- sap
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: production-allocation-rec
port: 8080
tools:
- name: production-allocation-reconciliation
description: "Reconciles production allocations between SAP and Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "OPS"
summary: "Production Allocation Reconciliation"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: jira
baseUri: "https://conocophillips.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Updates production forecasts in Snowflake, validates against SAP actuals, and publishes to Power BI.
naftiko: "0.5"
info:
label: "Production Forecast Update Orchestrator"
description: "Updates production forecasts in Snowflake, validates against SAP actuals, and publishes to Power BI."
tags:
- production
- snowflake
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: production-forecast-updat
port: 8080
tools:
- name: production-forecast-update
description: "Updates production forecasts in Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: refresh
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "production-ds"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
operations:
- name: trigger-refresh
method: POST
Reconciles daily production allocation volumes between SAP well data and SCADA flow measurements in Snowflake, flags discrepancies above threshold, and creates adjustment entries.
naftiko: "0.5"
info:
label: "Production Volume Reconciliation Orchestrator"
description: "Reconciles daily production allocation volumes between SAP well data and SCADA flow measurements in Snowflake, flags discrepancies above threshold, and creates adjustment entries."
tags:
- energy
- production
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: production-accounting
port: 8080
tools:
- name: reconcile-production-volumes
description: "Orchestrate daily production volume reconciliation: compare SAP allocations to SCADA actuals, flag variances, and create adjustments."
inputParameters:
- name: production_date
in: body
type: string
description: "Production date in YYYY-MM-DD format."
- name: asset_area
in: body
type: string
description: "Asset area code."
steps:
- name: get-sap-allocations
type: call
call: "sap.get-daily-allocation"
with:
date: "{{production_date}}"
area: "{{asset_area}}"
- name: get-scada-actuals
type: call
call: "snowflake.query-scada-volumes"
with:
date: "{{production_date}}"
area: "{{asset_area}}"
- name: flag-discrepancies
type: call
call: "servicenow.create-incident"
with:
short_description: "Production volume discrepancy {{asset_area}} on {{production_date}}"
category: "production_accounting"
- name: post-adjustments
type: call
call: "sap.post-volume-adjustment"
with:
date: "{{production_date}}"
area: "{{asset_area}}"
adjustments: "{{get-scada-actuals.variance_items}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: allocations
path: "/production/allocations"
operations:
- name: get-daily-allocation
method: GET
- name: post-volume-adjustment
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-scada-volumes
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Compiles ESG data from Snowflake, generates reports, and publishes to Confluence for stakeholder review.
naftiko: "0.5"
info:
label: "Quarterly ESG Report Orchestrator"
description: "Compiles ESG data from Snowflake, generates reports, and publishes to Confluence for stakeholder review."
tags:
- sustainability
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: quarterly-esg-report
port: 8080
tools:
- name: quarterly-esg-report
description: "Compiles ESG data from Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Quarterly ESG Report"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Plans refinery turnarounds by pulling SAP maintenance schedules, coordinating via ServiceNow, and publishing plans to Confluence.
naftiko: "0.5"
info:
label: "Refinery Turnaround Planning Orchestrator"
description: "Plans refinery turnarounds by pulling SAP maintenance schedules, coordinating via ServiceNow, and publishing plans to Confluence."
tags:
- downstream
- sap
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: refinery-turnaround-plann
port: 8080
tools:
- name: refinery-turnaround-planning
description: "Plans refinery turnarounds by pulling SAP maintenance schedules."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Refinery Turnaround Planning for {{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Refinery Turnaround Planning"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Monitors upcoming regulatory filing deadlines from ServiceNow, gathers required data from SAP and Snowflake, and sends a consolidated reminder to the compliance team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Regulatory Filing Deadline Orchestrator"
description: "Monitors upcoming regulatory filing deadlines from ServiceNow, gathers required data from SAP and Snowflake, and sends a consolidated reminder to the compliance team via Microsoft Teams."
tags:
- compliance
- energy
- servicenow
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: check-filing-deadlines
description: "Orchestrate regulatory filing deadline check: get upcoming deadlines, gather data readiness, and alert the compliance team."
inputParameters:
- name: days_ahead
in: body
type: number
description: "Number of days ahead to check for deadlines."
steps:
- name: get-deadlines
type: call
call: "servicenow.get-regulatory-deadlines"
with:
days: "{{days_ahead}}"
- name: check-data-readiness
type: call
call: "snowflake.query-filing-data-status"
with:
deadlines: "{{get-deadlines.items}}"
- name: get-sap-submissions
type: call
call: "sap.get-filing-status"
with:
deadlines: "{{get-deadlines.items}}"
- name: notify-compliance
type: call
call: "msteams.post-message"
with:
channel: "regulatory-compliance"
message: "{{get-deadlines.count}} regulatory filings due in next {{days_ahead}} days. Data ready: {{check-data-readiness.ready_count}}/{{get-deadlines.count}}. SAP submissions complete: {{get-sap-submissions.submitted_count}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: regulatory
path: "/table/u_regulatory_filing"
operations:
- name: get-regulatory-deadlines
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-filing-data-status
method: POST
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: filings
path: "/regulatory/filings/status"
operations:
- name: get-filing-status
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Analyzes reservoir performance in Snowflake, generates engineering reports, and publishes to Confluence.
naftiko: "0.5"
info:
label: "Reservoir Performance Review Orchestrator"
description: "Analyzes reservoir performance in Snowflake, generates engineering reports, and publishes to Confluence."
tags:
- upstream
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: reservoir-performance-rev
port: 8080
tools:
- name: reservoir-performance-review
description: "Analyzes reservoir performance in Snowflake."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Reservoir Performance Review"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Triggers a reservoir simulation run by pulling input parameters from Snowflake, submitting the job to AWS Batch, monitoring status via CloudWatch, and storing results back in Snowflake for analysis.
naftiko: "0.5"
info:
label: "Reservoir Simulation Pipeline Orchestrator"
description: "Triggers a reservoir simulation run by pulling input parameters from Snowflake, submitting the job to AWS Batch, monitoring status via CloudWatch, and storing results back in Snowflake for analysis."
tags:
- energy
- geoscience
- snowflake
- aws
- simulation
capability:
exposes:
- type: mcp
namespace: reservoir-engineering
port: 8080
tools:
- name: run-reservoir-simulation
description: "Orchestrate a reservoir simulation: pull inputs, submit compute job, monitor, and store results."
inputParameters:
- name: reservoir_id
in: body
type: string
description: "The reservoir model identifier."
- name: scenario_name
in: body
type: string
description: "The simulation scenario name."
steps:
- name: get-input-params
type: call
call: "snowflake.query-simulation-inputs"
with:
reservoir_id: "{{reservoir_id}}"
scenario: "{{scenario_name}}"
- name: submit-simulation
type: call
call: "aws-batch.submit-job"
with:
job_definition: "reservoir-sim"
job_queue: "gpu-compute"
parameters:
reservoir_id: "{{reservoir_id}}"
scenario: "{{scenario_name}}"
- name: monitor-job
type: call
call: "cloudwatch.get-job-metrics"
with:
job_id: "{{submit-simulation.job_id}}"
- name: store-results
type: call
call: "snowflake.insert-simulation-results"
with:
reservoir_id: "{{reservoir_id}}"
scenario: "{{scenario_name}}"
job_id: "{{submit-simulation.job_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-simulation-inputs
method: POST
- name: insert-simulation-results
method: POST
- type: http
namespace: aws-batch
baseUri: "https://batch.us-west-2.amazonaws.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_auth_header"
placement: header
resources:
- name: jobs
path: "/v1/submitjob"
operations:
- name: submit-job
method: POST
- type: http
namespace: cloudwatch
baseUri: "https://monitoring.us-west-2.amazonaws.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_auth_header"
placement: header
resources:
- name: metrics
path: "/"
operations:
- name: get-job-metrics
method: POST
Retrieves a customer or partner account from Salesforce by account ID, returning account name, industry, annual revenue, and primary contact.
naftiko: "0.5"
info:
label: "Salesforce Account Lookup"
description: "Retrieves a customer or partner account from Salesforce by account ID, returning account name, industry, annual revenue, and primary contact."
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account
description: "Look up a Salesforce account by ID. Returns name, industry, revenue, and primary contact."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account identifier."
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: industry
type: string
mapping: "$.Industry"
- name: annual_revenue
type: number
mapping: "$.AnnualRevenue"
- name: primary_contact
type: string
mapping: "$.PrimaryContact__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
When a new Salesforce lead is created, enriches the record with ZoomInfo company data and updates territory assignment.
naftiko: "0.5"
info:
label: "Salesforce Lead Enrichment"
description: "When a new Salesforce lead is created, enriches the record with ZoomInfo company data and updates territory assignment."
tags:
- crm
- sales
- salesforce
- zoominfo
- lead-management
capability:
exposes:
- type: mcp
namespace: crm-leads
port: 8080
tools:
- name: enrich-lead
description: "Given a Salesforce lead ID, fetch ZoomInfo company firmographics and update the lead record with enriched data."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce lead record ID."
steps:
- name: get-lead
type: call
call: "salesforce.get-lead"
with:
lead_id: "{{lead_id}}"
- name: enrich-company
type: call
call: "zoominfo.search-company"
with:
companyName: "{{get-lead.Company}}"
- name: update-lead
type: call
call: "salesforce-update.update-lead"
with:
lead_id: "{{lead_id}}"
AnnualRevenue: "{{enrich-company.revenue}}"
NumberOfEmployees: "{{enrich-company.employeeCount}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com/search"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: companies
path: "/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-update
baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
When a Salesforce opportunity closes as Won, creates an SAP S/4HANA sales order and notifies the account team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Opportunity to SAP Sales Order Sync"
description: "When a Salesforce opportunity closes as Won, creates an SAP S/4HANA sales order and notifies the account team in Microsoft Teams."
tags:
- crm
- sales
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm-opportunity
port: 8080
tools:
- name: sync-closed-opportunity
description: "Given a Salesforce opportunity ID that closed Won, create an SAP S/4HANA sales order and notify the account team in Teams."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity record ID."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-sales-order
type: call
call: "sap-sd.create-sales-order"
with:
customerName: "{{get-opportunity.AccountName}}"
amount: "{{get-opportunity.Amount}}"
currency: "{{get-opportunity.CurrencyIsoCode}}"
- name: notify-team
type: call
call: "msteams.post-channel-message"
with:
channelId: "sales-team"
message: "Opportunity {{get-opportunity.Name}} closed Won. SAP Sales Order {{create-sales-order.salesOrderId}} created."
consumes:
- type: http
namespace: salesforce
baseUri: "https://conocophillips.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-sd
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder"
operations:
- name: create-sales-order
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves supplier contracts approaching expiration from SAP Ariba, returning contract title, supplier name, expiration date, and annual value.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Expiry Lookup"
description: "Retrieves supplier contracts approaching expiration from SAP Ariba, returning contract title, supplier name, expiration date, and annual value."
tags:
- procurement
- sap
- contracts
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-expiring-contracts
description: "Look up supplier contracts expiring within a specified window from SAP Ariba. Returns contract details and values."
inputParameters:
- name: days_ahead
in: body
type: number
description: "Number of days ahead to check for expiring contracts."
call: "ariba.get-expiring-contracts"
with:
days: "{{days_ahead}}"
outputParameters:
- name: contracts
type: array
mapping: "$.data"
items:
- name: contract_id
type: string
mapping: "$.contractId"
- name: title
type: string
mapping: "$.title"
- name: supplier_name
type: string
mapping: "$.supplierName"
- name: expiration_date
type: string
mapping: "$.expirationDate"
- name: annual_value
type: number
mapping: "$.annualValue"
consumes:
- type: http
namespace: ariba
baseUri: "https://api.ariba.com/v2"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: contracts
path: "/procurement/contracts"
operations:
- name: get-expiring-contracts
method: GET
When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP and routes approval to the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Ariba Supplier Requisition Approval"
description: "When a purchase requisition is submitted in SAP Ariba, validates budget availability in SAP and routes approval to the manager via Microsoft Teams."
tags:
- procurement
- sap-ariba
- sap
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: procurement-approval
port: 8080
tools:
- name: approve-requisition
description: "Given an Ariba requisition ID, check SAP cost center budget and send an approval card to the responsible manager in Microsoft Teams."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The SAP Ariba requisition ID."
- name: manager_email
in: body
type: string
description: "The Microsoft Teams UPN of the approving manager."
steps:
- name: get-requisition
type: call
call: "ariba.get-requisition"
with:
requisitionId: "{{requisition_id}}"
- name: check-budget
type: call
call: "sap-finance.check-budget"
with:
cost_center: "{{get-requisition.costCenter}}"
amount: "{{get-requisition.totalAmount}}"
- name: send-approval-card
type: call
call: "msteams.post-message"
with:
recipient: "{{manager_email}}"
message: "Approval needed: Requisition {{requisition_id}} for {{get-requisition.totalAmount}} {{get-requisition.currency}}. Budget: {{check-budget.status}}."
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/purchase-requisitions/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: requisitions
path: "/requisitions/{{requisitionId}}"
inputParameters:
- name: requisitionId
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: sap-finance
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: budgets
path: "/A_CostCenter('{{cost_center}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: check-budget
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/chats/messages"
operations:
- name: post-message
method: POST
Retrieves gas compressor station throughput data from SAP, returning inlet and outlet pressures, flow rate in MCFD, and compressor efficiency percentage.
naftiko: "0.5"
info:
label: "SAP Compressor Station Throughput Lookup"
description: "Retrieves gas compressor station throughput data from SAP, returning inlet and outlet pressures, flow rate in MCFD, and compressor efficiency percentage."
tags:
- energy
- operations
- sap
- midstream
capability:
exposes:
- type: mcp
namespace: midstream-ops
port: 8080
tools:
- name: get-compressor-throughput
description: "Look up compressor station throughput from SAP. Returns pressures, flow rates, and efficiency."
inputParameters:
- name: station_id
in: body
type: string
description: "The compressor station identifier."
call: "sap.get-compressor-data"
with:
station_id: "{{station_id}}"
outputParameters:
- name: inlet_pressure_psi
type: number
mapping: "$.inletPressure"
- name: outlet_pressure_psi
type: number
mapping: "$.outletPressure"
- name: flow_rate_mcfd
type: number
mapping: "$.flowRateMCFD"
- name: efficiency_pct
type: number
mapping: "$.efficiencyPercent"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: compressors
path: "/midstream/compressors/{{station_id}}/throughput"
inputParameters:
- name: station_id
in: path
operations:
- name: get-compressor-data
method: GET
When an expense report is submitted in SAP Concur, validates policy compliance and routes the approval request to the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Approval"
description: "When an expense report is submitted in SAP Concur, validates policy compliance and routes the approval request to the manager via Microsoft Teams."
tags:
- finance
- expense-management
- sap-concur
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: approve-expense-report
description: "Given an SAP Concur report ID and manager email, retrieve report details and send an approval card to the manager in Teams."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
- name: manager_email
in: body
type: string
description: "The Microsoft Teams UPN of the approving manager."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
reportId: "{{report_id}}"
- name: send-approval
type: call
call: "msteams.post-message"
with:
recipient: "{{manager_email}}"
message: "Expense approval needed: Report {{report_id}} for {{get-report.Total}} {{get-report.CurrencyCode}} submitted by {{get-report.OwnerName}}."
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{reportId}}"
inputParameters:
- name: reportId
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/chats/messages"
operations:
- name: post-message
method: POST
Retrieves crude blending recipe from SAP.
naftiko: "0.5"
info:
label: "SAP Crude Blending Recipe Lookup"
description: "Retrieves crude blending recipe from SAP."
tags:
- refining
- sap
- production
capability:
exposes:
- type: mcp
namespace: crude-blending
port: 8080
tools:
- name: get-blend-recipe
description: "Look up recipe by process order."
inputParameters:
- name: process_order
in: body
type: string
description: "SAP process order."
call: sap.get-recipe
with:
process_order: "{{process_order}}"
outputParameters:
- name: feedstocks
type: string
mapping: "$.d.FeedstockList"
- name: target_api
type: number
mapping: "$.d.TargetAPIGravity"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_PROCESS_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: recipes
path: "/A_ProcessOrder('{{process_order}}')/to_Recipe"
inputParameters:
- name: process_order
in: path
operations:
- name: get-recipe
method: GET
Retrieves crude oil inventory levels from SAP for storage terminals.
naftiko: "0.5"
info:
label: "SAP Crude Oil Inventory Lookup"
description: "Retrieves crude oil inventory levels from SAP for storage terminals."
tags:
- upstream
- inventory
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: crude-inventory
port: 8080
tools:
- name: get-crude-inventory
description: "Look up crude inventory by terminal ID."
inputParameters:
- name: terminal_id
in: body
type: string
description: "SAP plant code for storage terminal."
call: sap.get-inventory
with:
terminal_id: "{{terminal_id}}"
outputParameters:
- name: total_volume_bbl
type: number
mapping: "$.d.TotalVolume"
- name: product_grade
type: string
mapping: "$.d.MaterialGrade"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_INVENTORY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory
path: "/A_MaterialStock(Plant='{{terminal_id}}')"
inputParameters:
- name: terminal_id
in: path
operations:
- name: get-inventory
method: GET
Looks up downstream product delivery status in SAP.
naftiko: "0.5"
info:
label: "SAP Downstream Product Shipment Status"
description: "Looks up downstream product delivery status in SAP."
tags:
- downstream
- logistics
- sap
capability:
exposes:
- type: mcp
namespace: shipment-status
port: 8080
tools:
- name: get-shipment-status
description: "Look up shipment by delivery number."
inputParameters:
- name: delivery_number
in: body
type: string
description: "SAP delivery number."
call: sap.get-delivery
with:
delivery_number: "{{delivery_number}}"
outputParameters:
- name: carrier
type: string
mapping: "$.d.CarrierName"
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: eta
type: string
mapping: "$.d.PlannedArrivalDate"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: deliveries
path: "/A_OutboundDelivery('{{delivery_number}}')"
inputParameters:
- name: delivery_number
in: path
operations:
- name: get-delivery
method: GET
Retrieves operational status of a drilling rig from SAP.
naftiko: "0.5"
info:
label: "SAP Drilling Rig Status Lookup"
description: "Retrieves operational status of a drilling rig from SAP."
tags:
- upstream
- sap
capability:
exposes:
- type: mcp
namespace: rig-status
port: 8080
tools:
- name: get-rig-status
description: "Look up drilling rig operational status."
inputParameters:
- name: rig_id
in: body
type: string
description: "SAP rig equipment ID."
call: "sap.get-rig"
with:
rig_id: "{{rig_id}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OperationalStatus"
- name: depth_ft
type: number
mapping: "$.d.CurrentDepth"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: rigs
path: "/A_Equipment('{{rig_id}}')"
inputParameters:
- name: rig_id
in: path
operations:
- name: get-rig
method: GET
Retrieves maintenance order history for a specific piece of field equipment from SAP Plant Maintenance, returning order type, completion date, and total cost.
naftiko: "0.5"
info:
label: "SAP Equipment Maintenance History"
description: "Retrieves maintenance order history for a specific piece of field equipment from SAP Plant Maintenance, returning order type, completion date, and total cost."
tags:
- operations
- maintenance
- sap
- equipment
capability:
exposes:
- type: mcp
namespace: field-maintenance
port: 8080
tools:
- name: get-maintenance-history
description: "Look up maintenance history for equipment in SAP PM. Returns past maintenance orders, dates, and costs."
inputParameters:
- name: equipment_id
in: body
type: string
description: "The SAP equipment number."
call: "sap.get-maintenance-orders"
with:
equipment_id: "{{equipment_id}}"
outputParameters:
- name: orders
type: array
mapping: "$.data"
items:
- name: order_number
type: string
mapping: "$.orderNumber"
- name: order_type
type: string
mapping: "$.orderType"
- name: completion_date
type: string
mapping: "$.completionDate"
- name: total_cost
type: number
mapping: "$.totalCost"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: maintenance-orders
path: "/plant-maintenance/equipment/{{equipment_id}}/orders"
inputParameters:
- name: equipment_id
in: path
operations:
- name: get-maintenance-orders
method: GET
Processes field service tickets by pulling the ticket from SAP, validating contractor rates against the master agreement, routing for supervisor approval via ServiceNow, and posting the approved amount to accounts payable.
naftiko: "0.5"
info:
label: "SAP Field Ticket Approval Orchestrator"
description: "Processes field service tickets by pulling the ticket from SAP, validating contractor rates against the master agreement, routing for supervisor approval via ServiceNow, and posting the approved amount to accounts payable."
tags:
- operations
- finance
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: field-accounting
port: 8080
tools:
- name: process-field-ticket
description: "Orchestrate field ticket processing: pull ticket, validate rates, route for approval, and post to AP."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The SAP field ticket document number."
steps:
- name: get-field-ticket
type: call
call: "sap.get-field-ticket"
with:
ticket_id: "{{ticket_id}}"
- name: validate-rates
type: call
call: "sap.validate-contractor-rates"
with:
vendor_id: "{{get-field-ticket.vendor_id}}"
line_items: "{{get-field-ticket.line_items}}"
- name: route-approval
type: call
call: "servicenow.create-approval"
with:
short_description: "Field ticket approval: {{ticket_id}} - ${{get-field-ticket.total_amount}}"
approver: "{{get-field-ticket.supervisor_email}}"
amount: "{{get-field-ticket.total_amount}}"
- name: post-to-ap
type: call
call: "sap.post-invoice"
with:
vendor_id: "{{get-field-ticket.vendor_id}}"
amount: "{{get-field-ticket.total_amount}}"
reference: "{{ticket_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: field-tickets
path: "/field-services/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-field-ticket
method: GET
- name: rate-validation
path: "/procurement/rate-validation"
operations:
- name: validate-contractor-rates
method: POST
- name: invoices
path: "/finance/invoices"
operations:
- name: post-invoice
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: approvals
path: "/table/sysapproval_approver"
operations:
- name: create-approval
method: POST
At month end, retrieves SAP S/4HANA period close status for all company codes and posts the consolidated checklist to the finance Teams channel.
naftiko: "0.5"
info:
label: "SAP Finance Period Close Status Check"
description: "At month end, retrieves SAP S/4HANA period close status for all company codes and posts the consolidated checklist to the finance Teams channel."
tags:
- finance
- erp
- sap
- microsoft-teams
- period-close
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: check-period-close-status
description: "Given a fiscal year and period, retrieve the SAP period close status for all company codes and post the consolidated status to the finance Teams channel."
inputParameters:
- name: fiscal_year
in: body
type: string
description: "The fiscal year, e.g. 2025."
- name: fiscal_period
in: body
type: string
description: "The fiscal period number, e.g. 03 for March."
steps:
- name: get-close-status
type: call
call: "sap-finance.get-period-status"
with:
fiscalYear: "{{fiscal_year}}"
fiscalPeriod: "{{fiscal_period}}"
- name: post-status
type: call
call: "msteams.post-channel-message"
with:
channelId: "finance-team"
message: "Period close FY{{fiscal_year}} P{{fiscal_period}}: Open items={{get-close-status.openItems}}, Blocked postings={{get-close-status.blockedPostings}}"
consumes:
- type: http
namespace: sap-finance
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/API_FIGL_PERIOD_LOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: period-status
path: "/A_AccountingPeriodLock"
inputParameters:
- name: fiscalYear
in: query
- name: fiscalPeriod
in: query
operations:
- name: get-period-status
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves flare gas recovery rates from SAP for refinery units.
naftiko: "0.5"
info:
label: "SAP Flare Gas Recovery Monitoring"
description: "Retrieves flare gas recovery rates from SAP for refinery units."
tags:
- environmental
- refining
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: flare-recovery
port: 8080
tools:
- name: get-flare-recovery
description: "Look up flare recovery by refinery unit."
inputParameters:
- name: unit_id
in: body
type: string
description: "SAP functional location."
call: sap.get-flare-metrics
with:
unit_id: "{{unit_id}}"
outputParameters:
- name: recovery_pct
type: number
mapping: "$.d.RecoveryPercentage"
- name: compliant
type: boolean
mapping: "$.d.RegulatoryCompliant"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: flare-metrics
path: "/A_MeasurementDocument(FunctionalLocation='{{unit_id}}')"
inputParameters:
- name: unit_id
in: path
operations:
- name: get-flare-metrics
method: GET
Retrieves gas plant processing data from SAP, returning inlet volume, NGL yield, residue gas volume, and plant utilization percentage.
naftiko: "0.5"
info:
label: "SAP Gas Plant Processing Lookup"
description: "Retrieves gas plant processing data from SAP, returning inlet volume, NGL yield, residue gas volume, and plant utilization percentage."
tags:
- energy
- operations
- sap
- gas-processing
capability:
exposes:
- type: mcp
namespace: gas-processing
port: 8080
tools:
- name: get-gas-plant-data
description: "Look up gas plant processing metrics from SAP. Returns inlet, NGL yield, residue gas, and utilization."
inputParameters:
- name: plant_id
in: body
type: string
description: "The gas processing plant identifier."
- name: date
in: body
type: string
description: "Processing date in YYYY-MM-DD format."
call: "sap.get-plant-processing"
with:
plant_id: "{{plant_id}}"
date: "{{date}}"
outputParameters:
- name: inlet_mcfd
type: number
mapping: "$.inletVolumeMCFD"
- name: ngl_yield_bpd
type: number
mapping: "$.nglYieldBPD"
- name: residue_gas_mcfd
type: number
mapping: "$.residueGasMCFD"
- name: utilization_pct
type: number
mapping: "$.utilizationPercent"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: gas-plants
path: "/gas-processing/plants/{{plant_id}}/data"
inputParameters:
- name: plant_id
in: path
operations:
- name: get-plant-processing
method: GET
Retrieves heat exchanger fouling data from SAP.
naftiko: "0.5"
info:
label: "SAP Heat Exchanger Fouling Monitor"
description: "Retrieves heat exchanger fouling data from SAP."
tags:
- refining
- maintenance
- sap
capability:
exposes:
- type: mcp
namespace: hx-fouling
port: 8080
tools:
- name: get-fouling-status
description: "Look up fouling by equipment number."
inputParameters:
- name: equipment_number
in: body
type: string
description: "SAP equipment number."
call: sap.get-hx-performance
with:
equipment_number: "{{equipment_number}}"
outputParameters:
- name: fouling_factor
type: number
mapping: "$.d.FoulingFactor"
- name: cleaning_recommended
type: boolean
mapping: "$.d.CleaningRecommended"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: hx-data
path: "/A_MeasurementDocument(Equipment='{{equipment_number}}')"
inputParameters:
- name: equipment_number
in: path
operations:
- name: get-hx-performance
method: GET
Retrieves health, safety, and environment incident count from SAP.
naftiko: "0.5"
info:
label: "SAP HSE Incident Count Lookup"
description: "Retrieves health, safety, and environment incident count from SAP."
tags:
- safety
- sap
capability:
exposes:
- type: mcp
namespace: hse-data
port: 8080
tools:
- name: get-hse-incidents
description: "Look up HSE incident count by location."
inputParameters:
- name: location_code
in: body
type: string
description: "SAP location code."
call: "sap.get-hse-count"
with:
location: "{{location_code}}"
outputParameters:
- name: incident_count
type: number
mapping: "$.d.IncidentCount"
- name: severity
type: string
mapping: "$.d.MaxSeverity"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_INCIDENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: incidents
path: "/A_HSEIncident(Location='{{location}}')"
inputParameters:
- name: location
in: path
operations:
- name: get-hse-count
method: GET
Retrieves joint venture billing details from SAP.
naftiko: "0.5"
info:
label: "SAP Joint Venture Billing Lookup"
description: "Retrieves joint venture billing details from SAP."
tags:
- finance
- sap
capability:
exposes:
- type: mcp
namespace: jv-billing
port: 8080
tools:
- name: get-jv-billing
description: "Look up JV billing by venture ID."
inputParameters:
- name: venture_id
in: body
type: string
description: "SAP joint venture ID."
call: "sap.get-jv-bill"
with:
venture_id: "{{venture_id}}"
outputParameters:
- name: total_charges
type: number
mapping: "$.d.TotalCharges"
- name: partner_share
type: number
mapping: "$.d.PartnerShare"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/JVA_BILLING_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: billing
path: "/A_JVBilling('{{venture_id}}')"
inputParameters:
- name: venture_id
in: path
operations:
- name: get-jv-bill
method: GET
Retrieves joint venture partner billing statements from SAP JVA, returning working interest percentages, net revenue interest, and billed amounts by partner.
naftiko: "0.5"
info:
label: "SAP Joint Venture Partner Billing"
description: "Retrieves joint venture partner billing statements from SAP JVA, returning working interest percentages, net revenue interest, and billed amounts by partner."
tags:
- energy
- finance
- sap
- joint-venture
capability:
exposes:
- type: mcp
namespace: jv-accounting
port: 8080
tools:
- name: get-jv-billing
description: "Look up JV partner billing data from SAP for a given venture and period. Returns partner shares and billed amounts."
inputParameters:
- name: venture_id
in: body
type: string
description: "The SAP joint venture identifier."
- name: period
in: body
type: string
description: "Billing period in YYYY-MM format."
call: "sap.get-jv-billing"
with:
venture_id: "{{venture_id}}"
period: "{{period}}"
outputParameters:
- name: partners
type: array
mapping: "$.data"
items:
- name: partner_name
type: string
mapping: "$.partnerName"
- name: working_interest_pct
type: number
mapping: "$.workingInterest"
- name: billed_amount
type: number
mapping: "$.billedAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: jv-billing
path: "/joint-ventures/{{venture_id}}/billing"
inputParameters:
- name: venture_id
in: path
- name: period
in: query
operations:
- name: get-jv-billing
method: GET
Retrieves land lease expiry dates from SAP Real Estate.
naftiko: "0.5"
info:
label: "SAP Land Lease Expiry Lookup"
description: "Retrieves land lease expiry dates from SAP Real Estate."
tags:
- legal
- sap
capability:
exposes:
- type: mcp
namespace: lease-data
port: 8080
tools:
- name: get-lease-expiry
description: "Look up land lease expiry date."
inputParameters:
- name: lease_id
in: body
type: string
description: "SAP lease contract ID."
call: "sap.get-lease"
with:
lease_id: "{{lease_id}}"
outputParameters:
- name: expiry_date
type: string
mapping: "$.d.ExpiryDate"
- name: annual_payment
type: number
mapping: "$.d.AnnualPayment"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/RE_LEASE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: leases
path: "/A_Lease('{{lease_id}}')"
inputParameters:
- name: lease_id
in: path
operations:
- name: get-lease
method: GET
Calculates royalty payments from SAP production data and logs to Snowflake.
naftiko: "0.5"
info:
label: "SAP Lease Royalty Payment Calculation"
description: "Calculates royalty payments from SAP production data and logs to Snowflake."
tags:
- upstream
- finance
- sap
- snowflake
capability:
exposes:
- type: mcp
namespace: royalty-calc
port: 8080
tools:
- name: calculate-royalties
description: "Pull volumes, calculate royalties, log to Snowflake."
inputParameters:
- name: lease_id
in: body
type: string
description: "Lease ID."
- name: production_month
in: body
type: string
description: "Month in YYYY-MM."
steps:
- name: get-production
type: call
call: sap.get-lease-production
with:
lease_id: "{{lease_id}}"
month: "{{production_month}}"
- name: log-royalty
type: call
call: snowflake.insert-royalty-record
with:
lease_id: "{{lease_id}}"
volume: "{{get-production.total_volume}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_PRODUCTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: lease-production
path: "/A_LeaseProduction"
operations:
- name: get-lease-production
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: royalties
path: "/statements"
operations:
- name: insert-royalty-record
method: POST
Retrieves MSDS from SAP EHS for chemical materials.
naftiko: "0.5"
info:
label: "SAP Material Safety Data Sheet Lookup"
description: "Retrieves MSDS from SAP EHS for chemical materials."
tags:
- safety
- environmental
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: msds-lookup
port: 8080
tools:
- name: get-msds
description: "Look up MSDS by material number."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number."
call: sap.get-msds
with:
material_number: "{{material_number}}"
outputParameters:
- name: hazard_class
type: string
mapping: "$.d.HazardClassification"
- name: ppe_required
type: string
mapping: "$.d.PPERequirements"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_MSDS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: safety-data-sheets
path: "/A_MaterialSafetySheet('{{material_number}}')"
inputParameters:
- name: material_number
in: path
operations:
- name: get-msds
method: GET
Retrieves gas nomination balances from SAP.
naftiko: "0.5"
info:
label: "SAP Natural Gas Nomination Balance"
description: "Retrieves gas nomination balances from SAP."
tags:
- trading
- upstream
- sap
capability:
exposes:
- type: mcp
namespace: gas-nomination
port: 8080
tools:
- name: get-nomination-balance
description: "Look up gas balance by pipeline contract."
inputParameters:
- name: pipeline_contract
in: body
type: string
description: "SAP pipeline contract."
call: sap.get-gas-balance
with:
pipeline_contract: "{{pipeline_contract}}"
outputParameters:
- name: nominated_mcf
type: number
mapping: "$.d.NominatedVolume"
- name: actual_mcf
type: number
mapping: "$.d.ActualVolume"
- name: imbalance_mcf
type: number
mapping: "$.d.ImbalanceVolume"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_GAS_BALANCE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: gas-balances
path: "/A_GasNominationBalance('{{pipeline_contract}}')"
inputParameters:
- name: pipeline_contract
in: path
operations:
- name: get-gas-balance
method: GET
Retrieves real-time pipeline pressure readings from SAP.
naftiko: "0.5"
info:
label: "SAP Natural Gas Pipeline Pressure Lookup"
description: "Retrieves real-time pipeline pressure readings from SAP."
tags:
- upstream
- sap
capability:
exposes:
- type: mcp
namespace: pipeline-pressure
port: 8080
tools:
- name: get-pipeline-pressure
description: "Look up pipeline pressure by segment."
inputParameters:
- name: segment_id
in: body
type: string
description: "Pipeline segment ID."
call: "sap.get-pressure"
with:
segment_id: "{{segment_id}}"
outputParameters:
- name: pressure_psi
type: number
mapping: "$.d.Pressure"
- name: timestamp
type: string
mapping: "$.d.ReadingTime"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_PIPELINE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: readings
path: "/A_PipelinePressure(Segment='{{segment_id}}')"
inputParameters:
- name: segment_id
in: path
operations:
- name: get-pressure
method: GET
Retrieves pipeline inspection records from SAP.
naftiko: "0.5"
info:
label: "SAP Pipeline Integrity Inspection Tracker"
description: "Retrieves pipeline inspection records from SAP."
tags:
- upstream
- safety
- sap
- maintenance
capability:
exposes:
- type: mcp
namespace: pipeline-integrity
port: 8080
tools:
- name: get-inspection-status
description: "Look up inspection by functional location."
inputParameters:
- name: functional_location
in: body
type: string
description: "SAP functional location."
call: sap.get-inspection-records
with:
functional_location: "{{functional_location}}"
outputParameters:
- name: last_inspection
type: string
mapping: "$.d.LastInspectionDate"
- name: wall_thickness_mm
type: number
mapping: "$.d.WallThickness"
- name: corrosion_rate
type: number
mapping: "$.d.CorrosionRate"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspections
path: "/A_MeasurementDocument"
operations:
- name: get-inspection-records
method: GET
Retrieves weekly oil and gas production forecasts from SAP by asset region, returning projected barrel-of-oil-equivalent volumes and variance against plan.
naftiko: "0.5"
info:
label: "SAP Production Forecast Lookup"
description: "Retrieves weekly oil and gas production forecasts from SAP by asset region, returning projected barrel-of-oil-equivalent volumes and variance against plan."
tags:
- production
- energy
- sap
- forecasting
capability:
exposes:
- type: mcp
namespace: production-planning
port: 8080
tools:
- name: get-production-forecast
description: "Look up weekly production forecasts from SAP for a given asset region. Returns projected BOE volumes and plan variance."
inputParameters:
- name: region_code
in: body
type: string
description: "The asset region code (e.g., PERMIAN, ALASKA, NORWAY)."
- name: week_start
in: body
type: string
description: "Forecast week start date in YYYY-MM-DD format."
call: "sap.get-production-forecast"
with:
region: "{{region_code}}"
week: "{{week_start}}"
outputParameters:
- name: forecast_boe
type: number
mapping: "$.forecastBOE"
- name: plan_boe
type: number
mapping: "$.planBOE"
- name: variance_pct
type: number
mapping: "$.variancePercent"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: forecasts
path: "/production/forecasts"
inputParameters:
- name: region
in: query
- name: week
in: query
operations:
- name: get-production-forecast
method: GET
Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, total value, and line items for procurement review.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Looks up an SAP S/4HANA purchase order by number and returns structured header status, vendor name, total value, and line items for procurement review."
tags:
- procurement
- finance
- sap
- erp
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Given a PO number, retrieve the SAP S/4HANA purchase order status, vendor name, total value, and open line items. Use for procurement approvals and spend visibility."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number, e.g. 4500012345."
call: "sap-erp.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap-erp
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Checks catalyst inventory in SAP.
naftiko: "0.5"
info:
label: "SAP Refinery Catalyst Inventory Check"
description: "Checks catalyst inventory in SAP."
tags:
- refining
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: catalyst-inventory
port: 8080
tools:
- name: check-catalyst-inventory
description: "Look up catalyst stock."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number."
- name: plant_code
in: body
type: string
description: "SAP plant code."
call: sap.get-catalyst-stock
with:
material_number: "{{material_number}}"
plant_code: "{{plant_code}}"
outputParameters:
- name: available_qty
type: number
mapping: "$.d.AvailableStock"
- name: reorder_needed
type: boolean
mapping: "$.d.BelowReorderPoint"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/MM_INVENTORY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: stock
path: "/A_MaterialStock"
operations:
- name: get-catalyst-stock
method: GET
Pulls refinery throughput from SAP and pushes to Power BI.
naftiko: "0.5"
info:
label: "SAP Refinery Throughput Report"
description: "Pulls refinery throughput from SAP and pushes to Power BI."
tags:
- refining
- reporting
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: refinery-throughput
port: 8080
tools:
- name: generate-throughput-report
description: "Pull throughput data and push to Power BI."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code."
- name: date_from
in: body
type: string
description: "Start date."
- name: date_to
in: body
type: string
description: "End date."
steps:
- name: get-throughput
type: call
call: sap.get-throughput-data
with:
plant_code: "{{plant_code}}"
date_from: "{{date_from}}"
date_to: "{{date_to}}"
- name: push-to-powerbi
type: call
call: powerbi.push-rows
with:
dataset_id: "refinery-throughput-daily"
rows: "{{get-throughput.results}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: throughput
path: "/A_ProductionOutput"
operations:
- name: get-throughput-data
method: GET
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/refinery-throughput-daily/rows"
operations:
- name: push-rows
method: POST
Retrieves current throughput for a refinery processing unit from SAP.
naftiko: "0.5"
info:
label: "SAP Refinery Unit Throughput Lookup"
description: "Retrieves current throughput for a refinery processing unit from SAP."
tags:
- downstream
- sap
capability:
exposes:
- type: mcp
namespace: refinery-ops
port: 8080
tools:
- name: get-unit-throughput
description: "Look up refinery unit throughput."
inputParameters:
- name: unit_id
in: body
type: string
description: "SAP refinery unit ID."
call: "sap.get-throughput"
with:
unit_id: "{{unit_id}}"
outputParameters:
- name: throughput_bpd
type: number
mapping: "$.d.Throughput"
- name: utilization_pct
type: number
mapping: "$.d.UtilizationPercent"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PP_REFINERY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: units
path: "/A_RefiningUnit('{{unit_id}}')"
inputParameters:
- name: unit_id
in: path
operations:
- name: get-throughput
method: GET
Calculates monthly royalty payments by pulling production volumes from SAP, applying pricing from Bloomberg, computing net royalties in Snowflake, and posting payment entries back to SAP.
naftiko: "0.5"
info:
label: "SAP Royalty Payment Calculation Orchestrator"
description: "Calculates monthly royalty payments by pulling production volumes from SAP, applying pricing from Bloomberg, computing net royalties in Snowflake, and posting payment entries back to SAP."
tags:
- energy
- finance
- sap
- bloomberg
- snowflake
capability:
exposes:
- type: mcp
namespace: royalty-accounting
port: 8080
tools:
- name: calculate-royalty-payments
description: "Orchestrate monthly royalty calculation: pull volumes, get pricing, compute royalties, and post payments."
inputParameters:
- name: lease_group
in: body
type: string
description: "The lease group identifier."
- name: production_month
in: body
type: string
description: "Production month in YYYY-MM format."
steps:
- name: get-production-volumes
type: call
call: "sap.get-lease-production"
with:
lease_group: "{{lease_group}}"
month: "{{production_month}}"
- name: get-pricing
type: call
call: "bloomberg.get-monthly-avg-price"
with:
commodity: "WTI"
month: "{{production_month}}"
- name: compute-royalties
type: call
call: "snowflake.calculate-net-royalties"
with:
volumes: "{{get-production-volumes.data}}"
price: "{{get-pricing.avg_price}}"
- name: post-payments
type: call
call: "sap.post-royalty-payment"
with:
lease_group: "{{lease_group}}"
month: "{{production_month}}"
payments: "{{compute-royalties.payment_entries}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: production
path: "/production/leases/{{lease_group}}/volumes"
inputParameters:
- name: lease_group
in: path
operations:
- name: get-lease-production
method: GET
- name: payments
path: "/finance/royalty-payments"
operations:
- name: post-royalty-payment
method: POST
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: prices
path: "/commodities/monthly-average"
operations:
- name: get-monthly-avg-price
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: calculate-net-royalties
method: POST
Retrieves tank gauge readings from SAP.
naftiko: "0.5"
info:
label: "SAP Tank Farm Gauge Reading"
description: "Retrieves tank gauge readings from SAP."
tags:
- downstream
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: tank-gauge
port: 8080
tools:
- name: get-tank-reading
description: "Look up tank gauge by tank ID."
inputParameters:
- name: tank_id
in: body
type: string
description: "SAP equipment ID."
call: sap.get-gauge-reading
with:
tank_id: "{{tank_id}}"
outputParameters:
- name: level_feet
type: number
mapping: "$.d.CurrentLevel"
- name: available_capacity_bbl
type: number
mapping: "$.d.AvailableCapacity"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_MEASUREMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: measurements
path: "/A_MeasurementDocument(Equipment='{{tank_id}}')"
inputParameters:
- name: tank_id
in: path
operations:
- name: get-gauge-reading
method: GET
Retrieves crude oil truck transport logistics from SAP Transportation Management, returning shipment ID, carrier, pickup and delivery locations, and load volume in barrels.
naftiko: "0.5"
info:
label: "SAP Transportation Logistics Lookup"
description: "Retrieves crude oil truck transport logistics from SAP Transportation Management, returning shipment ID, carrier, pickup and delivery locations, and load volume in barrels."
tags:
- energy
- logistics
- sap
- transportation
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: get-transport-shipment
description: "Look up a crude transport shipment from SAP TM. Returns carrier, locations, and volume."
inputParameters:
- name: shipment_id
in: body
type: string
description: "The SAP shipment document number."
call: "sap.get-shipment"
with:
shipment_id: "{{shipment_id}}"
outputParameters:
- name: carrier
type: string
mapping: "$.carrier"
- name: pickup_location
type: string
mapping: "$.pickupLocation"
- name: delivery_location
type: string
mapping: "$.deliveryLocation"
- name: volume_barrels
type: number
mapping: "$.volumeBarrels"
- name: status
type: string
mapping: "$.transportStatus"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: shipments
path: "/transportation/shipments/{{shipment_id}}"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-shipment
method: GET
Retrieves vendor payment status from SAP Accounts Payable.
naftiko: "0.5"
info:
label: "SAP Vendor Payment Status Lookup"
description: "Retrieves vendor payment status from SAP Accounts Payable."
tags:
- procurement
- sap
- finance
capability:
exposes:
- type: mcp
namespace: vendor-payment
port: 8080
tools:
- name: get-payment-status
description: "Look up payment status by invoice number."
inputParameters:
- name: invoice_number
in: body
type: string
description: "SAP invoice number."
call: sap.get-payment
with:
invoice_number: "{{invoice_number}}"
outputParameters:
- name: payment_date
type: string
mapping: "$.d.ClearingDate"
- name: amount
type: number
mapping: "$.d.AmountInCompanyCodeCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/FI_AP_INVOICE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/A_SupplierInvoice('{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-payment
method: GET
Retrieves wastewater effluent quality from SAP EHS.
naftiko: "0.5"
info:
label: "SAP Wastewater Treatment Compliance Check"
description: "Retrieves wastewater effluent quality from SAP EHS."
tags:
- environmental
- refining
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: wastewater-compliance
port: 8080
tools:
- name: check-effluent-quality
description: "Look up effluent quality by outfall ID."
inputParameters:
- name: outfall_id
in: body
type: string
description: "SAP outfall ID."
call: sap.get-effluent-data
with:
outfall_id: "{{outfall_id}}"
outputParameters:
- name: ph
type: number
mapping: "$.d.PHValue"
- name: compliant
type: boolean
mapping: "$.d.WithinPermitLimits"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/EHS_MONITORING_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: effluent
path: "/A_EffluentMonitoring('{{outfall_id}}')"
inputParameters:
- name: outfall_id
in: path
operations:
- name: get-effluent-data
method: GET
Retrieves produced water disposal volumes from SAP for a given disposal well and date range, returning total barrels disposed, injection pressure, and permit compliance status.
naftiko: "0.5"
info:
label: "SAP Water Disposal Volume Lookup"
description: "Retrieves produced water disposal volumes from SAP for a given disposal well and date range, returning total barrels disposed, injection pressure, and permit compliance status."
tags:
- energy
- operations
- sap
- water-management
capability:
exposes:
- type: mcp
namespace: water-management
port: 8080
tools:
- name: get-water-disposal-volumes
description: "Look up produced water disposal data from SAP by disposal well. Returns volumes, pressure, and compliance status."
inputParameters:
- name: disposal_well_id
in: body
type: string
description: "The disposal well identifier."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "sap.get-disposal-volumes"
with:
well_id: "{{disposal_well_id}}"
from: "{{start_date}}"
to: "{{end_date}}"
outputParameters:
- name: total_barrels
type: number
mapping: "$.totalBarrels"
- name: avg_injection_pressure
type: number
mapping: "$.avgInjectionPressurePSI"
- name: permit_compliant
type: boolean
mapping: "$.withinPermitLimit"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: water-disposal
path: "/water-management/disposal/{{well_id}}/volumes"
inputParameters:
- name: well_id
in: path
operations:
- name: get-disposal-volumes
method: GET
Retrieves daily well production allocation from SAP.
naftiko: "0.5"
info:
label: "SAP Well Production Daily Allocation"
description: "Retrieves daily well production allocation from SAP."
tags:
- upstream
- production
- sap
capability:
exposes:
- type: mcp
namespace: well-allocation
port: 8080
tools:
- name: get-well-allocation
description: "Look up daily allocation by functional location and date."
inputParameters:
- name: functional_location
in: body
type: string
description: "SAP functional location."
- name: allocation_date
in: body
type: string
description: "Date in YYYY-MM-DD."
call: sap.get-allocation
with:
functional_location: "{{functional_location}}"
allocation_date: "{{allocation_date}}"
outputParameters:
- name: oil_bbl
type: number
mapping: "$.d.OilVolume"
- name: gas_mcf
type: number
mapping: "$.d.GasVolume"
- name: water_bbl
type: number
mapping: "$.d.WaterVolume"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_PRODUCTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: allocations
path: "/A_WellAllocation"
operations:
- name: get-allocation
method: GET
Retrieves wellhead pressure readings from SAP.
naftiko: "0.5"
info:
label: "SAP Wellhead Pressure Reading"
description: "Retrieves wellhead pressure readings from SAP."
tags:
- upstream
- production
- sap
capability:
exposes:
- type: mcp
namespace: wellhead-pressure
port: 8080
tools:
- name: get-wellhead-pressure
description: "Look up wellhead pressure by functional location."
inputParameters:
- name: functional_location
in: body
type: string
description: "SAP functional location."
call: sap.get-pressure-reading
with:
functional_location: "{{functional_location}}"
outputParameters:
- name: tubing_pressure_psi
type: number
mapping: "$.d.TubingPressure"
- name: casing_pressure_psi
type: number
mapping: "$.d.CasingPressure"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/OG_WELL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pressure-readings
path: "/A_WellMeasurement(FunctionalLocation='{{functional_location}}')"
inputParameters:
- name: functional_location
in: path
operations:
- name: get-pressure-reading
method: GET
Triggers seismic data processing workflows, monitors progress, and publishes results to Confluence.
naftiko: "0.5"
info:
label: "Seismic Data Processing Orchestrator"
description: "Triggers seismic data processing workflows, monitors progress, and publishes results to Confluence."
tags:
- upstream
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: seismic-data-processing
port: 8080
tools:
- name: seismic-data-processing
description: "Triggers seismic data processing workflows."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Seismic Data Processing"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: confluence
baseUri: "https://conocophillips.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning configuration item status, location, and assigned user.
naftiko: "0.5"
info:
label: "ServiceNow Asset Inventory Lookup"
description: "Retrieves IT asset details from ServiceNow CMDB by asset tag or serial number, returning configuration item status, location, and assigned user."
tags:
- it
- asset-management
- servicenow
capability:
exposes:
- type: mcp
namespace: it-assets
port: 8080
tools:
- name: get-asset-details
description: "Look up an IT asset in ServiceNow CMDB by asset tag. Returns CI status, location, and owner."
inputParameters:
- name: asset_tag
in: body
type: string
description: "The asset tag or serial number."
call: "servicenow.get-ci"
with:
asset_tag: "{{asset_tag}}"
outputParameters:
- name: ci_name
type: string
mapping: "$.result.name"
- name: status
type: string
mapping: "$.result.install_status"
- name: location
type: string
mapping: "$.result.location.display_value"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci?sysparm_query=asset_tag={{asset_tag}}"
inputParameters:
- name: asset_tag
in: query
operations:
- name: get-ci
method: GET
Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in Teams.
naftiko: "0.5"
info:
label: "ServiceNow Change Request for Planned Maintenance"
description: "Creates a ServiceNow standard change request for planned system maintenance, associates affected CIs, and notifies stakeholders in Teams."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: open-change-request
description: "Given a change description, affected CIs, and planned window, create a ServiceNow change request and notify stakeholders in Teams."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the planned change activity."
- name: affected_ci
in: body
type: string
description: "Comma-separated list of affected configuration item names."
- name: planned_start
in: body
type: string
description: "Planned change start in ISO 8601 format."
- name: planned_end
in: body
type: string
description: "Planned change end in ISO 8601 format."
steps:
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "{{change_description}}"
type: "standard"
start_date: "{{planned_start}}"
end_date: "{{planned_end}}"
cmdb_ci: "{{affected_ci}}"
- name: notify-stakeholders
type: call
call: "msteams.post-channel-message"
with:
channelId: "it-operations"
message: "Change {{create-change.number}} scheduled: {{change_description}} | Window: {{planned_start}} to {{planned_end}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/channels/{{channelId}}/messages"
inputParameters:
- name: channelId
in: path
operations:
- name: post-channel-message
method: POST
Retrieves environmental permit status from ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Environmental Permit Lookup"
description: "Retrieves environmental permit status from ServiceNow."
tags:
- compliance
- servicenow
capability:
exposes:
- type: mcp
namespace: permit-status
port: 8080
tools:
- name: get-permit-status
description: "Look up environmental permit status."
inputParameters:
- name: permit_id
in: body
type: string
description: "ServiceNow permit record ID."
call: "servicenow.get-permit"
with:
permit_id: "{{permit_id}}"
outputParameters:
- name: status
type: string
mapping: "$.result.state"
- name: expiry_date
type: string
mapping: "$.result.expiry_date"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: permits
path: "/table/u_env_permit/{{permit_id}}"
inputParameters:
- name: permit_id
in: path
operations:
- name: get-permit
method: GET
Tracks environmental permits approaching renewal via ServiceNow, Snowflake, and Teams.
naftiko: "0.5"
info:
label: "ServiceNow Environmental Permit Tracker"
description: "Tracks environmental permits approaching renewal via ServiceNow, Snowflake, and Teams."
tags:
- environmental
- compliance
- servicenow
- snowflake
- msteams
capability:
exposes:
- type: mcp
namespace: env-permit
port: 8080
tools:
- name: track-env-permits
description: "Find permits nearing expiry, log, and alert."
inputParameters:
- name: days_lookahead
in: body
type: number
description: "Days to look ahead."
steps:
- name: query-permits
type: call
call: servicenow.query-permits
with:
days_lookahead: "{{days_lookahead}}"
- name: log-report
type: call
call: snowflake.insert-permit-report
with:
permits: "{{query-permits.records}}"
- name: alert-team
type: call
call: msteams.send-message
with:
channel: "environmental-affairs"
text: "Permit alert | {{query-permits.total_count}} expiring within {{days_lookahead}} days"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: permits
path: "/table/u_environmental_permit"
operations:
- name: query-permits
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: permit-reports
path: "/statements"
operations:
- name: insert-permit-report
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: channel-messages
path: "/teams/environmental/channels/affairs/messages"
operations:
- name: send-message
method: POST
Initiates MOC workflow in ServiceNow with Teams notifications.
naftiko: "0.5"
info:
label: "ServiceNow Management of Change Workflow"
description: "Initiates MOC workflow in ServiceNow with Teams notifications."
tags:
- safety
- servicenow
- msteams
- compliance
capability:
exposes:
- type: mcp
namespace: moc-workflow
port: 8080
tools:
- name: initiate-moc
description: "Create MOC record and notify stakeholders."
inputParameters:
- name: change_description
in: body
type: string
description: "Change description."
- name: facility
in: body
type: string
description: "Facility."
- name: change_type
in: body
type: string
description: "Type."
steps:
- name: create-moc
type: call
call: servicenow.create-moc
with:
description: "{{change_description}}"
facility: "{{facility}}"
- name: notify-reviewers
type: call
call: msteams.send-message
with:
channel: "process-safety"
text: "MOC | {{change_type}} | {{facility}} | {{create-moc.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: moc
path: "/table/u_management_of_change"
operations:
- name: create-moc
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: channel-messages
path: "/teams/safety/channels/process/messages"
operations:
- name: send-message
method: POST
Creates investigation in ServiceNow, assigns Workday team, logs in Snowflake, alerts via Teams.
naftiko: "0.5"
info:
label: "ServiceNow Process Safety Event Investigation"
description: "Creates investigation in ServiceNow, assigns Workday team, logs in Snowflake, alerts via Teams."
tags:
- safety
- servicenow
- workday
- snowflake
- msteams
capability:
exposes:
- type: mcp
namespace: pse-investigation
port: 8080
tools:
- name: initiate-pse-investigation
description: "Create investigation, assign team, log, and alert."
inputParameters:
- name: event_description
in: body
type: string
description: "Event description."
- name: facility
in: body
type: string
description: "Facility name."
- name: severity
in: body
type: string
description: "Severity tier."
steps:
- name: create-investigation
type: call
call: servicenow.create-investigation
with:
description: "{{event_description}}"
facility: "{{facility}}"
- name: assign-team
type: call
call: workday.get-investigation-team
with:
facility: "{{facility}}"
- name: log-event
type: call
call: snowflake.insert-pse-record
with:
investigation_id: "{{create-investigation.sys_id}}"
- name: alert-leadership
type: call
call: msteams.send-message
with:
channel: "hse-leadership"
text: "PSE | {{severity}} | {{facility}} | {{create-investigation.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: investigations
path: "/table/u_pse_investigation"
operations:
- name: create-investigation
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: teams
path: "/workers"
operations:
- name: get-investigation-team
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: pse-records
path: "/statements"
operations:
- name: insert-pse-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: channel-messages
path: "/teams/hse/channels/leadership/messages"
operations:
- name: send-message
method: POST
Queries CCS data from Snowflake and pushes to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Carbon Capture Project Dashboard"
description: "Queries CCS data from Snowflake and pushes to Power BI."
tags:
- environmental
- upstream
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: carbon-capture
port: 8080
tools:
- name: generate-ccs-dashboard
description: "Query CCS data and push to Power BI."
inputParameters:
- name: project_id
in: body
type: string
description: "CCS project ID."
- name: date_from
in: body
type: string
description: "Start date."
steps:
- name: query-ccs-data
type: call
call: snowflake.query-ccs-metrics
with:
project_id: "{{project_id}}"
date_from: "{{date_from}}"
- name: push-dashboard
type: call
call: powerbi.push-rows
with:
dataset_id: "carbon-capture-monitoring"
rows: "{{query-ccs-data.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: ccs-metrics
path: "/statements"
operations:
- name: query-ccs-metrics
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/carbon-capture-monitoring/rows"
operations:
- name: push-rows
method: POST
Queries carbon emission rates per asset from Snowflake.
naftiko: "0.5"
info:
label: "Snowflake Carbon Emission Rate Lookup"
description: "Queries carbon emission rates per asset from Snowflake."
tags:
- sustainability
- snowflake
capability:
exposes:
- type: mcp
namespace: carbon-data
port: 8080
tools:
- name: get-emission-rate
description: "Look up carbon emission rate by asset."
inputParameters:
- name: asset_id
in: body
type: string
description: "Asset identifier."
call: "snowflake.run-query"
with:
asset_id: "{{asset_id}}"
outputParameters:
- name: co2_tons_per_day
type: number
mapping: "$.data[0][0]"
- name: intensity
type: number
mapping: "$.data[0][1]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
Checks the execution status of Snowflake data pipeline tasks and creates ServiceNow incidents for jobs that fail repeatedly.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Monitor"
description: "Checks the execution status of Snowflake data pipeline tasks and creates ServiceNow incidents for jobs that fail repeatedly."
tags:
- data
- analytics
- snowflake
- servicenow
- monitoring
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: "Given a Snowflake task name and failure threshold, check task execution history and open a ServiceNow incident if failures exceed the threshold."
inputParameters:
- name: task_name
in: body
type: string
description: "The Snowflake task name to check."
- name: failure_threshold
in: body
type: integer
description: "Number of consecutive failures before opening an incident."
steps:
- name: get-task-history
type: call
call: "snowflake.get-task-history"
with:
taskName: "{{task_name}}"
- name: open-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Snowflake task failure: {{task_name}}"
category: "data_pipeline"
description: "Task {{task_name}} exceeded failure threshold. Last error: {{get-task-history.error_message}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: task-history
path: "/databases/tasks/{{taskName}}/executions"
inputParameters:
- name: taskName
in: path
operations:
- name: get-task-history
method: GET
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Queries downstream margins from Snowflake and pushes to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Downstream Margin Analysis"
description: "Queries downstream margins from Snowflake and pushes to Power BI."
tags:
- downstream
- trading
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: margin-analysis
port: 8080
tools:
- name: analyze-downstream-margins
description: "Query margins and push to Power BI."
inputParameters:
- name: refinery_code
in: body
type: string
description: "Refinery code."
- name: date_from
in: body
type: string
description: "Start date."
steps:
- name: query-margins
type: call
call: snowflake.query-product-margins
with:
refinery_code: "{{refinery_code}}"
date_from: "{{date_from}}"
- name: push-results
type: call
call: powerbi.push-rows
with:
dataset_id: "downstream-margins"
rows: "{{query-margins.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: margins
path: "/statements"
operations:
- name: query-product-margins
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/downstream-margins/rows"
operations:
- name: push-rows
method: POST
Queries drilling costs from Snowflake and pushes to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Drilling Cost Per Foot Analysis"
description: "Queries drilling costs from Snowflake and pushes to Power BI."
tags:
- upstream
- drilling
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: drilling-cost
port: 8080
tools:
- name: analyze-drilling-cost
description: "Query drilling costs and push to Power BI."
inputParameters:
- name: basin
in: body
type: string
description: "Basin name (e.g., Eagle Ford, Bakken, Alaska North Slope)."
- name: date_from
in: body
type: string
description: "Start date."
steps:
- name: query-costs
type: call
call: snowflake.query-drilling-costs
with:
basin: "{{basin}}"
date_from: "{{date_from}}"
- name: push-to-dashboard
type: call
call: powerbi.push-rows
with:
dataset_id: "drilling-cost-per-foot"
rows: "{{query-costs.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: drilling-costs
path: "/statements"
operations:
- name: query-drilling-costs
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/drilling-cost-per-foot/rows"
operations:
- name: push-rows
method: POST
Queries Snowflake for GHG emissions and pushes to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Emissions Monitoring Report"
description: "Queries Snowflake for GHG emissions and pushes to Power BI."
tags:
- environmental
- reporting
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: emissions-report
port: 8080
tools:
- name: generate-emissions-report
description: "Query emissions and push to Power BI."
inputParameters:
- name: period
in: body
type: string
description: "Reporting period."
- name: facility_type
in: body
type: string
description: "Facility type."
steps:
- name: query-emissions
type: call
call: snowflake.query-emissions
with:
period: "{{period}}"
facility_type: "{{facility_type}}"
- name: push-to-dashboard
type: call
call: powerbi.push-rows
with:
dataset_id: "ghg-emissions-quarterly"
rows: "{{query-emissions.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: emissions
path: "/statements"
operations:
- name: query-emissions
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/ghg-emissions-quarterly/rows"
operations:
- name: push-rows
method: POST
Validates freshness and completeness of energy production data in Snowflake and raises a ServiceNow incident if data quality thresholds are breached.
naftiko: "0.5"
info:
label: "Snowflake Energy Production Data Quality Check"
description: "Validates freshness and completeness of energy production data in Snowflake and raises a ServiceNow incident if data quality thresholds are breached."
tags:
- data
- analytics
- snowflake
- servicenow
- data-quality
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: check-production-data-quality
description: "Given a Snowflake production table and freshness threshold, validate the table's last update time and row count, and open a ServiceNow ticket if quality checks fail."
inputParameters:
- name: table_name
in: body
type: string
description: "Fully qualified Snowflake table name in DATABASE.SCHEMA.TABLE format."
- name: freshness_hours
in: body
type: integer
description: "Maximum acceptable data age in hours."
steps:
- name: get-table-metadata
type: call
call: "snowflake.get-table-info"
with:
tableName: "{{table_name}}"
- name: create-dq-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Data quality failure: {{table_name}}"
category: "data_pipeline"
description: "Table {{table_name}} failed freshness check. Last updated: {{get-table-metadata.last_altered}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: tables
path: "/databases/tables"
inputParameters:
- name: tableName
in: query
operations:
- name: get-table-info
method: GET
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Queries trading positions from Snowflake and pushes to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Energy Trading Position Report"
description: "Queries trading positions from Snowflake and pushes to Power BI."
tags:
- trading
- risk-management
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: trading-positions
port: 8080
tools:
- name: generate-position-report
description: "Query positions and push to Power BI."
inputParameters:
- name: desk
in: body
type: string
description: "Trading desk."
- name: valuation_date
in: body
type: string
description: "Valuation date."
steps:
- name: query-positions
type: call
call: snowflake.query-trading-positions
with:
desk: "{{desk}}"
valuation_date: "{{valuation_date}}"
- name: push-to-dashboard
type: call
call: powerbi.push-rows
with:
dataset_id: "trading-positions-daily"
rows: "{{query-positions.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: positions
path: "/statements"
operations:
- name: query-trading-positions
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/trading-positions-daily/rows"
operations:
- name: push-rows
method: POST
Queries Snowflake for daily field operations KPIs by asset area, returning production uptime, wells online count, safety incident count, and environmental compliance score.
naftiko: "0.5"
info:
label: "Snowflake Field Operations KPI Lookup"
description: "Queries Snowflake for daily field operations KPIs by asset area, returning production uptime, wells online count, safety incident count, and environmental compliance score."
tags:
- energy
- operations
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: field-ops
port: 8080
tools:
- name: get-field-ops-kpis
description: "Look up daily field operations KPIs from Snowflake by asset area. Returns uptime, wells online, safety, and compliance metrics."
inputParameters:
- name: asset_area
in: body
type: string
description: "The operating asset area code."
- name: date
in: body
type: string
description: "Date in YYYY-MM-DD format."
call: "snowflake.query-field-kpis"
with:
area: "{{asset_area}}"
date: "{{date}}"
outputParameters:
- name: production_uptime_pct
type: number
mapping: "$.data[0].production_uptime_pct"
- name: wells_online
type: number
mapping: "$.data[0].wells_online"
- name: safety_incidents
type: number
mapping: "$.data[0].safety_incident_count"
- name: environmental_score
type: number
mapping: "$.data[0].environmental_compliance_score"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-field-kpis
method: POST
Queries Snowflake for LNG cargo tracking data, returning vessel name, current position, estimated arrival, and cargo volume in million cubic feet.
naftiko: "0.5"
info:
label: "Snowflake LNG Cargo Tracking Lookup"
description: "Queries Snowflake for LNG cargo tracking data, returning vessel name, current position, estimated arrival, and cargo volume in million cubic feet."
tags:
- energy
- logistics
- snowflake
- lng
capability:
exposes:
- type: mcp
namespace: lng-operations
port: 8080
tools:
- name: get-lng-cargo-status
description: "Look up LNG cargo tracking from Snowflake by cargo ID. Returns vessel details, position, and ETA."
inputParameters:
- name: cargo_id
in: body
type: string
description: "The LNG cargo shipment identifier."
call: "snowflake.query-lng-cargo"
with:
cargo_id: "{{cargo_id}}"
outputParameters:
- name: vessel_name
type: string
mapping: "$.data[0].vessel_name"
- name: current_lat
type: number
mapping: "$.data[0].latitude"
- name: current_lon
type: number
mapping: "$.data[0].longitude"
- name: eta
type: string
mapping: "$.data[0].estimated_arrival"
- name: volume_mmcf
type: number
mapping: "$.data[0].volume_mmcf"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-lng-cargo
method: POST
Queries LDAR results from Snowflake and creates SAP repair orders.
naftiko: "0.5"
info:
label: "Snowflake Methane Leak Detection Report"
description: "Queries LDAR results from Snowflake and creates SAP repair orders."
tags:
- environmental
- upstream
- snowflake
- sap
- compliance
capability:
exposes:
- type: mcp
namespace: methane-ldar
port: 8080
tools:
- name: process-ldar-results
description: "Query LDAR and create repair orders."
inputParameters:
- name: facility_id
in: body
type: string
description: "Facility ID."
- name: survey_date
in: body
type: string
description: "Survey date."
steps:
- name: query-leaks
type: call
call: snowflake.query-ldar-results
with:
facility_id: "{{facility_id}}"
survey_date: "{{survey_date}}"
- name: create-repair-orders
type: call
call: sap.create-pm-work-orders
with:
leaks: "{{query-leaks.active_leaks}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: ldar
path: "/statements"
operations:
- name: query-ldar-results
method: POST
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap/PM_ORDER_CREATE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: work-orders
path: "/A_MaintenanceOrder"
operations:
- name: create-pm-work-orders
method: POST
Detects pipeline flow anomalies via Snowflake and creates ServiceNow incidents.
naftiko: "0.5"
info:
label: "Snowflake Pipeline Flow Rate Anomaly Detector"
description: "Detects pipeline flow anomalies via Snowflake and creates ServiceNow incidents."
tags:
- upstream
- pipeline
- snowflake
- servicenow
- safety
capability:
exposes:
- type: mcp
namespace: pipeline-anomaly
port: 8080
tools:
- name: detect-flow-anomaly
description: "Query flow rates and raise incident if anomalous."
inputParameters:
- name: pipeline_segment_id
in: body
type: string
description: "Pipeline segment ID."
- name: hours_lookback
in: body
type: number
description: "Hours to look back."
steps:
- name: query-flow-data
type: call
call: snowflake.query-flow-rates
with:
pipeline_segment_id: "{{pipeline_segment_id}}"
hours_lookback: "{{hours_lookback}}"
- name: raise-incident
type: call
call: servicenow.create-incident
with:
short_description: "Pipeline flow anomaly on {{pipeline_segment_id}}"
urgency: "2"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: flow-rates
path: "/statements"
operations:
- name: query-flow-rates
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Queries daily production volumes from Snowflake by asset.
naftiko: "0.5"
info:
label: "Snowflake Production Volume Lookup"
description: "Queries daily production volumes from Snowflake by asset."
tags:
- production
- snowflake
capability:
exposes:
- type: mcp
namespace: production-data
port: 8080
tools:
- name: get-production-volume
description: "Look up daily production volume by asset."
inputParameters:
- name: asset_id
in: body
type: string
description: "Production asset identifier."
call: "snowflake.run-query"
with:
asset_id: "{{asset_id}}"
outputParameters:
- name: oil_bbl
type: number
mapping: "$.data[0][0]"
- name: gas_mcf
type: number
mapping: "$.data[0][1]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
Queries well production from Snowflake and pushes EUR estimates to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Reservoir Decline Curve Analysis"
description: "Queries well production from Snowflake and pushes EUR estimates to Power BI."
tags:
- upstream
- production
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: decline-curve
port: 8080
tools:
- name: run-decline-analysis
description: "Query production and push EUR to Power BI."
inputParameters:
- name: well_id
in: body
type: string
description: "Well ID."
- name: months_history
in: body
type: number
description: "Months of history."
steps:
- name: query-production
type: call
call: snowflake.query-well-production
with:
well_id: "{{well_id}}"
months_history: "{{months_history}}"
- name: push-forecasts
type: call
call: powerbi.push-rows
with:
dataset_id: "decline-curve-eur"
rows: "{{query-production.results}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: production
path: "/statements"
operations:
- name: query-well-production
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/decline-curve-eur/rows"
operations:
- name: push-rows
method: POST
Queries Snowflake for well completion cost data by well API number, returning total completion cost, cost per lateral foot, and days on well.
naftiko: "0.5"
info:
label: "Snowflake Well Completion Cost Lookup"
description: "Queries Snowflake for well completion cost data by well API number, returning total completion cost, cost per lateral foot, and days on well."
tags:
- energy
- finance
- snowflake
- drilling
capability:
exposes:
- type: mcp
namespace: well-economics
port: 8080
tools:
- name: get-completion-cost
description: "Look up well completion costs in Snowflake by API number. Returns total cost, cost per foot, and days on well."
inputParameters:
- name: api_number
in: body
type: string
description: "The well API number."
call: "snowflake.query-completion-cost"
with:
api_number: "{{api_number}}"
outputParameters:
- name: total_cost
type: number
mapping: "$.data[0].total_completion_cost"
- name: cost_per_foot
type: number
mapping: "$.data[0].cost_per_lateral_foot"
- name: days_on_well
type: number
mapping: "$.data[0].days_on_well"
consumes:
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-completion-cost
method: POST
Triggers a Terraform Cloud workspace run to provision or update oil and gas well monitoring infrastructure, and creates a ServiceNow change record.
naftiko: "0.5"
info:
label: "Terraform Cloud Well Infrastructure Provisioning"
description: "Triggers a Terraform Cloud workspace run to provision or update oil and gas well monitoring infrastructure, and creates a ServiceNow change record."
tags:
- cloud
- infrastructure
- terraform
- servicenow
- change-management
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: "Given a Terraform Cloud workspace ID and change description, trigger a plan and apply run and create a ServiceNow change record."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Terraform Cloud workspace ID."
- name: change_description
in: body
type: string
description: "Description of the infrastructure change."
steps:
- name: create-run
type: call
call: "terraform.create-run"
with:
workspaceId: "{{workspace_id}}"
message: "{{change_description}}"
- name: create-change-record
type: call
call: "servicenow.create-change"
with:
short_description: "Terraform infra change: {{change_description}}"
description: "Workspace: {{workspace_id}}\nRun ID: {{create-run.runId}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: create-run
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
Checks Terraform Cloud workspaces for configuration drift, returning workspace name, last run status, and resource count with drift detected.
naftiko: "0.5"
info:
label: "Terraform Cloud Workspace Drift Detector"
description: "Checks Terraform Cloud workspaces for configuration drift, returning workspace name, last run status, and resource count with drift detected."
tags:
- devops
- infrastructure
- terraform
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: check-workspace-drift
description: "Check Terraform Cloud workspaces for drift. Returns workspaces with detected drift and resource counts."
inputParameters:
- name: organization
in: body
type: string
description: "The Terraform Cloud organization name."
call: "terraform.list-workspaces"
with:
organization: "{{organization}}"
outputParameters:
- name: workspaces
type: array
mapping: "$.data"
items:
- name: workspace_name
type: string
mapping: "$.attributes.name"
- name: last_run_status
type: string
mapping: "$.attributes.latest-run.status"
- name: resource_count
type: number
mapping: "$.attributes.resource-count"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/{{organization}}/workspaces"
inputParameters:
- name: organization
in: path
operations:
- name: list-workspaces
method: GET
Coordinates a refinery turnaround by pulling the maintenance scope from SAP, scheduling contractor crews in Workday, creating work orders in ServiceNow, and publishing the schedule to Microsoft Teams.
naftiko: "0.5"
info:
label: "Turnaround Planning Orchestrator"
description: "Coordinates a refinery turnaround by pulling the maintenance scope from SAP, scheduling contractor crews in Workday, creating work orders in ServiceNow, and publishing the schedule to Microsoft Teams."
tags:
- operations
- maintenance
- sap
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: turnaround-mgmt
port: 8080
tools:
- name: plan-turnaround
description: "Orchestrate turnaround planning: pull scope, schedule crews, create work orders, and publish the timeline."
inputParameters:
- name: turnaround_id
in: body
type: string
description: "The turnaround project identifier."
- name: facility_code
in: body
type: string
description: "The refinery or facility code."
steps:
- name: get-scope
type: call
call: "sap.get-turnaround-scope"
with:
turnaround_id: "{{turnaround_id}}"
facility: "{{facility_code}}"
- name: schedule-crews
type: call
call: "workday.schedule-contractor-crews"
with:
project_id: "{{turnaround_id}}"
headcount: "{{get-scope.required_headcount}}"
start_date: "{{get-scope.start_date}}"
- name: create-work-orders
type: call
call: "servicenow.create-work-orders"
with:
project_id: "{{turnaround_id}}"
tasks: "{{get-scope.task_list}}"
- name: publish-schedule
type: call
call: "msteams.post-message"
with:
channel: "turnaround-{{facility_code}}"
message: "Turnaround {{turnaround_id}} planned: {{get-scope.task_count}} tasks, {{schedule-crews.crew_count}} crews, start {{get-scope.start_date}}."
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: turnarounds
path: "/plant-maintenance/turnarounds/{{turnaround_id}}"
inputParameters:
- name: turnaround_id
in: path
operations:
- name: get-turnaround-scope
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: scheduling
path: "/conocophillips/staffing/schedules"
operations:
- name: schedule-contractor-crews
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: work-orders
path: "/table/wm_order"
operations:
- name: create-work-orders
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Reconciles SAP vendor payments against contracts, identifies discrepancies, and routes exceptions to ServiceNow.
naftiko: "0.5"
info:
label: "Vendor Payment Reconciliation Orchestrator"
description: "Reconciles SAP vendor payments against contracts, identifies discrepancies, and routes exceptions to ServiceNow."
tags:
- finance
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-payment-reconcilia
port: 8080
tools:
- name: vendor-payment-reconciliation
description: "Reconciles SAP vendor payments against contracts."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Vendor Payment Reconciliation for {{entity_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
Pulls vendor spend data from SAP Ariba, retrieves quality and delivery metrics from Snowflake, generates a scorecard in Power BI, and emails the procurement team with the results.
naftiko: "0.5"
info:
label: "Vendor Performance Review Orchestrator"
description: "Pulls vendor spend data from SAP Ariba, retrieves quality and delivery metrics from Snowflake, generates a scorecard in Power BI, and emails the procurement team with the results."
tags:
- procurement
- finance
- sap
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: review-vendor-performance
description: "Orchestrate a vendor performance review: pull spend, compute KPIs, refresh scorecard, and notify procurement."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The SAP vendor ID."
- name: review_period
in: body
type: string
description: "Review period in YYYY-Q format."
steps:
- name: get-vendor-spend
type: call
call: "sap.get-vendor-spend"
with:
vendor_id: "{{vendor_id}}"
period: "{{review_period}}"
- name: get-quality-metrics
type: call
call: "snowflake.query-vendor-quality"
with:
vendor_id: "{{vendor_id}}"
period: "{{review_period}}"
- name: refresh-scorecard
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "vendor-scorecards"
- name: send-report
type: call
call: "msteams.post-message"
with:
channel: "procurement-reviews"
message: "Vendor {{get-vendor-spend.vendor_name}} review for {{review_period}}: Spend ${{get-vendor-spend.total_spend}}, On-time delivery {{get-quality-metrics.on_time_pct}}%, Quality score {{get-quality-metrics.quality_score}}/100."
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: vendors
path: "/procurement/vendors/{{vendor_id}}/spend"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-spend
method: GET
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-vendor-quality
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Monitors water usage from SAP, validates environmental compliance in Snowflake, and creates ServiceNow tickets.
naftiko: "0.5"
info:
label: "Water Management Compliance Orchestrator"
description: "Monitors water usage from SAP, validates environmental compliance in Snowflake, and creates ServiceNow tickets."
tags:
- compliance
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: water-management-complian
port: 8080
tools:
- name: water-management-compliance
description: "Monitors water usage from SAP."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: query-data
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Water Management Compliance for {{entity_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://conocophillips.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- name: run-analysis
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
Orchestrates well completion handover by updating SAP asset records, creating ServiceNow operational tickets, and notifying production teams via Slack.
naftiko: "0.5"
info:
label: "Well Completion Handover Orchestrator"
description: "Orchestrates well completion handover by updating SAP asset records, creating ServiceNow operational tickets, and notifying production teams via Slack."
tags:
- upstream
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: well-completion-handover
port: 8080
tools:
- name: well-completion-handover
description: "Orchestrates well completion handover by updating SAP asset records."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Well Completion Handover for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "Well Completion Handover processed"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Processes well integrity test results from SAP, validates against standards, and creates ServiceNow tickets for failures.
naftiko: "0.5"
info:
label: "Well Integrity Test Orchestrator"
description: "Processes well integrity test results from SAP, validates against standards, and creates ServiceNow tickets for failures."
tags:
- upstream
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: well-integrity-test
port: 8080
tools:
- name: well-integrity-test
description: "Processes well integrity test results from SAP."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: get-sap-data
type: call
call: "sap.get-data"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Well Integrity Test for {{entity_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-s4.sap.com/sap/opu/odata/sap"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: data
path: "/A_Data"
operations:
- name: get-data
method: GET
- name: create-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
When a new drilling permit is requested, validates well location data in SAP, checks environmental compliance in ServiceNow, generates the permit package in SharePoint, and notifies the regulatory affairs team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Well Permit Approval Orchestrator"
description: "When a new drilling permit is requested, validates well location data in SAP, checks environmental compliance in ServiceNow, generates the permit package in SharePoint, and notifies the regulatory affairs team via Microsoft Teams."
tags:
- energy
- compliance
- sap
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regulatory-affairs
port: 8080
tools:
- name: process-well-permit
description: "Orchestrate a drilling permit application: validate location, check compliance, generate permit package, and notify the team."
inputParameters:
- name: well_name
in: body
type: string
description: "The proposed well name."
- name: api_number
in: body
type: string
description: "The proposed API well number."
- name: location_lat
in: body
type: number
description: "Well latitude coordinate."
- name: location_lon
in: body
type: number
description: "Well longitude coordinate."
steps:
- name: validate-location
type: call
call: "sap.validate-well-location"
with:
api_number: "{{api_number}}"
lat: "{{location_lat}}"
lon: "{{location_lon}}"
- name: check-environmental
type: call
call: "servicenow.check-environmental-compliance"
with:
well_name: "{{well_name}}"
lat: "{{location_lat}}"
lon: "{{location_lon}}"
- name: generate-permit-package
type: call
call: "sharepoint.create-document"
with:
library: "DrillPermits"
filename: "permit-{{api_number}}.docx"
template: "drilling_permit"
data:
well_name: "{{well_name}}"
compliance_status: "{{check-environmental.status}}"
- name: notify-team
type: call
call: "msteams.post-message"
with:
channel: "regulatory-affairs"
message: "Drilling permit package ready for {{well_name}} ({{api_number}}). Compliance: {{check-environmental.status}}. Review: {{generate-permit-package.url}}"
consumes:
- type: http
namespace: sap
baseUri: "https://conocophillips-sap.s4hana.cloud/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: well-locations
path: "/wells/validate-location"
operations:
- name: validate-well-location
method: POST
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: environmental
path: "/table/u_environmental_compliance"
operations:
- name: check-environmental-compliance
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites/conocophillips.sharepoint.com"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/drive/items"
operations:
- name: create-document
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/channels/messages"
operations:
- name: post-message
method: POST
Returns benefits enrollment status for an employee from Workday, including medical plan, dental plan, and 401k contribution percentage.
naftiko: "0.5"
info:
label: "Workday Benefits Enrollment Status"
description: "Returns benefits enrollment status for an employee from Workday, including medical plan, dental plan, and 401k contribution percentage."
tags:
- hr
- benefits
- workday
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: get-benefits-status
description: "Look up benefits enrollment for an employee by worker ID. Returns medical, dental, and 401k enrollment details."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-benefits"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: medical_plan
type: string
mapping: "$.medicalPlan"
- name: dental_plan
type: string
mapping: "$.dentalPlan"
- name: retirement_contribution_pct
type: number
mapping: "$.retirementContributionPercent"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: benefits
path: "/conocophillips/workers/{{worker_id}}/benefits"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-benefits
method: GET
Verifies contractor safety certifications and site access in Workday with Teams notification.
naftiko: "0.5"
info:
label: "Workday Contractor Compliance Verification"
description: "Verifies contractor safety certifications and site access in Workday with Teams notification."
tags:
- safety
- compliance
- workday
- msteams
- upstream
capability:
exposes:
- type: mcp
namespace: contractor-compliance
port: 8080
tools:
- name: verify-contractor
description: "Check contractor certs and access, notify supervisor."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
- name: site_code
in: body
type: string
description: "Site code."
steps:
- name: check-certifications
type: call
call: workday.get-worker-certifications
with:
worker_id: "{{worker_id}}"
- name: notify-supervisor
type: call
call: msteams.send-message
with:
channel: "field-supervisors"
text: "Contractor | {{worker_id}} | Site: {{site_code}} | Certs: {{check-certifications.all_valid}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: certifications
path: "/workers/certifications"
operations:
- name: get-worker-certifications
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: channel-messages
path: "/teams/field/channels/supervisors/messages"
operations:
- name: send-message
method: POST
When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and resolves open ServiceNow tickets.
naftiko: "0.5"
info:
label: "Workday Employee Offboarding"
description: "When a Workday termination is processed, deactivates Okta access, disables the Microsoft 365 account, and resolves open ServiceNow tickets."
tags:
- hr
- offboarding
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, deactivate Okta, disable the Microsoft Graph account, and close open ServiceNow tickets."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the departing employee."
- name: termination_date
in: body
type: string
description: "Termination date in YYYY-MM-DD format."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: deactivate-okta
type: call
call: "okta.deactivate-user"
with:
login: "{{get-worker.work_email}}"
- name: disable-m365
type: call
call: "msgraph.update-user"
with:
userPrincipalName: "{{get-worker.work_email}}"
accountEnabled: "false"
- name: close-tickets
type: call
call: "servicenow.close-user-tickets"
with:
caller_id: "{{get-worker.work_email}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://conocophillips.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{{login}}/lifecycle/deactivate"
inputParameters:
- name: login
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{userPrincipalName}}"
inputParameters:
- name: userPrincipalName
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://conocophillips.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: close-user-tickets
method: PATCH
Retrieves field worker schedule from Workday.
naftiko: "0.5"
info:
label: "Workday Field Worker Schedule Lookup"
description: "Retrieves field worker schedule from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: field-scheduling
port: 8080
tools:
- name: get-field-schedule
description: "Look up field worker schedule."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
call: "workday.get-schedule"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: next_shift
type: string
mapping: "$.schedule.nextShift"
- name: rotation
type: string
mapping: "$.schedule.rotation"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers/{{worker_id}}/schedule"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-schedule
method: GET
Returns current active headcount by department and cost center from Workday for workforce planning and finance reporting.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot"
description: "Returns current active headcount by department and cost center from Workday for workforce planning and finance reporting."
tags:
- hr
- finance
- workday
- headcount
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns current active employee headcount grouped by department and cost center from Workday. Use for workforce planning, headcount budgeting, and finance period close."
call: "workday.get-headcount"
outputParameters:
- name: employees
type: array
mapping: "$.data"
items:
- name: employee_id
type: string
mapping: "$.id"
- name: full_name
type: string
mapping: "$.name"
- name: department
type: string
mapping: "$.department"
- name: cost_center
type: string
mapping: "$.costCenter"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers"
operations:
- name: get-headcount
method: GET
Retrieves mandatory training completion rates from Workday Learning for a given business unit, returning total assigned, completed, overdue, and compliance percentage.
naftiko: "0.5"
info:
label: "Workday Learning Compliance Dashboard"
description: "Retrieves mandatory training completion rates from Workday Learning for a given business unit, returning total assigned, completed, overdue, and compliance percentage."
tags:
- hr
- compliance
- workday
- training
capability:
exposes:
- type: mcp
namespace: hr-learning
port: 8080
tools:
- name: get-training-compliance
description: "Look up mandatory training compliance from Workday Learning by business unit. Returns completion rates and overdue counts."
inputParameters:
- name: business_unit
in: body
type: string
description: "The Workday business unit code."
call: "workday.get-learning-compliance"
with:
unit: "{{business_unit}}"
outputParameters:
- name: total_assigned
type: number
mapping: "$.totalAssigned"
- name: completed
type: number
mapping: "$.completed"
- name: overdue
type: number
mapping: "$.overdue"
- name: compliance_pct
type: number
mapping: "$.compliancePercent"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning
path: "/conocophillips/learning/compliance"
operations:
- name: get-learning-compliance
method: GET
Pulls current payroll totals from Workday by department and pay grade for finance period close and compensation analysis.
naftiko: "0.5"
info:
label: "Workday Payroll Results Export"
description: "Pulls current payroll totals from Workday by department and pay grade for finance period close and compensation analysis."
tags:
- hr
- finance
- workday
- payroll
- reporting
capability:
exposes:
- type: mcp
namespace: payroll-reporting
port: 8080
tools:
- name: get-payroll-results
description: "Returns current period payroll totals grouped by department from Workday. Use for finance period close, compensation analysis, and headcount cost reporting."
call: "workday.get-payroll-results"
outputParameters:
- name: total_gross_pay
type: number
mapping: "$.totals.grossPay"
- name: total_employees
type: number
mapping: "$.totals.headcount"
- name: pay_period
type: string
mapping: "$.payPeriod"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payroll-results
path: "/conocophillips/payrollResults"
operations:
- name: get-payroll-results
method: GET
Returns a candidate stage summary for an open Workday job requisition for use by the recruiting team.
naftiko: "0.5"
info:
label: "Workday Recruiting Pipeline Summary"
description: "Returns a candidate stage summary for an open Workday job requisition for use by the recruiting team."
tags:
- hr
- recruiting
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: get-requisition-pipeline
description: "Given a Workday job requisition ID, return stage-by-stage candidate counts and the job title. Use when tracking open position pipeline health."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
call: "workday.get-job-requisition"
with:
requisitionId: "{{requisition_id}}"
outputParameters:
- name: job_title
type: string
mapping: "$.jobRequisition.jobTitle"
- name: total_candidates
type: number
mapping: "$.jobRequisition.candidateCount"
- name: open_since
type: string
mapping: "$.jobRequisition.openDate"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/conocophillips/jobRequisitions/{{requisitionId}}"
inputParameters:
- name: requisitionId
in: path
operations:
- name: get-job-requisition
method: GET
When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access profile.
naftiko: "0.5"
info:
label: "Workday Role Change Access Provisioning"
description: "When an employee's role changes in Workday, updates their Okta group memberships to reflect the new role's access profile."
tags:
- hr
- identity
- workday
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: hr-identity
port: 8080
tools:
- name: sync-role-access
description: "Given a Workday employee ID and new job profile, update Okta group memberships to match the new role's access entitlements."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
- name: new_job_profile
in: body
type: string
description: "The new Workday job profile name."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: assign-okta-group
type: call
call: "okta.add-user-to-group"
with:
userId: "{{get-worker.okta_user_id}}"
groupProfile: "{{new_job_profile}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/conocophillips/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://conocophillips.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: group-members
path: "/groups/{{groupProfile}}/users/{{userId}}"
inputParameters:
- name: groupProfile
in: path
- name: userId
in: path
operations:
- name: add-user-to-group
method: PUT
Checks HSE training completion in Workday and notifies safety coordinator via Teams.
naftiko: "0.5"
info:
label: "Workday Safety Training Compliance Check"
description: "Checks HSE training completion in Workday and notifies safety coordinator via Teams."
tags:
- safety
- training
- workday
- msteams
- compliance
capability:
exposes:
- type: mcp
namespace: safety-training
port: 8080
tools:
- name: check-safety-training
description: "Verify training completion and notify if overdue."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
steps:
- name: get-training-status
type: call
call: workday.get-learning-records
with:
worker_id: "{{worker_id}}"
- name: notify-overdue
type: call
call: msteams.send-message
with:
channel: "hse-compliance"
text: "Safety training | {{worker_id}} | Overdue: {{get-training-status.overdue_count}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning
path: "/learning/records"
operations:
- name: get-learning-records
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: channel-messages
path: "/teams/hse/channels/compliance/messages"
operations:
- name: send-message
method: POST
Returns current vacation, PTO, and sick leave balances for a ConocoPhillips employee from Workday for absence planning and approval workflows.
naftiko: "0.5"
info:
label: "Workday Time-Off Balance Lookup"
description: "Returns current vacation, PTO, and sick leave balances for a ConocoPhillips employee from Workday for absence planning and approval workflows."
tags:
- hr
- workday
- absence-management
capability:
exposes:
- type: mcp
namespace: hr-absence
port: 8080
tools:
- name: get-time-off-balance
description: "Given a Workday employee ID, return the employee's current accrued vacation, PTO, and sick leave balances. Use before approving a time-off request."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-leave-balance"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: vacation_days
type: number
mapping: "$.leaveBalances.vacation"
- name: pto_days
type: number
mapping: "$.leaveBalances.pto"
- name: sick_days
type: number
mapping: "$.leaveBalances.sick"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: leave-balances
path: "/conocophillips/workers/{{worker_id}}/leaveBalance"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-leave-balance
method: GET