Fedex Capabilities
Naftiko 0.5 capability definitions for Fedex - 100 capabilities showing integration workflows and service orchestrations.
Retrieves billing invoices for a FedEx customer account.
naftiko: "0.5"
info:
label: "Account Invoice Lookup"
description: "Retrieves billing invoices for a FedEx customer account."
tags:
- billing
- customer-service
capability:
exposes:
- type: mcp
namespace: billing
port: 8080
tools:
- name: get-invoices
description: "Look up account invoices."
inputParameters:
- name: account_number
in: body
type: string
- name: period
in: body
type: string
call: "billing-api.get-invoices"
with:
account: "{{account_number}}"
period: "{{period}}"
outputParameters:
- name: invoices
type: array
mapping: "$.invoices"
- name: total_due
type: number
mapping: "$.totalDue"
consumes:
- type: http
namespace: billing-api
baseUri: "https://billing.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_billing_token"
resources:
- name: invoices
path: "/accounts/{{account}}/invoices"
inputParameters:
- name: account
in: path
operations:
- name: get-invoices
method: GET
Validates a delivery address for serviceability and accuracy.
naftiko: "0.5"
info:
label: "Address Validation"
description: "Validates a delivery address for serviceability and accuracy."
tags:
- logistics
- customer-service
capability:
exposes:
- type: mcp
namespace: address
port: 8080
tools:
- name: validate-address
description: "Validate delivery address."
inputParameters:
- name: street
in: body
type: string
- name: city
in: body
type: string
- name: state
in: body
type: string
- name: zip
in: body
type: string
call: "address-api.validate"
with:
street: "{{street}}"
city: "{{city}}"
state: "{{state}}"
zip: "{{zip}}"
outputParameters:
- name: valid
type: boolean
mapping: "$.isValid"
- name: residential
type: boolean
mapping: "$.isResidential"
- name: corrected_address
type: string
mapping: "$.correctedAddress"
consumes:
- type: http
namespace: address-api
baseUri: "https://api.fedex.com/address/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: validation
path: "/addresses/resolve"
operations:
- name: validate
method: POST
Exports a full headcount and base salary summary from ADP by department and cost center for use in quarterly finance reporting.
naftiko: "0.5"
info:
label: "ADP Payroll Headcount Export for Finance"
description: "Exports a full headcount and base salary summary from ADP by department and cost center for use in quarterly finance reporting."
tags:
- hr
- finance
- adp
- payroll
- reporting
capability:
exposes:
- type: mcp
namespace: finance-hr-reporting
port: 8080
tools:
- name: get-payroll-headcount-summary
description: "Returns a headcount and total salary cost summary grouped by department and cost center from ADP. Use for quarterly budget reviews, headcount planning, and executive finance reporting."
call: "adp-hcm.export-headcount"
outputParameters:
- name: departments
type: array
mapping: "$.data"
- name: total_employees
type: number
mapping: "$.total"
consumes:
- type: http
namespace: adp-hcm
baseUri: "https://api.adp.com"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: headcount-export
path: "/hr/v2/workers"
inputParameters:
- name: count
in: query
value: "true"
operations:
- name: export-headcount
method: GET
Looks up the status of a scheduled ADP payroll run by run ID and returns processing state, scheduled date, and employee count.
naftiko: "0.5"
info:
label: "ADP Payroll Run Status Check"
description: "Looks up the status of a scheduled ADP payroll run by run ID and returns processing state, scheduled date, and employee count."
tags:
- hr
- finance
- payroll
- adp
capability:
exposes:
- type: mcp
namespace: payroll
port: 8080
tools:
- name: get-payroll-run-status
description: "Given an ADP payroll run ID, return the current processing status, scheduled pay date, and total employee count included in the run. Use when auditing payroll cycles or resolving payroll exceptions."
inputParameters:
- name: run_id
in: body
type: string
description: "The ADP payroll run identifier."
call: "adp.get-payroll-run"
with:
run_id: "{{run_id}}"
outputParameters:
- name: status
type: string
mapping: "$.processingStatus.shortName"
- name: pay_date
type: string
mapping: "$.payPeriod.adjustedPayDate"
- name: employee_count
type: number
mapping: "$.workerCount"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll-runs
path: "/payroll/v1/payroll-output/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-payroll-run
method: GET
Generates cargo load plan for a FedEx aircraft sortie including container assignment and weight distribution.
naftiko: "0.5"
info:
label: "Aircraft Cargo Load Plan"
description: "Generates cargo load plan for a FedEx aircraft sortie including container assignment and weight distribution."
tags:
- cargo
- flight-operations
- logistics
capability:
exposes:
- type: mcp
namespace: cargo-load
port: 8080
tools:
- name: generate-load-plan
description: "Generate aircraft cargo load plan."
inputParameters:
- name: flight_number
in: body
type: string
- name: aircraft_type
in: body
type: string
call: "cargo-api.generate-plan"
with:
flight: "{{flight_number}}"
aircraft: "{{aircraft_type}}"
outputParameters:
- name: plan_id
type: string
mapping: "$.planId"
- name: total_weight
type: number
mapping: "$.totalWeight"
- name: containers
type: array
mapping: "$.containers"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo-ops.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_cargo_ops_token"
resources:
- name: load-plans
path: "/load-plans/generate"
operations:
- name: generate-plan
method: POST
Retrieves FedEx cargo aircraft flight status and position.
naftiko: "0.5"
info:
label: "Aircraft Flight Status"
description: "Retrieves FedEx cargo aircraft flight status and position."
tags:
- flight-operations
- cargo
- tracking
capability:
exposes:
- type: mcp
namespace: flight-ops
port: 8080
tools:
- name: get-flight-status
description: "Get cargo flight status."
inputParameters:
- name: flight_number
in: body
type: string
call: "flight-api.get-status"
with:
flight: "{{flight_number}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: position
type: string
mapping: "$.currentPosition"
- name: eta
type: string
mapping: "$.eta"
consumes:
- type: http
namespace: flight-api
baseUri: "https://flight-ops.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_flight_ops_token"
resources:
- name: flights
path: "/flights/{{flight}}/status"
inputParameters:
- name: flight
in: path
operations:
- name: get-status
method: GET
Retrieves all members of a privileged Azure AD group for access review and exports the list to a Microsoft 365 SharePoint audit list.
naftiko: "0.5"
info:
label: "Azure AD User Access Review"
description: "Retrieves all members of a privileged Azure AD group for access review and exports the list to a Microsoft 365 SharePoint audit list."
tags:
- identity
- security
- azure-ad
- microsoft-365
- access-review
capability:
exposes:
- type: mcp
namespace: identity-audit
port: 8080
tools:
- name: run-access-review
description: "Given an Azure AD privileged group ID and a SharePoint site and list ID, retrieve all group members and write them as rows to the SharePoint access review list. Use quarterly for privileged access reviews."
inputParameters:
- name: group_id
in: body
type: string
description: "The Azure AD group ID to review membership for."
- name: sharepoint_site_id
in: body
type: string
description: "The SharePoint site ID to write the review results to."
- name: sharepoint_list_id
in: body
type: string
description: "The SharePoint list ID for the access review entries."
steps:
- name: get-group-members
type: call
call: "azure-ad-audit.list-group-members"
with:
group_id: "{{group_id}}"
- name: write-to-sharepoint
type: call
call: "sharepoint-audit.create-list-item"
with:
site_id: "{{sharepoint_site_id}}"
list_id: "{{sharepoint_list_id}}"
members: "{{get-group-members.value}}"
consumes:
- type: http
namespace: azure-ad-audit
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.azure_ad_token"
resources:
- name: group-members
path: "/groups/{{group_id}}/members"
inputParameters:
- name: group_id
in: path
operations:
- name: list-group-members
method: GET
- type: http
namespace: sharepoint-audit
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_id}}/items"
inputParameters:
- name: site_id
in: path
- name: list_id
in: path
operations:
- name: create-list-item
method: POST
Queries Azure Cost Management for unexpected spend spikes in FedEx subscriptions and sends an alert to the FinOps Microsoft Teams channel when thresholds are exceeded.
naftiko: "0.5"
info:
label: "Azure Cloud Cost Anomaly Alert"
description: "Queries Azure Cost Management for unexpected spend spikes in FedEx subscriptions and sends an alert to the FinOps Microsoft Teams channel when thresholds are exceeded."
tags:
- cloud
- finops
- azure
- cost-management
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an Azure subscription ID and cost anomaly threshold, query Azure Cost Management for current period spend, compare against the threshold, and post an alert to the FinOps Teams channel if exceeded. Use when responding to Azure cost anomaly alerts."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID to query for cost data."
- name: threshold_usd
in: body
type: number
description: "Spend threshold in USD. An alert is sent if current spend exceeds this value."
steps:
- name: get-cost-data
type: call
call: "azure-cost.query-usage"
with:
subscription_id: "{{subscription_id}}"
- name: post-alert
type: call
call: "msteams-finops.send-message"
with:
channel_id: "$secrets.teams_finops_channel_id"
text: "Azure Cost Alert: Subscription {{subscription_id}} has exceeded ${{threshold_usd}} threshold. Current spend: {{get-cost-data.total_cost}} {{get-cost-data.currency}}. Review billing dashboard immediately."
consumes:
- type: http
namespace: azure-cost
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_management_token"
resources:
- name: cost-query
path: "/{{subscription_id}}/providers/Microsoft.CostManagement/query"
inputParameters:
- name: subscription_id
in: path
operations:
- name: query-usage
method: POST
- type: http
namespace: msteams-finops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers an Azure Data Factory pipeline run for FedEx ETL processing and returns the run ID for monitoring.
naftiko: "0.5"
info:
label: "Azure Data Factory Pipeline Trigger"
description: "Triggers an Azure Data Factory pipeline run for FedEx ETL processing and returns the run ID for monitoring."
tags:
- data
- etl
- azure-data-factory
- data-pipeline
capability:
exposes:
- type: mcp
namespace: etl-ops
port: 8080
tools:
- name: trigger-adf-pipeline
description: "Given an ADF factory name and pipeline name, trigger an on-demand pipeline run. Use when refreshing data feeds for logistics analytics or responding to upstream data availability events."
inputParameters:
- name: factory_name
in: body
type: string
description: "The Azure Data Factory instance name."
- name: pipeline_name
in: body
type: string
description: "The pipeline name to trigger."
- name: resource_group
in: body
type: string
description: "The Azure resource group containing the factory."
call: "azure-adf.create-run"
with:
factory_name: "{{factory_name}}"
pipeline_name: "{{pipeline_name}}"
resource_group: "{{resource_group}}"
outputParameters:
- name: run_id
type: string
mapping: "$.runId"
consumes:
- type: http
namespace: azure-adf
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_management_token"
resources:
- name: pipeline-runs
path: "/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.DataFactory/factories/{{factory_name}}/pipelines/{{pipeline_name}}/createRun"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
- name: factory_name
in: path
- name: pipeline_name
in: path
operations:
- name: create-run
method: POST
Triggers an Azure Databricks job run for FedEx data pipeline processing, monitors run state, and posts completion status to Microsoft Teams.
naftiko: "0.5"
info:
label: "Azure Databricks Pipeline Run Monitor"
description: "Triggers an Azure Databricks job run for FedEx data pipeline processing, monitors run state, and posts completion status to Microsoft Teams."
tags:
- data
- analytics
- azure-databricks
- microsoft-teams
- data-pipeline
capability:
exposes:
- type: mcp
namespace: data-pipeline
port: 8080
tools:
- name: run-databricks-job
description: "Given a Databricks job ID, trigger a new run and post the completion status to the data-engineering Microsoft Teams channel. Use when scheduling ad-hoc pipeline runs or responding to data freshness SLA alerts."
inputParameters:
- name: job_id
in: body
type: integer
description: "The Azure Databricks job ID to run."
- name: notebook_params
in: body
type: string
description: "Optional JSON string of notebook parameters to pass to the job run."
steps:
- name: trigger-job
type: call
call: "databricks.run-job-now"
with:
job_id: "{{job_id}}"
notebook_params: "{{notebook_params}}"
- name: notify-team
type: call
call: "msteams-data.send-message"
with:
channel_id: "$secrets.teams_data_channel_id"
text: "Databricks job {{job_id}} started. Run ID: {{trigger-job.run_id}}. Monitor at: {{trigger-job.run_page_url}}"
consumes:
- type: http
namespace: databricks
baseUri: "https://adb-fedex.azuredatabricks.net/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: job-runs
path: "/jobs/run-now"
operations:
- name: run-job-now
method: POST
- type: http
namespace: msteams-data
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an Azure DevOps pipeline fails on a protected branch, creates a ServiceNow incident, posts an alert to Microsoft Teams, and records a Splunk event for traceability.
naftiko: "0.5"
info:
label: "Azure DevOps Pipeline Failure Handler"
description: "When an Azure DevOps pipeline fails on a protected branch, creates a ServiceNow incident, posts an alert to Microsoft Teams, and records a Splunk event for traceability."
tags:
- devops
- cicd
- azure-devops
- servicenow
- splunk
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given an Azure DevOps pipeline failure event, open a ServiceNow incident, post a Teams alert to the engineering channel, and log the failure event in Splunk. Use when a protected-branch build or release pipeline fails."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The Azure DevOps pipeline run ID."
- name: project
in: body
type: string
description: "The Azure DevOps project name."
- name: branch
in: body
type: string
description: "The branch the pipeline ran against (e.g., main)."
- name: failed_stage
in: body
type: string
description: "Name of the stage or job that failed."
- name: log_url
in: body
type: string
description: "Direct URL to the pipeline failure log."
steps:
- name: create-incident
type: call
call: "servicenow-devops.create-incident"
with:
category: "software"
short_description: "[CI/CD] Pipeline failure: {{project}} / {{branch}} — {{failed_stage}}"
description: "Pipeline ID: {{pipeline_id}}\nLog: {{log_url}}"
urgency: "2"
- name: post-teams-alert
type: call
call: "msteams-devops.send-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
text: "Pipeline failure in {{project}} ({{branch}}) — Stage: {{failed_stage}} | Incident: {{create-incident.number}} | Log: {{log_url}}"
- name: log-splunk-event
type: call
call: "splunk-devops.post-event"
with:
sourcetype: "cicd:pipeline:failure"
event: "project={{project}} branch={{branch}} stage={{failed_stage}} pipeline_id={{pipeline_id}} incident={{create-incident.number}}"
consumes:
- type: http
namespace: servicenow-devops
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-devops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: splunk-devops
baseUri: "https://fedex-splunk.example.com:8088"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.splunk_hec_token"
placement: header
resources:
- name: hec-events
path: "/services/collector/event"
operations:
- name: post-event
method: POST
Triggers an Azure DevOps release pipeline for a given artifact version, monitors deployment status, and publishes the result to a Splunk dashboard.
naftiko: "0.5"
info:
label: "Azure DevOps Release Deployment Tracker"
description: "Triggers an Azure DevOps release pipeline for a given artifact version, monitors deployment status, and publishes the result to a Splunk dashboard."
tags:
- devops
- deployment
- azure-devops
- splunk
capability:
exposes:
- type: mcp
namespace: devops-deploy
port: 8080
tools:
- name: trigger-release
description: "Given an Azure DevOps release definition ID and artifact version, trigger a new release run and return the release ID. Use when deploying a new version to staging or production."
inputParameters:
- name: definition_id
in: body
type: string
description: "The Azure DevOps release definition ID."
- name: artifact_version
in: body
type: string
description: "The build artifact version or tag to deploy."
- name: environment
in: body
type: string
description: "Target deployment environment (e.g., staging, production)."
call: "azure-devops.create-release"
with:
definition_id: "{{definition_id}}"
artifact_version: "{{artifact_version}}"
outputParameters:
- name: release_id
type: string
mapping: "$.id"
- name: release_url
type: string
mapping: "$._links.web.href"
consumes:
- type: http
namespace: azure-devops
baseUri: "https://vsrm.dev.azure.com/fedex"
authentication:
type: basic
username: "$secrets.azdo_user"
password: "$secrets.azdo_pat"
resources:
- name: releases
path: "/{{project}}/_apis/release/releases"
inputParameters:
- name: project
in: path
operations:
- name: create-release
method: POST
When a ServiceNow incident is resolved as a known bug, creates a linked Azure DevOps work item for the engineering backlog.
naftiko: "0.5"
info:
label: "Azure DevOps Work Item Creation from ServiceNow"
description: "When a ServiceNow incident is resolved as a known bug, creates a linked Azure DevOps work item for the engineering backlog."
tags:
- devops
- itsm
- servicenow
- azure-devops
- engineering
capability:
exposes:
- type: mcp
namespace: devops-backlog
port: 8080
tools:
- name: create-backlog-item-from-incident
description: "Given a ServiceNow incident number and an Azure DevOps project, fetch the incident details and create a linked Bug work item in the engineering backlog. Use when incidents are triaged as product defects that require engineering resolution."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number to convert (e.g., INC0012345)."
- name: ado_project
in: body
type: string
description: "The Azure DevOps project name where the work item should be created."
steps:
- name: get-incident
type: call
call: "servicenow-backlog.get-incident"
with:
number: "{{incident_number}}"
- name: create-work-item
type: call
call: "azdo-backlog.create-work-item"
with:
project: "{{ado_project}}"
type: "Bug"
title: "[INC] {{get-incident.short_description}}"
description: "{{get-incident.description}}\n\nOrigin: ServiceNow {{incident_number}}"
consumes:
- type: http
namespace: servicenow-backlog
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: azdo-backlog
baseUri: "https://dev.azure.com/fedex"
authentication:
type: basic
username: "$secrets.azdo_user"
password: "$secrets.azdo_pat"
resources:
- name: work-items
path: "/{{project}}/_apis/wit/workitems/$Bug"
inputParameters:
- name: project
in: path
operations:
- name: create-work-item
method: POST
Applies a new container image tag to an Azure Kubernetes Service deployment in a FedEx namespace and monitors rollout status.
naftiko: "0.5"
info:
label: "Azure Kubernetes Service Deployment Rollout"
description: "Applies a new container image tag to an Azure Kubernetes Service deployment in a FedEx namespace and monitors rollout status."
tags:
- cloud
- kubernetes
- azure
- deployment
- devops
capability:
exposes:
- type: mcp
namespace: k8s-deploy
port: 8080
tools:
- name: rollout-deployment
description: "Given an AKS cluster name, namespace, deployment name, and new image tag, patch the deployment with the new image and return rollout status. Use when releasing a new container version to a FedEx AKS environment."
inputParameters:
- name: cluster_name
in: body
type: string
description: "The AKS cluster name."
- name: namespace
in: body
type: string
description: "The Kubernetes namespace containing the deployment."
- name: deployment_name
in: body
type: string
description: "The Kubernetes deployment name to update."
- name: image_tag
in: body
type: string
description: "The new container image tag to deploy (e.g., v2.3.1)."
call: "aks.patch-deployment"
with:
cluster_name: "{{cluster_name}}"
namespace: "{{namespace}}"
deployment_name: "{{deployment_name}}"
image_tag: "{{image_tag}}"
outputParameters:
- name: rollout_status
type: string
mapping: "$.status.conditions[0].type"
consumes:
- type: http
namespace: aks
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_management_token"
resources:
- name: deployments
path: "/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}/namespaces/{{namespace}}/deployments/{{deployment_name}}"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
- name: cluster_name
in: path
- name: namespace
in: path
- name: deployment_name
in: path
operations:
- name: patch-deployment
method: PATCH
Executes an on-demand SQL query against a FedEx Azure Synapse Analytics dedicated pool for ad-hoc data analysis and returns results for downstream reporting.
naftiko: "0.5"
info:
label: "Azure Synapse Analytics Query Runner"
description: "Executes an on-demand SQL query against a FedEx Azure Synapse Analytics dedicated pool for ad-hoc data analysis and returns results for downstream reporting."
tags:
- data
- analytics
- azure
- synapse
- sql
capability:
exposes:
- type: mcp
namespace: synapse-analytics
port: 8080
tools:
- name: run-synapse-query
description: "Given a Synapse workspace name, SQL pool name, and SQL query string, execute the query and return results. Use for ad-hoc analytics against FedEx logistics and operations data stored in Azure Synapse."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Azure Synapse Analytics workspace name."
- name: sql_pool
in: body
type: string
description: "The dedicated SQL pool name within the workspace."
- name: query
in: body
type: string
description: "The SQL query to execute against the dedicated pool."
call: "synapse.execute-query"
with:
workspace_name: "{{workspace_name}}"
sql_pool: "{{sql_pool}}"
query: "{{query}}"
outputParameters:
- name: results
type: array
mapping: "$.rows"
- name: row_count
type: number
mapping: "$.rowCount"
consumes:
- type: http
namespace: synapse
baseUri: "https://fedex-synapse.sql.azuresynapse.net"
authentication:
type: bearer
token: "$secrets.synapse_token"
resources:
- name: sql-queries
path: "/sql/pools/{{sql_pool}}/query"
inputParameters:
- name: sql_pool
in: path
operations:
- name: execute-query
method: POST
Processes bulk shipment file uploads for enterprise customers.
naftiko: "0.5"
info:
label: "Bulk Shipment Upload"
description: "Processes bulk shipment file uploads for enterprise customers."
tags:
- logistics
- customer-service
- shipping
capability:
exposes:
- type: mcp
namespace: bulk
port: 8080
tools:
- name: upload-shipments
description: "Process bulk shipment upload."
inputParameters:
- name: account_number
in: body
type: string
- name: file_reference
in: body
type: string
- name: shipment_count
in: body
type: number
call: "ship-api.bulk-upload"
with:
account: "{{account_number}}"
file: "{{file_reference}}"
count: "{{shipment_count}}"
outputParameters:
- name: batch_id
type: string
mapping: "$.batchId"
- name: processed
type: number
mapping: "$.processedCount"
- name: errors
type: number
mapping: "$.errorCount"
consumes:
- type: http
namespace: ship-api
baseUri: "https://api.fedex.com/ship/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: bulk
path: "/bulk/upload"
operations:
- name: bulk-upload
method: POST
Generates carbon emissions report for an account or shipment.
naftiko: "0.5"
info:
label: "Carbon Footprint Report"
description: "Generates carbon emissions report for an account or shipment."
tags:
- sustainability
- analytics
- customer-service
capability:
exposes:
- type: mcp
namespace: carbon
port: 8080
tools:
- name: get-carbon
description: "Get carbon footprint."
inputParameters:
- name: account_number
in: body
type: string
- name: period
in: body
type: string
call: "analytics-api.get-carbon"
with:
account: "{{account_number}}"
period: "{{period}}"
outputParameters:
- name: total_co2_kg
type: number
mapping: "$.totalCO2Kg"
- name: per_shipment
type: number
mapping: "$.avgCO2PerShipment"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: carbon
path: "/sustainability/carbon"
operations:
- name: get-carbon
method: POST
Generates a commercial invoice for international shipments.
naftiko: "0.5"
info:
label: "Commercial Invoice Generation"
description: "Generates a commercial invoice for international shipments."
tags:
- customs
- international
- compliance
capability:
exposes:
- type: mcp
namespace: invoices
port: 8080
tools:
- name: generate-invoice
description: "Generate commercial invoice."
inputParameters:
- name: tracking_number
in: body
type: string
- name: declared_value
in: body
type: number
- name: commodity_description
in: body
type: string
call: "trade-api.generate-invoice"
with:
tracking: "{{tracking_number}}"
value: "{{declared_value}}"
commodity: "{{commodity_description}}"
outputParameters:
- name: invoice_id
type: string
mapping: "$.invoiceId"
- name: doc_url
type: string
mapping: "$.documentUrl"
consumes:
- type: http
namespace: trade-api
baseUri: "https://trade.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_trade_token"
resources:
- name: invoices
path: "/documents/commercial-invoice"
operations:
- name: generate-invoice
method: POST
Reports ULD/container utilization metrics for air cargo operations.
naftiko: "0.5"
info:
label: "Container Utilization Report"
description: "Reports ULD/container utilization metrics for air cargo operations."
tags:
- cargo
- analytics
- operations
capability:
exposes:
- type: mcp
namespace: containers
port: 8080
tools:
- name: get-utilization
description: "Get container utilization."
inputParameters:
- name: hub
in: body
type: string
- name: date
in: body
type: string
call: "cargo-api.get-container-util"
with:
hub: "{{hub}}"
date: "{{date}}"
outputParameters:
- name: total_containers
type: number
mapping: "$.total"
- name: utilization_pct
type: number
mapping: "$.utilizationPercent"
consumes:
- type: http
namespace: cargo-api
baseUri: "https://cargo-ops.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_cargo_ops_token"
resources:
- name: containers
path: "/containers/utilization"
operations:
- name: get-container-util
method: POST
Retrieves FedEx customer account details and shipping preferences.
naftiko: "0.5"
info:
label: "Customer Account Lookup"
description: "Retrieves FedEx customer account details and shipping preferences."
tags:
- customer-service
- account-management
capability:
exposes:
- type: mcp
namespace: accounts
port: 8080
tools:
- name: get-account
description: "Look up customer account."
inputParameters:
- name: account_number
in: body
type: string
call: "account-api.get-details"
with:
account: "{{account_number}}"
outputParameters:
- name: company_name
type: string
mapping: "$.companyName"
- name: tier
type: string
mapping: "$.accountTier"
- name: default_service
type: string
mapping: "$.defaultService"
consumes:
- type: http
namespace: account-api
baseUri: "https://account.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_account_token"
resources:
- name: accounts
path: "/accounts/{{account}}"
inputParameters:
- name: account
in: path
operations:
- name: get-details
method: GET
Processes a damage/loss claim by creating a case, investigating shipment history, and issuing resolution.
naftiko: "0.5"
info:
label: "Customer Claim Orchestrator"
description: "Processes a damage/loss claim by creating a case, investigating shipment history, and issuing resolution."
tags:
- customer-service
- logistics
- salesforce
capability:
exposes:
- type: mcp
namespace: claims
port: 8080
tools:
- name: process-claim
description: "Process customer claim."
inputParameters:
- name: tracking_number
in: body
type: string
- name: claim_type
in: body
type: string
- name: account_number
in: body
type: string
steps:
- name: get-history
type: call
call: "tracking-api.get-history"
with:
tracking: "{{tracking_number}}"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Claim: {{claim_type}} — {{tracking_number}}"
account: "{{account_number}}"
priority: "High"
- name: investigate
type: call
call: "claims-api.investigate"
with:
tracking: "{{tracking_number}}"
type: "{{claim_type}}"
history: "{{get-history.events}}"
consumes:
- type: http
namespace: tracking-api
baseUri: "https://api.fedex.com/track/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: history
path: "/trackingnumbers/history"
operations:
- name: get-history
method: POST
- type: http
namespace: salesforce
baseUri: "https://fedex.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: claims-api
baseUri: "https://claims.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_claims_token"
resources:
- name: investigate
path: "/investigate"
operations:
- name: investigate
method: POST
Orchestrates international customs clearance by generating documentation, submitting to customs broker, and tracking clearance status.
naftiko: "0.5"
info:
label: "Customs Clearance Orchestrator"
description: "Orchestrates international customs clearance by generating documentation, submitting to customs broker, and tracking clearance status."
tags:
- logistics
- customs
- compliance
- international
capability:
exposes:
- type: mcp
namespace: customs
port: 8080
tools:
- name: process-customs
description: "Process customs clearance for international shipment."
inputParameters:
- name: tracking_number
in: body
type: string
- name: destination_country
in: body
type: string
- name: declared_value
in: body
type: number
steps:
- name: generate-docs
type: call
call: "trade-api.generate-customs-docs"
with:
tracking: "{{tracking_number}}"
country: "{{destination_country}}"
value: "{{declared_value}}"
- name: submit-clearance
type: call
call: "trade-api.submit-clearance"
with:
tracking: "{{tracking_number}}"
docs: "{{generate-docs.document_ids}}"
- name: notify-shipper
type: call
call: "notification-api.send-email"
with:
tracking: "{{tracking_number}}"
template: "customs_submitted"
reference: "{{submit-clearance.clearance_ref}}"
consumes:
- type: http
namespace: trade-api
baseUri: "https://trade.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_trade_token"
resources:
- name: customs-docs
path: "/customs/documents"
operations:
- name: generate-customs-docs
method: POST
- name: clearance
path: "/customs/clearance"
operations:
- name: submit-clearance
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_notification_token"
resources:
- name: email
path: "/email/send"
operations:
- name: send-email
method: POST
Processes a damaged package report by creating an incident, notifying the customer, and initiating a claim.
naftiko: "0.5"
info:
label: "Damaged Package Processing Orchestrator"
description: "Processes a damaged package report by creating an incident, notifying the customer, and initiating a claim."
tags:
- customer-service
- logistics
- servicenow
- notifications
capability:
exposes:
- type: mcp
namespace: damage
port: 8080
tools:
- name: process-damage
description: "Process damaged package."
inputParameters:
- name: tracking_number
in: body
type: string
- name: damage_description
in: body
type: string
- name: station
in: body
type: string
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Damaged package: {{tracking_number}} at {{station}}"
priority: "2"
- name: notify-customer
type: call
call: "notification-api.send-email"
with:
tracking: "{{tracking_number}}"
template: "package_damaged"
- name: initiate-claim
type: call
call: "claims-api.create-claim"
with:
tracking: "{{tracking_number}}"
type: "damage"
description: "{{damage_description}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_notification_token"
resources:
- name: email
path: "/email/send"
operations:
- name: send-email
method: POST
- type: http
namespace: claims-api
baseUri: "https://claims.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_claims_token"
resources:
- name: claims
path: "/claims"
operations:
- name: create-claim
method: POST
Generates a dangerous goods shipper's declaration for hazmat shipments.
naftiko: "0.5"
info:
label: "Dangerous Goods Declaration"
description: "Generates a dangerous goods shipper's declaration for hazmat shipments."
tags:
- compliance
- safety
- cargo
capability:
exposes:
- type: mcp
namespace: dg-docs
port: 8080
tools:
- name: generate-declaration
description: "Generate DG declaration."
inputParameters:
- name: tracking_number
in: body
type: string
- name: un_number
in: body
type: string
- name: proper_name
in: body
type: string
call: "compliance-api.generate-dg-dec"
with:
tracking: "{{tracking_number}}"
un: "{{un_number}}"
name: "{{proper_name}}"
outputParameters:
- name: declaration_id
type: string
mapping: "$.declarationId"
- name: doc_url
type: string
mapping: "$.documentUrl"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://compliance.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_compliance_token"
resources:
- name: dg
path: "/dangerous-goods/declaration"
operations:
- name: generate-dg-dec
method: POST
Schedules a delivery appointment for a commercial/freight shipment.
naftiko: "0.5"
info:
label: "Delivery Appointment Scheduling"
description: "Schedules a delivery appointment for a commercial/freight shipment."
tags:
- logistics
- delivery
- scheduling
capability:
exposes:
- type: mcp
namespace: appointments
port: 8080
tools:
- name: schedule-appointment
description: "Schedule delivery appointment."
inputParameters:
- name: tracking_number
in: body
type: string
- name: preferred_date
in: body
type: string
- name: preferred_window
in: body
type: string
call: "delivery-api.schedule"
with:
tracking: "{{tracking_number}}"
date: "{{preferred_date}}"
window: "{{preferred_window}}"
outputParameters:
- name: appointment_id
type: string
mapping: "$.appointmentId"
- name: confirmed_window
type: string
mapping: "$.confirmedWindow"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: appointments
path: "/appointments/schedule"
operations:
- name: schedule
method: POST
Analyzes delivery density for route planning and territory optimization.
naftiko: "0.5"
info:
label: "Delivery Density Analysis"
description: "Analyzes delivery density for route planning and territory optimization."
tags:
- analytics
- delivery
- route-optimization
capability:
exposes:
- type: mcp
namespace: density
port: 8080
tools:
- name: analyze-density
description: "Analyze delivery density."
inputParameters:
- name: station
in: body
type: string
- name: zip_code
in: body
type: string
call: "analytics-api.get-density"
with:
station: "{{station}}"
zip: "{{zip_code}}"
outputParameters:
- name: stops_per_mile
type: number
mapping: "$.stopsPerMile"
- name: avg_packages_per_stop
type: number
mapping: "$.avgPackagesPerStop"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: density
path: "/delivery/density"
operations:
- name: get-density
method: POST
When a delivery exception occurs, creates a ServiceNow incident, notifies the customer via SMS, and escalates to the local station manager.
naftiko: "0.5"
info:
label: "Delivery Exception Orchestrator"
description: "When a delivery exception occurs, creates a ServiceNow incident, notifies the customer via SMS, and escalates to the local station manager."
tags:
- logistics
- customer-service
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: exceptions
port: 8080
tools:
- name: handle-exception
description: "Process a delivery exception."
inputParameters:
- name: tracking_number
in: body
type: string
- name: exception_type
in: body
type: string
- name: station
in: body
type: string
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Delivery exception: {{exception_type}} — {{tracking_number}}"
category: "delivery"
priority: "2"
- name: notify-customer
type: call
call: "notification-api.send-sms"
with:
tracking: "{{tracking_number}}"
template: "delivery_exception"
exception: "{{exception_type}}"
- name: escalate-station
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{station_channel}}"
text: "Exception: {{exception_type}} for {{tracking_number}} at {{station}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: notification-api
baseUri: "https://notifications.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_notification_token"
resources:
- name: sms
path: "/sms/send"
operations:
- name: send-sms
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Updates delivery instructions for an in-transit package (leave at door, gate code, etc.).
naftiko: "0.5"
info:
label: "Delivery Instructions Update"
description: "Updates delivery instructions for an in-transit package (leave at door, gate code, etc.)."
tags:
- delivery
- customer-service
capability:
exposes:
- type: mcp
namespace: instructions
port: 8080
tools:
- name: update-instructions
description: "Update delivery instructions."
inputParameters:
- name: tracking_number
in: body
type: string
- name: instructions
in: body
type: string
call: "delivery-api.update-instructions"
with:
tracking: "{{tracking_number}}"
instructions: "{{instructions}}"
outputParameters:
- name: status
type: string
mapping: "$.updateStatus"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: instructions
path: "/packages/instructions"
operations:
- name: update-instructions
method: PUT
Retrieves proof of delivery including signature, photo, and timestamp for a delivered package.
naftiko: "0.5"
info:
label: "Proof of Delivery Lookup"
description: "Retrieves proof of delivery including signature, photo, and timestamp for a delivered package."
tags:
- logistics
- customer-service
- delivery
capability:
exposes:
- type: mcp
namespace: pod
port: 8080
tools:
- name: get-pod
description: "Get proof of delivery."
inputParameters:
- name: tracking_number
in: body
type: string
call: "delivery-api.get-pod"
with:
tracking: "{{tracking_number}}"
outputParameters:
- name: signed_by
type: string
mapping: "$.signedBy"
- name: delivery_time
type: string
mapping: "$.deliveryTime"
- name: photo_url
type: string
mapping: "$.photoUrl"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: pod
path: "/packages/{{tracking}}/pod"
inputParameters:
- name: tracking
in: path
operations:
- name: get-pod
method: GET
Sends proactive delivery window notifications to recipients as their package approaches.
naftiko: "0.5"
info:
label: "Delivery Window Notification Orchestrator"
description: "Sends proactive delivery window notifications to recipients as their package approaches."
tags:
- delivery
- customer-service
- notifications
capability:
exposes:
- type: mcp
namespace: delivery-notify
port: 8080
tools:
- name: send-window-notification
description: "Send delivery window notification."
inputParameters:
- name: tracking_number
in: body
type: string
steps:
- name: get-eta
type: call
call: "delivery-api.get-status"
with:
tracking: "{{tracking_number}}"
- name: get-recipient
type: call
call: "tracking-api.get-recipient"
with:
tracking: "{{tracking_number}}"
- name: send-sms
type: call
call: "notification-api.send-sms"
with:
phone: "{{get-recipient.phone}}"
message: "Your FedEx package {{tracking_number}} arrives today between {{get-eta.deliveryWindow}}"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: status
path: "/packages/{{tracking}}/delivery"
inputParameters:
- name: tracking
in: path
operations:
- name: get-status
method: GET
- type: http
namespace: tracking-api
baseUri: "https://api.fedex.com/track/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: recipient
path: "/trackingnumbers/{{tracking}}/recipient"
inputParameters:
- name: tracking
in: path
operations:
- name: get-recipient
method: GET
- type: http
namespace: notification-api
baseUri: "https://notifications.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_notification_token"
resources:
- name: sms
path: "/sms/send"
operations:
- name: send-sms
method: POST
Assigns dock doors for inbound/outbound trailers at sort facilities.
naftiko: "0.5"
info:
label: "Dock Door Assignment"
description: "Assigns dock doors for inbound/outbound trailers at sort facilities."
tags:
- operations
- sorting
- logistics
capability:
exposes:
- type: mcp
namespace: dock
port: 8080
tools:
- name: assign-door
description: "Assign dock door."
inputParameters:
- name: facility
in: body
type: string
- name: trailer_id
in: body
type: string
- name: direction
in: body
type: string
call: "ops-api.assign-door"
with:
facility: "{{facility}}"
trailer: "{{trailer_id}}"
direction: "{{direction}}"
outputParameters:
- name: door
type: string
mapping: "$.assignedDoor"
- name: priority
type: number
mapping: "$.priority"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: dock
path: "/facilities/{{facility}}/dock/assign"
inputParameters:
- name: facility
in: path
operations:
- name: assign-door
method: POST
Retrieves a driver's current route completion status including stops completed and remaining.
naftiko: "0.5"
info:
label: "Driver Route Completion Status"
description: "Retrieves a driver's current route completion status including stops completed and remaining."
tags:
- delivery
- tracking
- operations
capability:
exposes:
- type: mcp
namespace: route-status
port: 8080
tools:
- name: get-route-status
description: "Get driver route status."
inputParameters:
- name: driver_id
in: body
type: string
- name: date
in: body
type: string
call: "dispatch-api.get-route-status"
with:
driver: "{{driver_id}}"
date: "{{date}}"
outputParameters:
- name: completed
type: number
mapping: "$.stopsCompleted"
- name: remaining
type: number
mapping: "$.stopsRemaining"
- name: est_completion
type: string
mapping: "$.estimatedCompletion"
consumes:
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_dispatch_token"
resources:
- name: route-status
path: "/drivers/{{driver}}/route-status"
inputParameters:
- name: driver
in: path
operations:
- name: get-route-status
method: GET
Processes driver safety events by creating incident records, notifying safety team, and logging in HR system.
naftiko: "0.5"
info:
label: "Driver Safety Event Orchestrator"
description: "Processes driver safety events by creating incident records, notifying safety team, and logging in HR system."
tags:
- safety
- fleet-management
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: driver-safety
port: 8080
tools:
- name: report-event
description: "Report driver safety event."
inputParameters:
- name: driver_id
in: body
type: string
- name: event_type
in: body
type: string
- name: station
in: body
type: string
- name: description
in: body
type: string
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Driver safety: {{event_type}} at {{station}}"
category: "safety"
priority: "2"
- name: notify-safety
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{safety_channel}}"
text: "Driver safety event at {{station}}: {{event_type}} — {{description}}"
- name: log-hr
type: call
call: "workday.create-event"
with:
employee: "{{driver_id}}"
type: "{{event_type}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
- type: http
namespace: workday
baseUri: "https://wd5-services.fedex.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: events
path: "/safety/events"
operations:
- name: create-event
method: POST
When an employee termination is recorded in Workday, disables the Azure AD account, revokes Okta sessions, and opens a ServiceNow offboarding ticket.
naftiko: "0.5"
info:
label: "Employee Offboarding Workflow"
description: "When an employee termination is recorded in Workday, disables the Azure AD account, revokes Okta sessions, and opens a ServiceNow offboarding ticket."
tags:
- hr
- offboarding
- workday
- azure-ad
- servicenow
- identity
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, disable the Azure AD account, revoke all Okta sessions, and open a ServiceNow offboarding ticket. Use immediately upon confirmed employee separation."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the departing employee."
- name: termination_date
in: body
type: string
description: "The employee's last day in YYYY-MM-DD format."
steps:
- name: get-worker
type: call
call: "workday-off.get-worker"
with:
worker_id: "{{employee_id}}"
- name: disable-ad-account
type: call
call: "azure-ad-off.disable-user"
with:
user_id: "{{get-worker.azure_object_id}}"
- name: open-offboard-ticket
type: call
call: "servicenow-off.create-incident"
with:
category: "hr_offboarding"
short_description: "Offboarding: {{get-worker.full_name}} — last day {{termination_date}}"
assignment_group: "IT_Security"
consumes:
- type: http
namespace: workday-off
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/fedex/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azure-ad-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.azure_ad_token"
resources:
- name: users
path: "/users/{{user_id}}"
inputParameters:
- name: user_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow-off
baseUri: "https://fedex.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
When a new hire record is created in Workday, opens an IT provisioning ticket in ServiceNow, provisions an Azure AD account, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "When a new hire record is created in Workday, opens an IT provisioning ticket in ServiceNow, provisions an Azure AD account, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- azure-ad
- 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 across ServiceNow, Azure AD, and Microsoft Teams. Use when a new hire is confirmed and IT provisioning must begin."
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: "The employee's start date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-ad-account
type: call
call: "azure-ad.create-user"
with:
display_name: "{{get-employee.full_name}}"
mail_nickname: "{{get-employee.preferred_name}}"
department: "{{get-employee.department}}"
- name: open-it-ticket
type: call
call: "servicenow.create-incident"
with:
category: "hr_onboarding"
short_description: "New hire IT setup: {{get-employee.full_name}} — start {{start_date}}"
assignment_group: "IT_Onboarding"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to FedEx, {{get-employee.first_name}}! Your IT ticket is {{open-it-ticket.number}}. Your first day is {{start_date}}."
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: "/fedex/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azure-ad
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.azure_ad_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Monitors electric vehicle charging status and battery levels across the FedEx EV fleet.
naftiko: "0.5"
info:
label: "EV Fleet Charging Status"
description: "Monitors electric vehicle charging status and battery levels across the FedEx EV fleet."
tags:
- fleet-management
- sustainability
- monitoring
capability:
exposes:
- type: mcp
namespace: ev-fleet
port: 8080
tools:
- name: get-ev-status
description: "Get EV fleet charging status."
inputParameters:
- name: station
in: body
type: string
call: "fleet-api.get-ev-status"
with:
station: "{{station}}"
outputParameters:
- name: total_evs
type: number
mapping: "$.totalEVs"
- name: charging
type: number
mapping: "$.charging"
- name: avg_battery
type: number
mapping: "$.avgBatteryPercent"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_fleet_token"
resources:
- name: ev
path: "/stations/{{station}}/ev-status"
inputParameters:
- name: station
in: path
operations:
- name: get-ev-status
method: GET
Retrieves real-time sort progress at FedEx Express superhubs (Memphis, Indianapolis).
naftiko: "0.5"
info:
label: "Express Hub Sort Status"
description: "Retrieves real-time sort progress at FedEx Express superhubs (Memphis, Indianapolis)."
tags:
- operations
- sorting
- tracking
capability:
exposes:
- type: mcp
namespace: hub-sort
port: 8080
tools:
- name: get-sort-status
description: "Get hub sort status."
inputParameters:
- name: hub
in: body
type: string
description: "Hub (MEM, IND)."
- name: sort_wave
in: body
type: string
call: "ops-api.get-sort-status"
with:
hub: "{{hub}}"
wave: "{{sort_wave}}"
outputParameters:
- name: progress_pct
type: number
mapping: "$.progressPercent"
- name: packages_sorted
type: number
mapping: "$.packagesSorted"
- name: est_completion
type: string
mapping: "$.estimatedCompletion"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: sort
path: "/hubs/{{hub}}/sort-status"
inputParameters:
- name: hub
in: path
operations:
- name: get-sort-status
method: GET
Retrieves maintenance status for FedEx cargo aircraft.
naftiko: "0.5"
info:
label: "Aircraft Maintenance Check"
description: "Retrieves maintenance status for FedEx cargo aircraft."
tags:
- maintenance
- flight-operations
- safety
capability:
exposes:
- type: mcp
namespace: aircraft-mx
port: 8080
tools:
- name: get-mx-status
description: "Check aircraft maintenance status."
inputParameters:
- name: tail_number
in: body
type: string
call: "mx-api.get-status"
with:
tail: "{{tail_number}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: open_items
type: array
mapping: "$.openItems"
- name: next_check
type: string
mapping: "$.nextCheck"
consumes:
- type: http
namespace: mx-api
baseUri: "https://aircraft-mx.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_aircraft_mx_token"
resources:
- name: aircraft
path: "/aircraft/{{tail}}/status"
inputParameters:
- name: tail
in: path
operations:
- name: get-status
method: GET
Processes damage or loss claims for FedEx Freight LTL shipments.
naftiko: "0.5"
info:
label: "Freight Claims Processing"
description: "Processes damage or loss claims for FedEx Freight LTL shipments."
tags:
- freight
- customer-service
- claims
capability:
exposes:
- type: mcp
namespace: freight-claims
port: 8080
tools:
- name: file-freight-claim
description: "File a freight claim."
inputParameters:
- name: pro_number
in: body
type: string
- name: claim_type
in: body
type: string
- name: amount
in: body
type: number
call: "claims-api.create-freight-claim"
with:
pro: "{{pro_number}}"
type: "{{claim_type}}"
amount: "{{amount}}"
outputParameters:
- name: claim_id
type: string
mapping: "$.claimId"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: claims-api
baseUri: "https://claims.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_claims_token"
resources:
- name: freight-claims
path: "/freight/claims"
operations:
- name: create-freight-claim
method: POST
Creates a FedEx Freight LTL shipment booking with origin, destination, and commodity details.
naftiko: "0.5"
info:
label: "Freight Shipment Booking"
description: "Creates a FedEx Freight LTL shipment booking with origin, destination, and commodity details."
tags:
- freight
- logistics
- booking
capability:
exposes:
- type: mcp
namespace: freight
port: 8080
tools:
- name: book-freight
description: "Book a freight shipment."
inputParameters:
- name: shipper
in: body
type: string
- name: origin_zip
in: body
type: string
- name: dest_zip
in: body
type: string
- name: weight_lbs
in: body
type: number
- name: freight_class
in: body
type: string
call: "freight-api.create-shipment"
with:
shipper: "{{shipper}}"
origin: "{{origin_zip}}"
dest: "{{dest_zip}}"
weight: "{{weight_lbs}}"
class: "{{freight_class}}"
outputParameters:
- name: pro_number
type: string
mapping: "$.proNumber"
- name: pickup_date
type: string
mapping: "$.pickupDate"
consumes:
- type: http
namespace: freight-api
baseUri: "https://api.fedex.com/ship/v1/freight"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: shipments
path: "/shipments"
operations:
- name: create-shipment
method: POST
Generates fuel cost analysis for FedEx delivery and air fleet.
naftiko: "0.5"
info:
label: "Fleet Fuel Cost Report"
description: "Generates fuel cost analysis for FedEx delivery and air fleet."
tags:
- fleet-management
- analytics
- fuel
capability:
exposes:
- type: mcp
namespace: fuel
port: 8080
tools:
- name: get-fuel-report
description: "Get fuel cost report."
inputParameters:
- name: fleet_type
in: body
type: string
description: "Type (ground, express, freight)."
- name: period
in: body
type: string
call: "analytics-api.get-fuel"
with:
fleet: "{{fleet_type}}"
period: "{{period}}"
outputParameters:
- name: total_cost
type: number
mapping: "$.totalCost"
- name: cost_per_mile
type: number
mapping: "$.costPerMile"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: fuel
path: "/fuel/cost-analysis"
operations:
- name: get-fuel
method: POST
Retrieves performance metrics for FedEx Ground Independent Service Providers (ISPs).
naftiko: "0.5"
info:
label: "Ground Contractor Performance Report"
description: "Retrieves performance metrics for FedEx Ground Independent Service Providers (ISPs)."
tags:
- operations
- analytics
- ground
capability:
exposes:
- type: mcp
namespace: contractor
port: 8080
tools:
- name: get-performance
description: "Get ISP performance."
inputParameters:
- name: contractor_id
in: body
type: string
- name: period
in: body
type: string
call: "ops-api.get-isp-metrics"
with:
contractor: "{{contractor_id}}"
period: "{{period}}"
outputParameters:
- name: otd_rate
type: number
mapping: "$.onTimeRate"
- name: damage_rate
type: number
mapping: "$.damageRate"
- name: complaints
type: number
mapping: "$.customerComplaints"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: isp
path: "/contractors/{{contractor}}/metrics"
inputParameters:
- name: contractor
in: path
operations:
- name: get-isp-metrics
method: GET
Calculates ground transit time between two ZIP codes.
naftiko: "0.5"
info:
label: "Ground Network Transit Time"
description: "Calculates ground transit time between two ZIP codes."
tags:
- logistics
- ground
- customer-service
capability:
exposes:
- type: mcp
namespace: transit
port: 8080
tools:
- name: get-transit-time
description: "Get ground transit time."
inputParameters:
- name: origin_zip
in: body
type: string
- name: dest_zip
in: body
type: string
call: "rate-api.get-transit"
with:
origin: "{{origin_zip}}"
dest: "{{dest_zip}}"
outputParameters:
- name: transit_days
type: number
mapping: "$.transitDays"
- name: delivery_date
type: string
mapping: "$.estimatedDelivery"
consumes:
- type: http
namespace: rate-api
baseUri: "https://api.fedex.com/rate/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: transit
path: "/transit-times"
operations:
- name: get-transit
method: POST
Validates hazardous materials shipments against DOT/IATA regulations.
naftiko: "0.5"
info:
label: "Hazmat Shipment Validation"
description: "Validates hazardous materials shipments against DOT/IATA regulations."
tags:
- compliance
- safety
- logistics
capability:
exposes:
- type: mcp
namespace: hazmat
port: 8080
tools:
- name: validate-hazmat
description: "Validate hazmat shipment."
inputParameters:
- name: tracking_number
in: body
type: string
- name: un_number
in: body
type: string
- name: packaging_group
in: body
type: string
call: "compliance-api.validate"
with:
tracking: "{{tracking_number}}"
un: "{{un_number}}"
packaging: "{{packaging_group}}"
outputParameters:
- name: compliant
type: boolean
mapping: "$.isCompliant"
- name: violations
type: array
mapping: "$.violations"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://compliance.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_compliance_token"
resources:
- name: hazmat
path: "/hazmat/validate"
operations:
- name: validate
method: POST
Retrieves inbound/outbound aircraft schedule at a FedEx Express hub.
naftiko: "0.5"
info:
label: "Hub Aircraft Schedule"
description: "Retrieves inbound/outbound aircraft schedule at a FedEx Express hub."
tags:
- flight-operations
- cargo
- scheduling
capability:
exposes:
- type: mcp
namespace: hub-schedule
port: 8080
tools:
- name: get-schedule
description: "Get hub aircraft schedule."
inputParameters:
- name: hub
in: body
type: string
- name: date
in: body
type: string
call: "flight-api.get-hub-schedule"
with:
hub: "{{hub}}"
date: "{{date}}"
outputParameters:
- name: inbound
type: array
mapping: "$.inboundFlights"
- name: outbound
type: array
mapping: "$.outboundFlights"
consumes:
- type: http
namespace: flight-api
baseUri: "https://flight-ops.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_flight_ops_token"
resources:
- name: schedules
path: "/hubs/{{hub}}/schedule"
inputParameters:
- name: hub
in: path
operations:
- name: get-hub-schedule
method: GET
Creates an international document shipment (no customs value).
naftiko: "0.5"
info:
label: "International Document Shipment"
description: "Creates an international document shipment (no customs value)."
tags:
- logistics
- international
- shipping
capability:
exposes:
- type: mcp
namespace: intl-docs
port: 8080
tools:
- name: ship-documents
description: "Create international document shipment."
inputParameters:
- name: shipper
in: body
type: string
- name: recipient_country
in: body
type: string
- name: service
in: body
type: string
call: "ship-api.create-doc-shipment"
with:
shipper: "{{shipper}}"
country: "{{recipient_country}}"
service: "{{service}}"
outputParameters:
- name: tracking
type: string
mapping: "$.trackingNumber"
- name: label
type: string
mapping: "$.labelUrl"
consumes:
- type: http
namespace: ship-api
baseUri: "https://api.fedex.com/ship/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: intl
path: "/international/documents"
operations:
- name: create-doc-shipment
method: POST
Looks up import duties and tariffs for international shipments.
naftiko: "0.5"
info:
label: "International Tariff Lookup"
description: "Looks up import duties and tariffs for international shipments."
tags:
- customs
- compliance
- international
capability:
exposes:
- type: mcp
namespace: tariffs
port: 8080
tools:
- name: get-tariff
description: "Look up import tariff."
inputParameters:
- name: hs_code
in: body
type: string
- name: destination_country
in: body
type: string
- name: value
in: body
type: number
call: "trade-api.get-tariff"
with:
hs_code: "{{hs_code}}"
country: "{{destination_country}}"
value: "{{value}}"
outputParameters:
- name: duty_rate
type: number
mapping: "$.dutyRate"
- name: estimated_duty
type: number
mapping: "$.estimatedDuty"
- name: taxes
type: number
mapping: "$.estimatedTaxes"
consumes:
- type: http
namespace: trade-api
baseUri: "https://trade.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_trade_token"
resources:
- name: tariffs
path: "/tariffs/lookup"
operations:
- name: get-tariff
method: POST
Retrieves last-mile delivery status for a package including driver location and estimated delivery window.
naftiko: "0.5"
info:
label: "Last Mile Delivery Status"
description: "Retrieves last-mile delivery status for a package including driver location and estimated delivery window."
tags:
- logistics
- delivery
- tracking
capability:
exposes:
- type: mcp
namespace: last-mile
port: 8080
tools:
- name: get-delivery-status
description: "Get last-mile delivery status."
inputParameters:
- name: tracking_number
in: body
type: string
call: "delivery-api.get-status"
with:
tracking: "{{tracking_number}}"
outputParameters:
- name: status
type: string
mapping: "$.deliveryStatus"
- name: driver_eta
type: string
mapping: "$.driverETA"
- name: stop_number
type: number
mapping: "$.currentStop"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: status
path: "/packages/{{tracking}}/delivery"
inputParameters:
- name: tracking
in: path
operations:
- name: get-status
method: GET
Retrieves linehaul truck schedule between hubs.
naftiko: "0.5"
info:
label: "Linehaul Schedule Lookup"
description: "Retrieves linehaul truck schedule between hubs."
tags:
- logistics
- ground
- scheduling
capability:
exposes:
- type: mcp
namespace: linehaul
port: 8080
tools:
- name: get-schedule
description: "Get linehaul schedule."
inputParameters:
- name: origin_hub
in: body
type: string
- name: dest_hub
in: body
type: string
call: "ops-api.get-linehaul"
with:
origin: "{{origin_hub}}"
dest: "{{dest_hub}}"
outputParameters:
- name: schedules
type: array
mapping: "$.schedules"
- name: next_departure
type: string
mapping: "$.nextDeparture"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: linehaul
path: "/linehaul/schedules"
operations:
- name: get-linehaul
method: POST
Publishes a new FedEx job requisition from Workday Recruiting to LinkedIn Jobs and returns the LinkedIn post ID.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting Publisher"
description: "Publishes a new FedEx job requisition from Workday Recruiting to LinkedIn Jobs and returns the LinkedIn post ID."
tags:
- hr
- recruiting
- linkedin
- workday
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: publish-job-to-linkedin
description: "Given a Workday job requisition ID, fetch the job details from Workday Recruiting and post the role to the FedEx LinkedIn company page. Use when a recruiter approves a role for external publication."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID to publish."
steps:
- name: get-requisition
type: call
call: "workday-recruit.get-job-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: post-to-linkedin
type: call
call: "linkedin.create-job-posting"
with:
title: "{{get-requisition.job_title}}"
description: "{{get-requisition.job_description}}"
location: "{{get-requisition.location}}"
company_id: "$secrets.linkedin_company_id"
consumes:
- type: http
namespace: workday-recruit
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/fedex/jobRequisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/simpleJobPostings"
operations:
- name: create-job-posting
method: POST
Finds nearest FedEx drop-off or pickup locations.
naftiko: "0.5"
info:
label: "FedEx Location Finder"
description: "Finds nearest FedEx drop-off or pickup locations."
tags:
- customer-service
- logistics
capability:
exposes:
- type: mcp
namespace: locations
port: 8080
tools:
- name: find-locations
description: "Find nearby FedEx locations."
inputParameters:
- name: zip_code
in: body
type: string
- name: location_type
in: body
type: string
description: "Type (dropoff, office, ship_center)."
call: "location-api.search"
with:
zip: "{{zip_code}}"
type: "{{location_type}}"
outputParameters:
- name: locations
type: array
mapping: "$.locations"
- name: nearest
type: string
mapping: "$.nearestAddress"
consumes:
- type: http
namespace: location-api
baseUri: "https://api.fedex.com/location/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: search
path: "/locations"
operations:
- name: search
method: POST
Queries Microsoft Graph for FedEx Microsoft 365 license assignment and usage data and exports a summary for IT finance chargeback reporting.
naftiko: "0.5"
info:
label: "Microsoft 365 License Usage Report"
description: "Queries Microsoft Graph for FedEx Microsoft 365 license assignment and usage data and exports a summary for IT finance chargeback reporting."
tags:
- identity
- microsoft-365
- reporting
- it-finance
capability:
exposes:
- type: mcp
namespace: m365-reporting
port: 8080
tools:
- name: get-license-usage-report
description: "Query Microsoft Graph for current Microsoft 365 license assignment counts by SKU. Returns assigned, available, and consumed license counts. Use for monthly IT license chargeback and compliance reporting."
call: "msgraph-licenses.get-subscribed-skus"
outputParameters:
- name: skus
type: array
mapping: "$.value"
- name: total_assigned
type: number
mapping: "$.value[0].consumedUnits"
consumes:
- type: http
namespace: msgraph-licenses
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: subscribed-skus
path: "/subscribedSkus"
operations:
- name: get-subscribed-skus
method: GET
Aggregates daily operational metrics from Splunk and publishes a formatted summary digest to a designated Microsoft Teams channel for FedEx operations managers.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Digest Publisher"
description: "Aggregates daily operational metrics from Splunk and publishes a formatted summary digest to a designated Microsoft Teams channel for FedEx operations managers."
tags:
- operations
- reporting
- splunk
- microsoft-teams
- digest
capability:
exposes:
- type: mcp
namespace: ops-reporting
port: 8080
tools:
- name: publish-ops-digest
description: "Given a date and target Teams channel, query Splunk for daily shipment volumes and error rates, then post a formatted digest to the operations Teams channel. Use each morning to distribute the prior-day operations summary."
inputParameters:
- name: report_date
in: body
type: string
description: "The date to report on in YYYY-MM-DD format."
- name: channel_id
in: body
type: string
description: "The Microsoft Teams channel ID to post the digest to."
steps:
- name: fetch-metrics
type: call
call: "splunk-digest.run-search"
with:
search: "search index=shipment_ops date_day={{report_date}} | stats sum(volume) as total_shipments, avg(error_rate) as avg_error_rate by region"
earliest_time: "-24h"
latest_time: "now"
- name: post-digest
type: call
call: "msteams-digest.send-message"
with:
channel_id: "{{channel_id}}"
text: "FedEx Daily Ops Digest — {{report_date}}: Shipments processed: {{fetch-metrics.total_shipments}}. Avg error rate: {{fetch-metrics.avg_error_rate}}%."
consumes:
- type: http
namespace: splunk-digest
baseUri: "https://fedex-splunk.example.com:8089"
authentication:
type: basic
username: "$secrets.splunk_user"
password: "$secrets.splunk_password"
resources:
- name: search-jobs
path: "/services/search/jobs/export"
operations:
- name: run-search
method: POST
- type: http
namespace: msteams-digest
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates average cost per package across the FedEx network by service type.
naftiko: "0.5"
info:
label: "Network Cost Per Package Report"
description: "Calculates average cost per package across the FedEx network by service type."
tags:
- analytics
- cost-optimization
- operations
capability:
exposes:
- type: mcp
namespace: cost-analysis
port: 8080
tools:
- name: get-cpp
description: "Get cost per package."
inputParameters:
- name: service_type
in: body
type: string
- name: period
in: body
type: string
call: "analytics-api.get-cpp"
with:
service: "{{service_type}}"
period: "{{period}}"
outputParameters:
- name: cost_per_package
type: number
mapping: "$.costPerPackage"
- name: trend
type: string
mapping: "$.trend"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: cpp
path: "/cost/per-package"
operations:
- name: get-cpp
method: POST
Assesses weather impact on the FedEx network by checking forecasts, identifying affected hubs, and notifying operations.
naftiko: "0.5"
info:
label: "Network Weather Impact Orchestrator"
description: "Assesses weather impact on the FedEx network by checking forecasts, identifying affected hubs, and notifying operations."
tags:
- operations
- weather
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: weather
port: 8080
tools:
- name: assess-weather
description: "Assess weather impact on network."
inputParameters:
- name: region
in: body
type: string
- name: hours
in: body
type: number
steps:
- name: get-forecast
type: call
call: "weather-api.get-forecast"
with:
region: "{{region}}"
hours: "{{hours}}"
- name: get-affected-hubs
type: call
call: "ops-api.get-affected-facilities"
with:
region: "{{region}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Weather: {{get-forecast.severity}} in {{region}} — {{get-affected-hubs.count}} facilities"
priority: "2"
- name: notify
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{noc_channel}}"
text: "Weather alert: {{region}} — {{get-forecast.summary}} | {{get-affected-hubs.count}} hubs impacted"
consumes:
- type: http
namespace: weather-api
baseUri: "https://weather.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_weather_token"
resources:
- name: forecast
path: "/forecast/{{region}}"
inputParameters:
- name: region
in: path
operations:
- name: get-forecast
method: GET
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: affected
path: "/weather/affected-facilities"
operations:
- name: get-affected-facilities
method: POST
- type: http
namespace: servicenow
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Generates on-time delivery performance metrics for a station or region.
naftiko: "0.5"
info:
label: "On-Time Delivery Performance Report"
description: "Generates on-time delivery performance metrics for a station or region."
tags:
- analytics
- delivery
- operations
capability:
exposes:
- type: mcp
namespace: otd-analytics
port: 8080
tools:
- name: get-otd-report
description: "Get on-time delivery report."
inputParameters:
- name: station
in: body
type: string
- name: period
in: body
type: string
call: "analytics-api.get-otd"
with:
station: "{{station}}"
period: "{{period}}"
outputParameters:
- name: otd_rate
type: number
mapping: "$.onTimeRate"
- name: total_delivered
type: number
mapping: "$.totalDelivered"
- name: late_count
type: number
mapping: "$.lateCount"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: otd
path: "/delivery/on-time"
operations:
- name: get-otd
method: POST
Compiles daily network operations briefing from volume, weather, and staffing data.
naftiko: "0.5"
info:
label: "Operations Daily Briefing Orchestrator"
description: "Compiles daily network operations briefing from volume, weather, and staffing data."
tags:
- operations
- analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: briefing
port: 8080
tools:
- name: generate-briefing
description: "Generate daily ops briefing."
inputParameters:
- name: date
in: body
type: string
steps:
- name: volume
type: call
call: "analytics-api.get-daily-volume"
with:
date: "{{date}}"
- name: weather
type: call
call: "weather-api.get-network"
with:
date: "{{date}}"
- name: staffing
type: call
call: "workforce-api.get-summary"
with:
date: "{{date}}"
- name: post
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{noc_channel}}"
text: "DAILY OPS {{date}} | Volume: {{volume.total}} | Weather impacts: {{weather.alerts}} | Staffing: {{staffing.coverage}}%"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: daily
path: "/volume/daily"
operations:
- name: get-daily-volume
method: POST
- type: http
namespace: weather-api
baseUri: "https://weather.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_weather_token"
resources:
- name: network
path: "/network/outlook"
operations:
- name: get-network
method: POST
- type: http
namespace: workforce-api
baseUri: "https://workforce.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_workforce_token"
resources:
- name: summary
path: "/staffing/summary"
operations:
- name: get-summary
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Submits a supplier invoice to Oracle ERP for approval, then updates the associated purchase order status and notifies the requestor via Microsoft Teams.
naftiko: "0.5"
info:
label: "Oracle ERP Invoice Processing"
description: "Submits a supplier invoice to Oracle ERP for approval, then updates the associated purchase order status and notifies the requestor via Microsoft Teams."
tags:
- finance
- erp
- oracle
- accounts-payable
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ap-processing
port: 8080
tools:
- name: submit-invoice
description: "Given supplier invoice details and a linked PO number, create the invoice record in Oracle ERP, update PO status, and send a Teams notification to the finance approver. Use during accounts-payable processing."
inputParameters:
- name: po_number
in: body
type: string
description: "The Oracle ERP purchase order number the invoice is billed against."
- name: invoice_number
in: body
type: string
description: "The supplier's invoice number."
- name: amount
in: body
type: number
description: "Invoice total amount in the PO currency."
- name: approver_upn
in: body
type: string
description: "Microsoft Teams UPN of the finance approver."
steps:
- name: create-invoice
type: call
call: "oracle-ap.create-invoice"
with:
po_number: "{{po_number}}"
invoice_number: "{{invoice_number}}"
amount: "{{amount}}"
- name: notify-approver
type: call
call: "msteams-ap.send-message"
with:
recipient_upn: "{{approver_upn}}"
text: "Invoice {{invoice_number}} for PO {{po_number}} (${{amount}}) submitted in Oracle ERP. Invoice ID: {{create-invoice.invoice_id}}. Please approve."
consumes:
- type: http
namespace: oracle-ap
baseUri: "https://fedex-erp.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
authentication:
type: basic
username: "$secrets.oracle_erp_user"
password: "$secrets.oracle_erp_password"
resources:
- name: invoices
path: "/payablesInvoices"
operations:
- name: create-invoice
method: POST
- type: http
namespace: msteams-ap
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chat-messages
path: "/chats"
operations:
- name: send-message
method: POST
Looks up a FedEx Oracle ERP purchase order by number and returns header status, supplier name, total value, and open line items.
naftiko: "0.5"
info:
label: "Oracle ERP Purchase Order Lookup"
description: "Looks up a FedEx Oracle ERP purchase order by number and returns header status, supplier name, total value, and open line items."
tags:
- finance
- erp
- oracle
- procurement
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-purchase-order
description: "Given an Oracle ERP purchase order number, return status, supplier name, total value, and currency. Use when auditing procurement spend or resolving supplier payment queries."
inputParameters:
- name: po_number
in: body
type: string
description: "The Oracle ERP purchase order number."
call: "oracle-erp.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.result[0].PO_STATUS"
- name: supplier
type: string
mapping: "$.result[0].VENDOR_NAME"
- name: total_value
type: number
mapping: "$.result[0].AMOUNT"
- name: currency
type: string
mapping: "$.result[0].CURRENCY_CODE"
consumes:
- type: http
namespace: oracle-erp
baseUri: "https://fedex-erp.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
authentication:
type: basic
username: "$secrets.oracle_erp_user"
password: "$secrets.oracle_erp_password"
resources:
- name: purchase-orders
path: "/purchaseOrders/{{po_number}}"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves dimensional weight scan results for a package.
naftiko: "0.5"
info:
label: "Package Dimension Scan"
description: "Retrieves dimensional weight scan results for a package."
tags:
- logistics
- operations
- billing
capability:
exposes:
- type: mcp
namespace: dim-scan
port: 8080
tools:
- name: get-dimensions
description: "Get package dimensions."
inputParameters:
- name: tracking_number
in: body
type: string
call: "ops-api.get-dimensions"
with:
tracking: "{{tracking_number}}"
outputParameters:
- name: length
type: number
mapping: "$.length"
- name: width
type: number
mapping: "$.width"
- name: height
type: number
mapping: "$.height"
- name: dim_weight
type: number
mapping: "$.dimensionalWeight"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: dimensions
path: "/packages/{{tracking}}/dimensions"
inputParameters:
- name: tracking
in: path
operations:
- name: get-dimensions
method: GET
Holds a package at a FedEx location for customer pickup.
naftiko: "0.5"
info:
label: "Package Hold at Location Request"
description: "Holds a package at a FedEx location for customer pickup."
tags:
- logistics
- customer-service
capability:
exposes:
- type: mcp
namespace: hold
port: 8080
tools:
- name: hold-package
description: "Hold package at location."
inputParameters:
- name: tracking_number
in: body
type: string
- name: location_id
in: body
type: string
call: "delivery-api.hold-at-location"
with:
tracking: "{{tracking_number}}"
location: "{{location_id}}"
outputParameters:
- name: status
type: string
mapping: "$.holdStatus"
- name: pickup_deadline
type: string
mapping: "$.pickupDeadline"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: hold
path: "/packages/hold"
operations:
- name: hold-at-location
method: POST
Processes a package redirect/hold-at-location request for an in-transit package.
naftiko: "0.5"
info:
label: "Package Redirect Request"
description: "Processes a package redirect/hold-at-location request for an in-transit package."
tags:
- logistics
- customer-service
- delivery
capability:
exposes:
- type: mcp
namespace: redirect
port: 8080
tools:
- name: redirect-package
description: "Redirect an in-transit package."
inputParameters:
- name: tracking_number
in: body
type: string
- name: redirect_type
in: body
type: string
description: "Type (hold_at_location, redirect_address, vacation_hold)."
- name: new_address
in: body
type: string
call: "delivery-api.redirect"
with:
tracking: "{{tracking_number}}"
type: "{{redirect_type}}"
address: "{{new_address}}"
outputParameters:
- name: status
type: string
mapping: "$.redirectStatus"
- name: new_eta
type: string
mapping: "$.newETA"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: redirect
path: "/packages/redirect"
operations:
- name: redirect
method: POST
Retrieves real-time tracking status for a FedEx package by tracking number.
naftiko: "0.5"
info:
label: "Package Tracking Lookup"
description: "Retrieves real-time tracking status for a FedEx package by tracking number."
tags:
- logistics
- tracking
- operations
capability:
exposes:
- type: mcp
namespace: tracking
port: 8080
tools:
- name: track-package
description: "Track a FedEx package."
inputParameters:
- name: tracking_number
in: body
type: string
description: "FedEx tracking number."
call: "tracking-api.get-status"
with:
tracking: "{{tracking_number}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: location
type: string
mapping: "$.currentLocation"
- name: eta
type: string
mapping: "$.estimatedDelivery"
consumes:
- type: http
namespace: tracking-api
baseUri: "https://api.fedex.com/track/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: track
path: "/trackingnumbers"
operations:
- name: get-status
method: POST
Identifies weight discrepancies between shipper-declared and actual scanned weights.
naftiko: "0.5"
info:
label: "Package Weight Discrepancy Report"
description: "Identifies weight discrepancies between shipper-declared and actual scanned weights."
tags:
- billing
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: weight-audit
port: 8080
tools:
- name: get-discrepancies
description: "Get weight discrepancies."
inputParameters:
- name: account_number
in: body
type: string
- name: period
in: body
type: string
call: "billing-api.get-weight-discrepancies"
with:
account: "{{account_number}}"
period: "{{period}}"
outputParameters:
- name: discrepancies
type: array
mapping: "$.discrepancies"
- name: total_adjustment
type: number
mapping: "$.totalAdjustment"
consumes:
- type: http
namespace: billing-api
baseUri: "https://billing.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_billing_token"
resources:
- name: weight
path: "/weight-audit"
operations:
- name: get-weight-discrepancies
method: POST
Plans for peak volume surges by forecasting demand, assigning extra staff, and scheduling additional vehicles.
naftiko: "0.5"
info:
label: "Peak Surge Planning Orchestrator"
description: "Plans for peak volume surges by forecasting demand, assigning extra staff, and scheduling additional vehicles."
tags:
- operations
- capacity
- logistics
- workforce-management
capability:
exposes:
- type: mcp
namespace: surge
port: 8080
tools:
- name: plan-surge
description: "Plan for peak surge."
inputParameters:
- name: station
in: body
type: string
- name: surge_date
in: body
type: string
steps:
- name: forecast
type: call
call: "analytics-api.get-forecast"
with:
facility: "{{station}}"
date: "{{surge_date}}"
- name: staff
type: call
call: "workforce-api.request-additional"
with:
station: "{{station}}"
date: "{{surge_date}}"
volume: "{{forecast.predicted_volume}}"
- name: vehicles
type: call
call: "fleet-api.request-additional"
with:
station: "{{station}}"
date: "{{surge_date}}"
- name: notify
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{ops_channel}}"
text: "Surge plan for {{station}} on {{surge_date}}: Vol={{forecast.predicted_volume}} | Extra staff: {{staff.assigned}} | Extra vehicles: {{vehicles.assigned}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: forecast
path: "/volume/forecast"
operations:
- name: get-forecast
method: POST
- type: http
namespace: workforce-api
baseUri: "https://workforce.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_workforce_token"
resources:
- name: additional
path: "/staffing/request-additional"
operations:
- name: request-additional
method: POST
- type: http
namespace: fleet-api
baseUri: "https://fleet.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_fleet_token"
resources:
- name: additional
path: "/vehicles/request-additional"
operations:
- name: request-additional
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Schedules a FedEx pickup at a customer location.
naftiko: "0.5"
info:
label: "Pickup Scheduling"
description: "Schedules a FedEx pickup at a customer location."
tags:
- logistics
- customer-service
- scheduling
capability:
exposes:
- type: mcp
namespace: pickup
port: 8080
tools:
- name: schedule-pickup
description: "Schedule a pickup."
inputParameters:
- name: account_number
in: body
type: string
- name: address
in: body
type: string
- name: ready_time
in: body
type: string
- name: package_count
in: body
type: number
call: "pickup-api.create"
with:
account: "{{account_number}}"
address: "{{address}}"
ready: "{{ready_time}}"
packages: "{{package_count}}"
outputParameters:
- name: pickup_id
type: string
mapping: "$.pickupId"
- name: window
type: string
mapping: "$.pickupWindow"
consumes:
- type: http
namespace: pickup-api
baseUri: "https://api.fedex.com/pickup/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: pickups
path: "/pickups"
operations:
- name: create
method: POST
Retrieves pilot crew assignments for FedEx Express cargo flights.
naftiko: "0.5"
info:
label: "Pilot Crew Scheduling Lookup"
description: "Retrieves pilot crew assignments for FedEx Express cargo flights."
tags:
- crew-scheduling
- flight-operations
capability:
exposes:
- type: mcp
namespace: crew
port: 8080
tools:
- name: get-crew
description: "Get flight crew assignment."
inputParameters:
- name: flight_number
in: body
type: string
- name: date
in: body
type: string
call: "crew-api.get-assignment"
with:
flight: "{{flight_number}}"
date: "{{date}}"
outputParameters:
- name: captain
type: string
mapping: "$.captain"
- name: first_officer
type: string
mapping: "$.firstOfficer"
consumes:
- type: http
namespace: crew-api
baseUri: "https://crew.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_crew_token"
resources:
- name: assignments
path: "/flights/{{flight}}/crew"
inputParameters:
- name: flight
in: path
operations:
- name: get-assignment
method: GET
Triggers a scheduled dataset refresh in Power BI for FedEx operational dashboards and checks refresh status.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Trigger"
description: "Triggers a scheduled dataset refresh in Power BI for FedEx operational dashboards and checks refresh status."
tags:
- data
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: trigger-dataset-refresh
description: "Given a Power BI workspace ID and dataset ID, trigger an on-demand dataset refresh. Use when operational data must be updated outside the scheduled refresh window."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace (group) ID containing the dataset."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
outputParameters:
- name: refresh_id
type: string
mapping: "$.requestId"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Creates a return shipping label and schedules pickup for a customer return.
naftiko: "0.5"
info:
label: "Return Shipment Creation"
description: "Creates a return shipping label and schedules pickup for a customer return."
tags:
- logistics
- customer-service
- returns
capability:
exposes:
- type: mcp
namespace: returns
port: 8080
tools:
- name: create-return
description: "Create return shipment."
inputParameters:
- name: original_tracking
in: body
type: string
- name: return_address
in: body
type: string
- name: reason
in: body
type: string
call: "ship-api.create-return"
with:
original: "{{original_tracking}}"
address: "{{return_address}}"
reason: "{{reason}}"
outputParameters:
- name: return_tracking
type: string
mapping: "$.returnTrackingNumber"
- name: label_url
type: string
mapping: "$.labelUrl"
consumes:
- type: http
namespace: ship-api
baseUri: "https://api.fedex.com/ship/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: returns
path: "/returns"
operations:
- name: create-return
method: POST
Optimizes delivery routes for a driver by pulling stop list, weather conditions, and traffic data, then generating an optimized route sequence.
naftiko: "0.5"
info:
label: "Delivery Route Optimization Orchestrator"
description: "Optimizes delivery routes for a driver by pulling stop list, weather conditions, and traffic data, then generating an optimized route sequence."
tags:
- logistics
- route-optimization
- delivery
capability:
exposes:
- type: mcp
namespace: route-opt
port: 8080
tools:
- name: optimize-route
description: "Optimize delivery route for a driver."
inputParameters:
- name: driver_id
in: body
type: string
- name: date
in: body
type: string
- name: station
in: body
type: string
steps:
- name: get-stops
type: call
call: "dispatch-api.get-stop-list"
with:
driver: "{{driver_id}}"
date: "{{date}}"
- name: get-traffic
type: call
call: "maps-api.get-traffic"
with:
region: "{{station}}"
- name: optimize
type: call
call: "routing-api.optimize"
with:
stops: "{{get-stops.stops}}"
traffic: "{{get-traffic.conditions}}"
- name: push-route
type: call
call: "dispatch-api.update-route"
with:
driver: "{{driver_id}}"
route: "{{optimize.optimized_sequence}}"
consumes:
- type: http
namespace: dispatch-api
baseUri: "https://dispatch.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_dispatch_token"
resources:
- name: stops
path: "/drivers/{{driver}}/stops"
inputParameters:
- name: driver
in: path
operations:
- name: get-stop-list
method: GET
- name: routes
path: "/drivers/{{driver}}/route"
inputParameters:
- name: driver
in: path
operations:
- name: update-route
method: PUT
- type: http
namespace: maps-api
baseUri: "https://maps.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_maps_token"
resources:
- name: traffic
path: "/traffic/{{region}}"
inputParameters:
- name: region
in: path
operations:
- name: get-traffic
method: GET
- type: http
namespace: routing-api
baseUri: "https://routing.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_routing_token"
resources:
- name: optimize
path: "/optimize"
operations:
- name: optimize
method: POST
Creates a new SAP purchase order from a procurement request, links it to a cost center, and notifies the requester via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Purchase Order Creation"
description: "Creates a new SAP purchase order from a procurement request, links it to a cost center, and notifies the requester via Microsoft Teams."
tags:
- finance
- procurement
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: create-purchase-order
description: "Given supplier ID, cost center, and line item details, create a SAP purchase order and send a confirmation to the requester in Microsoft Teams. Use during procurement request fulfillment."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The SAP supplier/vendor number."
- name: cost_center
in: body
type: string
description: "The SAP cost center to charge the purchase to."
- name: item_description
in: body
type: string
description: "Description of the goods or services being purchased."
- name: amount
in: body
type: number
description: "Total purchase order value."
- name: requester_upn
in: body
type: string
description: "Microsoft Teams UPN of the person who submitted the request."
steps:
- name: create-po
type: call
call: "sap-po.create-purchase-order"
with:
supplier_id: "{{supplier_id}}"
cost_center: "{{cost_center}}"
item_description: "{{item_description}}"
amount: "{{amount}}"
- name: notify-requester
type: call
call: "msteams-procure.send-message"
with:
recipient_upn: "{{requester_upn}}"
text: "Your purchase request has been created as SAP PO {{create-po.po_number}} for ${{amount}}. Status: {{create-po.status}}."
consumes:
- type: http
namespace: sap-po
baseUri: "https://fedex-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"
operations:
- name: create-purchase-order
method: POST
- type: http
namespace: msteams-procure
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Queries SAP for procurement spend by cost center for a given fiscal period and returns a summary for financial reporting.
naftiko: "0.5"
info:
label: "SAP Spend Analytics Report"
description: "Queries SAP for procurement spend by cost center for a given fiscal period and returns a summary for financial reporting."
tags:
- finance
- erp
- sap
- reporting
- procurement
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: get-spend-by-cost-center
description: "Given a fiscal year, period, and optional cost center, query SAP spend data and return total commitments and actuals. Use for financial close reviews, budget variance analysis, and procurement reporting."
inputParameters:
- name: fiscal_year
in: body
type: string
description: "The SAP fiscal year (e.g., 2025)."
- name: period
in: body
type: string
description: "The fiscal period number (1-12)."
- name: cost_center
in: body
type: string
description: "Optional SAP cost center code to filter results."
call: "sap-finance.get-cost-center-spend"
with:
fiscal_year: "{{fiscal_year}}"
period: "{{period}}"
cost_center: "{{cost_center}}"
outputParameters:
- name: total_actuals
type: number
mapping: "$.d.results[0].AmountInCoCodeCurrency"
- name: currency
type: string
mapping: "$.d.results[0].CompanyCodeCurrency"
consumes:
- type: http
namespace: sap-finance
baseUri: "https://fedex-s4.sap.com/sap/opu/odata/sap/FAC_COSTCENTER_0001"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: cost-center-actuals
path: "/CostCenterActuals"
inputParameters:
- name: fiscal_year
in: query
- name: period
in: query
- name: cost_center
in: query
operations:
- name: get-cost-center-spend
method: GET
Monitors barcode scanner health across sort facilities.
naftiko: "0.5"
info:
label: "Scanner Health Monitor"
description: "Monitors barcode scanner health across sort facilities."
tags:
- operations
- monitoring
- sorting
capability:
exposes:
- type: mcp
namespace: scanner
port: 8080
tools:
- name: check-scanners
description: "Check scanner health."
inputParameters:
- name: facility
in: body
type: string
call: "ops-api.get-scanner-health"
with:
facility: "{{facility}}"
outputParameters:
- name: total
type: number
mapping: "$.totalScanners"
- name: online
type: number
mapping: "$.onlineScanners"
- name: error_rate
type: number
mapping: "$.errorRate"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: scanners
path: "/facilities/{{facility}}/scanners"
inputParameters:
- name: facility
in: path
operations:
- name: get-scanner-health
method: GET
Retrieves current service alerts and disruptions across the FedEx network.
naftiko: "0.5"
info:
label: "Service Alert Status"
description: "Retrieves current service alerts and disruptions across the FedEx network."
tags:
- operations
- customer-service
- alerts
capability:
exposes:
- type: mcp
namespace: alerts
port: 8080
tools:
- name: get-alerts
description: "Get active service alerts."
inputParameters:
- name: region
in: body
type: string
- name: service
in: body
type: string
description: "Service (Express, Ground, Freight)."
call: "ops-api.get-alerts"
with:
region: "{{region}}"
service: "{{service}}"
outputParameters:
- name: alerts
type: array
mapping: "$.activeAlerts"
- name: count
type: number
mapping: "$.alertCount"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: alerts
path: "/service-alerts"
operations:
- name: get-alerts
method: POST
Queries ServiceNow for the status of the most recent scheduled backup job and alerts the IT operations Microsoft Teams channel if the backup failed or is overdue.
naftiko: "0.5"
info:
label: "ServiceNow Backup Verification Check"
description: "Queries ServiceNow for the status of the most recent scheduled backup job and alerts the IT operations Microsoft Teams channel if the backup failed or is overdue."
tags:
- itsm
- operations
- servicenow
- microsoft-teams
- backup
capability:
exposes:
- type: mcp
namespace: backup-ops
port: 8080
tools:
- name: verify-backup-status
description: "Query ServiceNow for the latest backup job record and post a Teams alert if the most recent backup failed or has not completed within the expected window. Use as part of daily IT operations checks."
inputParameters:
- name: backup_job_name
in: body
type: string
description: "The ServiceNow CI or job name for the backup job to verify."
steps:
- name: get-backup-job
type: call
call: "servicenow-backup.get-backup-record"
with:
job_name: "{{backup_job_name}}"
- name: alert-if-failed
type: call
call: "msteams-backup.send-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
text: "Backup Check — {{backup_job_name}}: Status={{get-backup-job.status}}, Last run={{get-backup-job.last_run_date}}. Review if status is not 'Success'."
consumes:
- type: http
namespace: servicenow-backup
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: backup-records
path: "/table/scheduled_job"
inputParameters:
- name: job_name
in: query
operations:
- name: get-backup-record
method: GET
- type: http
namespace: msteams-backup
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Submits a ServiceNow change request for a FedEx IT change and routes it to the appropriate approval group based on change risk level.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Approval"
description: "Submits a ServiceNow change request for a FedEx IT change and routes it to the appropriate approval group based on change risk level."
tags:
- itsm
- change-management
- servicenow
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: create-change-request
description: "Given change details, risk level, and scheduled implementation window, create a ServiceNow change request and route it to the correct approval group. Use when planning IT or infrastructure changes in the FedEx environment."
inputParameters:
- name: short_description
in: body
type: string
description: "Brief description of the change."
- name: risk
in: body
type: string
description: "Risk level: low, medium, or high."
- name: start_date
in: body
type: string
description: "Planned implementation start in ISO 8601 format."
- name: end_date
in: body
type: string
description: "Planned implementation end in ISO 8601 format."
call: "servicenow-change.create-change"
with:
short_description: "{{short_description}}"
risk: "{{risk}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: change_number
type: string
mapping: "$.result.number"
- name: state
type: string
mapping: "$.result.state"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
Escalates a ServiceNow P1 incident for FedEx IT operations by updating priority, reassigning to the on-call team, and sending an urgent Microsoft Teams alert.
naftiko: "0.5"
info:
label: "ServiceNow Incident Escalation Handler"
description: "Escalates a ServiceNow P1 incident for FedEx IT operations by updating priority, reassigning to the on-call team, and sending an urgent Microsoft Teams alert."
tags:
- itsm
- incident-response
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: escalate-incident
description: "Given a ServiceNow incident number, escalate it to P1, reassign to the on-call group, and post an urgent alert to the IT operations Teams channel. Use when an incident crosses SLA thresholds or is confirmed as business-critical."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
- name: escalation_reason
in: body
type: string
description: "Plain-text reason for the escalation."
steps:
- name: update-incident
type: call
call: "servicenow-itsm.patch-incident"
with:
number: "{{incident_number}}"
priority: "1"
assignment_group: "IT_OnCall_Critical"
work_notes: "Escalated: {{escalation_reason}}"
- name: alert-ops-channel
type: call
call: "msteams-itsm.send-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
text: "P1 ESCALATION: {{incident_number}} has been escalated to critical. Reason: {{escalation_reason}}. Assigned to IT On-Call Critical team."
consumes:
- type: http
namespace: servicenow-itsm
baseUri: "https://fedex.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident/{{number}}"
inputParameters:
- name: number
in: path
operations:
- name: patch-incident
method: PATCH
- type: http
namespace: msteams-itsm
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Intercepts and returns or redirects a package before delivery.
naftiko: "0.5"
info:
label: "Shipment Intercept Request"
description: "Intercepts and returns or redirects a package before delivery."
tags:
- logistics
- customer-service
capability:
exposes:
- type: mcp
namespace: intercept
port: 8080
tools:
- name: intercept-shipment
description: "Intercept a shipment."
inputParameters:
- name: tracking_number
in: body
type: string
- name: action
in: body
type: string
description: "Action (return_to_shipper, redirect, hold)."
call: "delivery-api.intercept"
with:
tracking: "{{tracking_number}}"
action: "{{action}}"
outputParameters:
- name: intercept_id
type: string
mapping: "$.interceptId"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: intercept
path: "/packages/intercept"
operations:
- name: intercept
method: POST
Generates a FedEx shipping label for a package.
naftiko: "0.5"
info:
label: "Shipment Label Generation"
description: "Generates a FedEx shipping label for a package."
tags:
- logistics
- shipping
capability:
exposes:
- type: mcp
namespace: labels
port: 8080
tools:
- name: create-label
description: "Generate shipping label."
inputParameters:
- name: shipper
in: body
type: string
- name: recipient
in: body
type: string
- name: weight_lbs
in: body
type: number
- name: service
in: body
type: string
call: "ship-api.create-label"
with:
shipper: "{{shipper}}"
recipient: "{{recipient}}"
weight: "{{weight_lbs}}"
service: "{{service}}"
outputParameters:
- name: tracking_number
type: string
mapping: "$.trackingNumber"
- name: label_url
type: string
mapping: "$.labelUrl"
consumes:
- type: http
namespace: ship-api
baseUri: "https://api.fedex.com/ship/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: labels
path: "/shipments"
operations:
- name: create-label
method: POST
Calculates shipping rates for a package based on origin, destination, weight, and service type.
naftiko: "0.5"
info:
label: "Shipment Rate Quote"
description: "Calculates shipping rates for a package based on origin, destination, weight, and service type."
tags:
- logistics
- pricing
- customer-service
capability:
exposes:
- type: mcp
namespace: rates
port: 8080
tools:
- name: get-rate
description: "Get shipping rate quote."
inputParameters:
- name: origin_zip
in: body
type: string
- name: dest_zip
in: body
type: string
- name: weight_lbs
in: body
type: number
- name: service_type
in: body
type: string
description: "Service (Ground, Express, Overnight, 2Day)."
call: "rate-api.calculate"
with:
origin: "{{origin_zip}}"
dest: "{{dest_zip}}"
weight: "{{weight_lbs}}"
service: "{{service_type}}"
outputParameters:
- name: rate
type: number
mapping: "$.totalCharge"
- name: transit_days
type: number
mapping: "$.transitDays"
consumes:
- type: http
namespace: rate-api
baseUri: "https://api.fedex.com/rate/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: rates
path: "/rates/quotes"
operations:
- name: calculate
method: POST
Updates signature requirement for an in-transit package.
naftiko: "0.5"
info:
label: "Signature Required Update"
description: "Updates signature requirement for an in-transit package."
tags:
- logistics
- delivery
- customer-service
capability:
exposes:
- type: mcp
namespace: signature
port: 8080
tools:
- name: update-signature
description: "Update signature requirement."
inputParameters:
- name: tracking_number
in: body
type: string
- name: signature_type
in: body
type: string
description: "Type (direct, indirect, adult, no_signature)."
call: "delivery-api.update-signature"
with:
tracking: "{{tracking_number}}"
type: "{{signature_type}}"
outputParameters:
- name: status
type: string
mapping: "$.updateStatus"
consumes:
- type: http
namespace: delivery-api
baseUri: "https://delivery.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_delivery_token"
resources:
- name: signature
path: "/packages/signature"
operations:
- name: update-signature
method: PUT
Finds the optimal USPS injection point for FedEx Ground Economy/SmartPost shipments.
naftiko: "0.5"
info:
label: "SmartPost Injection Point Lookup"
description: "Finds the optimal USPS injection point for FedEx Ground Economy/SmartPost shipments."
tags:
- logistics
- ground
- delivery
capability:
exposes:
- type: mcp
namespace: smartpost
port: 8080
tools:
- name: get-injection
description: "Get SmartPost injection point."
inputParameters:
- name: dest_zip
in: body
type: string
call: "ops-api.get-injection"
with:
zip: "{{dest_zip}}"
outputParameters:
- name: injection_facility
type: string
mapping: "$.injectionFacility"
- name: usps_delivery_date
type: string
mapping: "$.uspsDeliveryDate"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: injection
path: "/smartpost/injection"
operations:
- name: get-injection
method: POST
Retrieves package throughput metrics for a FedEx sort facility including volume, scan rates, and missort rates.
naftiko: "0.5"
info:
label: "Sort Facility Throughput Report"
description: "Retrieves package throughput metrics for a FedEx sort facility including volume, scan rates, and missort rates."
tags:
- operations
- analytics
- sorting
capability:
exposes:
- type: mcp
namespace: sort-ops
port: 8080
tools:
- name: get-throughput
description: "Get sort facility throughput."
inputParameters:
- name: facility_code
in: body
type: string
- name: shift
in: body
type: string
call: "ops-api.get-throughput"
with:
facility: "{{facility_code}}"
shift: "{{shift}}"
outputParameters:
- name: packages_processed
type: number
mapping: "$.packagesProcessed"
- name: scan_rate
type: number
mapping: "$.scanRate"
- name: missort_rate
type: number
mapping: "$.missortRate"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: throughput
path: "/facilities/{{facility}}/throughput"
inputParameters:
- name: facility
in: path
operations:
- name: get-throughput
method: GET
Queries Splunk for infrastructure health metrics across FedEx Azure resources and posts a status summary to the IT operations Teams channel.
naftiko: "0.5"
info:
label: "Splunk Infrastructure Health Monitor"
description: "Queries Splunk for infrastructure health metrics across FedEx Azure resources and posts a status summary to the IT operations Teams channel."
tags:
- observability
- infrastructure
- splunk
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: infra-health
port: 8080
tools:
- name: digest-infrastructure-health
description: "Query Splunk for the last hour of Azure infrastructure health signals (CPU, memory, disk, network) and post a summary to the IT operations Teams channel. Use for shift handoffs and proactive monitoring rounds."
inputParameters:
- name: environment
in: body
type: string
description: "Target environment to report on (e.g., production, staging)."
steps:
- name: query-health
type: call
call: "splunk-health.run-search"
with:
search: "search index=azure_infra environment={{environment}} earliest=-1h | stats avg(cpu_pct) as avg_cpu, avg(mem_pct) as avg_mem, count(alert) as alert_count by host"
earliest_time: "-1h"
latest_time: "now"
- name: post-summary
type: call
call: "msteams-infra.send-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
text: "Infrastructure Health ({{environment}}) — past 1h: Avg CPU: {{query-health.avg_cpu}}%, Avg Mem: {{query-health.avg_mem}}%, Active Alerts: {{query-health.alert_count}}"
consumes:
- type: http
namespace: splunk-health
baseUri: "https://fedex-splunk.example.com:8089"
authentication:
type: basic
username: "$secrets.splunk_user"
password: "$secrets.splunk_password"
resources:
- name: search-jobs
path: "/services/search/jobs/export"
operations:
- name: run-search
method: POST
- type: http
namespace: msteams-infra
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Splunk for shipment tracking error events within a time window and returns a structured summary for operations triage.
naftiko: "0.5"
info:
label: "Splunk Log Query for Shipment Errors"
description: "Queries Splunk for shipment tracking error events within a time window and returns a structured summary for operations triage."
tags:
- operations
- observability
- splunk
- shipment-tracking
capability:
exposes:
- type: mcp
namespace: ops-observability
port: 8080
tools:
- name: query-shipment-errors
description: "Given a time range and optional tracking number prefix, search Splunk for shipment error events and return a count and top error messages. Use during operations triage or customer escalation resolution."
inputParameters:
- name: earliest_time
in: body
type: string
description: "Splunk earliest time bound (e.g., -1h, -24h, or ISO 8601 timestamp)."
- name: latest_time
in: body
type: string
description: "Splunk latest time bound (e.g., now, or ISO 8601 timestamp)."
- name: tracking_prefix
in: body
type: string
description: "Optional FedEx tracking number prefix to filter results."
call: "splunk-ops.run-search"
with:
search: "search index=shipment_tracking sourcetype=tracking_error tracking_number={{tracking_prefix}}* | stats count by error_code, error_message | sort -count"
earliest_time: "{{earliest_time}}"
latest_time: "{{latest_time}}"
outputParameters:
- name: results
type: array
mapping: "$.results"
- name: total_errors
type: number
mapping: "$.results_preview_count"
consumes:
- type: http
namespace: splunk-ops
baseUri: "https://fedex-splunk.example.com:8089"
authentication:
type: basic
username: "$secrets.splunk_user"
password: "$secrets.splunk_password"
resources:
- name: search-jobs
path: "/services/search/jobs/export"
operations:
- name: run-search
method: POST
Retrieves staffing levels at a station compared to required minimums.
naftiko: "0.5"
info:
label: "Station Staffing Report"
description: "Retrieves staffing levels at a station compared to required minimums."
tags:
- workforce-management
- operations
capability:
exposes:
- type: mcp
namespace: staffing
port: 8080
tools:
- name: get-staffing
description: "Get staffing levels."
inputParameters:
- name: station
in: body
type: string
- name: shift
in: body
type: string
call: "workforce-api.get-staffing"
with:
station: "{{station}}"
shift: "{{shift}}"
outputParameters:
- name: current
type: number
mapping: "$.currentStaff"
- name: required
type: number
mapping: "$.required"
consumes:
- type: http
namespace: workforce-api
baseUri: "https://workforce.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_workforce_token"
resources:
- name: staffing
path: "/stations/{{station}}/staffing"
inputParameters:
- name: station
in: path
operations:
- name: get-staffing
method: GET
Retrieves capacity and utilization metrics for a FedEx Ground or Express station.
naftiko: "0.5"
info:
label: "Station Capacity Report"
description: "Retrieves capacity and utilization metrics for a FedEx Ground or Express station."
tags:
- operations
- analytics
- capacity
capability:
exposes:
- type: mcp
namespace: station-ops
port: 8080
tools:
- name: get-capacity
description: "Get station capacity."
inputParameters:
- name: station
in: body
type: string
- name: date
in: body
type: string
call: "ops-api.get-capacity"
with:
station: "{{station}}"
date: "{{date}}"
outputParameters:
- name: capacity
type: number
mapping: "$.maxCapacity"
- name: utilization
type: number
mapping: "$.currentUtilization"
- name: overflow_risk
type: boolean
mapping: "$.overflowRisk"
consumes:
- type: http
namespace: ops-api
baseUri: "https://operations.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_ops_token"
resources:
- name: capacity
path: "/stations/{{station}}/capacity"
inputParameters:
- name: station
in: path
operations:
- name: get-capacity
method: GET
Provides end-to-end supply chain visibility for enterprise customers.
naftiko: "0.5"
info:
label: "Supply Chain Visibility Dashboard"
description: "Provides end-to-end supply chain visibility for enterprise customers."
tags:
- logistics
- analytics
- supply-chain
capability:
exposes:
- type: mcp
namespace: scv
port: 8080
tools:
- name: get-visibility
description: "Get supply chain visibility."
inputParameters:
- name: account_number
in: body
type: string
- name: date_range
in: body
type: string
call: "analytics-api.get-scv"
with:
account: "{{account_number}}"
range: "{{date_range}}"
outputParameters:
- name: in_transit
type: number
mapping: "$.inTransit"
- name: delivered
type: number
mapping: "$.delivered"
- name: exceptions
type: number
mapping: "$.exceptions"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: scv
path: "/supply-chain/visibility"
operations:
- name: get-scv
method: POST
Calculates applicable surcharges for a shipment including fuel, residential, and oversize.
naftiko: "0.5"
info:
label: "Surcharge Calculator"
description: "Calculates applicable surcharges for a shipment including fuel, residential, and oversize."
tags:
- pricing
- logistics
- billing
capability:
exposes:
- type: mcp
namespace: surcharges
port: 8080
tools:
- name: calc-surcharges
description: "Calculate surcharges."
inputParameters:
- name: tracking_number
in: body
type: string
- name: service
in: body
type: string
call: "rate-api.calc-surcharges"
with:
tracking: "{{tracking_number}}"
service: "{{service}}"
outputParameters:
- name: fuel_surcharge
type: number
mapping: "$.fuelSurcharge"
- name: residential
type: number
mapping: "$.residentialSurcharge"
- name: total_surcharges
type: number
mapping: "$.totalSurcharges"
consumes:
- type: http
namespace: rate-api
baseUri: "https://api.fedex.com/rate/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: surcharges
path: "/surcharges/calculate"
operations:
- name: calc-surcharges
method: POST
Publishes an updated Tableau workbook to a Tableau Server site and triggers a data source refresh for FedEx logistics reporting.
naftiko: "0.5"
info:
label: "Tableau Workbook Publish and Refresh"
description: "Publishes an updated Tableau workbook to a Tableau Server site and triggers a data source refresh for FedEx logistics reporting."
tags:
- data
- analytics
- tableau
- reporting
capability:
exposes:
- type: mcp
namespace: tableau-reporting
port: 8080
tools:
- name: refresh-tableau-datasource
description: "Given a Tableau site name and data source ID, trigger an immediate extract refresh. Use when fresh shipment or operational data must be reflected in Tableau dashboards without waiting for the scheduled refresh."
inputParameters:
- name: site_name
in: body
type: string
description: "The Tableau Server site name (e.g., fedex-ops)."
- name: datasource_id
in: body
type: string
description: "The Tableau data source LUID to refresh."
call: "tableau.refresh-datasource"
with:
site_name: "{{site_name}}"
datasource_id: "{{datasource_id}}"
outputParameters:
- name: job_id
type: string
mapping: "$.job.id"
- name: job_status
type: string
mapping: "$.job.status"
consumes:
- type: http
namespace: tableau
baseUri: "https://tableau.fedex.com/api/3.21"
authentication:
type: apikey
key: "X-Tableau-Auth"
value: "$secrets.tableau_token"
placement: header
resources:
- name: datasource-refreshes
path: "/sites/{{site_name}}/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: site_name
in: path
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Monitors temperature readings for cold-chain/temperature-controlled shipments.
naftiko: "0.5"
info:
label: "Temperature-Controlled Shipment Status"
description: "Monitors temperature readings for cold-chain/temperature-controlled shipments."
tags:
- logistics
- cold-chain
- tracking
capability:
exposes:
- type: mcp
namespace: cold-chain
port: 8080
tools:
- name: get-temp-status
description: "Get temperature status of cold-chain shipment."
inputParameters:
- name: tracking_number
in: body
type: string
call: "tracking-api.get-temperature"
with:
tracking: "{{tracking_number}}"
outputParameters:
- name: current_temp
type: number
mapping: "$.currentTemp"
- name: min_temp
type: number
mapping: "$.minTemp"
- name: max_temp
type: number
mapping: "$.maxTemp"
- name: within_range
type: boolean
mapping: "$.withinRange"
consumes:
- type: http
namespace: tracking-api
baseUri: "https://api.fedex.com/track/v1"
authentication:
type: bearer
token: "$secrets.fedex_api_token"
resources:
- name: temperature
path: "/trackingnumbers/{{tracking}}/temperature"
inputParameters:
- name: tracking
in: path
operations:
- name: get-temperature
method: GET
Triggers a Terraform Cloud run for a FedEx infrastructure workspace to apply pending infrastructure changes.
naftiko: "0.5"
info:
label: "Terraform Cloud Workspace Run"
description: "Triggers a Terraform Cloud run for a FedEx infrastructure workspace to apply pending infrastructure changes."
tags:
- cloud
- infrastructure
- terraform
- devops
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: trigger-terraform-run
description: "Given a Terraform Cloud workspace ID, trigger a new plan-and-apply run. Use when deploying approved infrastructure changes to FedEx cloud environments."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Terraform Cloud workspace ID (e.g., ws-xxxxxxxxxxxxxxxx)."
- name: message
in: body
type: string
description: "Human-readable message describing the reason for the run."
call: "terraform-cloud.create-run"
with:
workspace_id: "{{workspace_id}}"
message: "{{message}}"
outputParameters:
- name: run_id
type: string
mapping: "$.data.id"
- name: run_status
type: string
mapping: "$.data.attributes.status"
consumes:
- type: http
namespace: terraform-cloud
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
Retrieves GPS location and status of a linehaul trailer.
naftiko: "0.5"
info:
label: "Trailer GPS Tracking"
description: "Retrieves GPS location and status of a linehaul trailer."
tags:
- logistics
- tracking
- ground
capability:
exposes:
- type: mcp
namespace: trailer
port: 8080
tools:
- name: track-trailer
description: "Track trailer location."
inputParameters:
- name: trailer_id
in: body
type: string
call: "fleet-api.get-trailer-location"
with:
trailer: "{{trailer_id}}"
outputParameters:
- name: location
type: string
mapping: "$.currentLocation"
- name: status
type: string
mapping: "$.status"
- name: eta
type: string
mapping: "$.eta"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_fleet_token"
resources:
- name: trailers
path: "/trailers/{{trailer}}/location"
inputParameters:
- name: trailer
in: path
operations:
- name: get-trailer-location
method: GET
Retrieves status of delivery vehicles at a station including availability, maintenance, and GPS location.
naftiko: "0.5"
info:
label: "Vehicle Fleet Status"
description: "Retrieves status of delivery vehicles at a station including availability, maintenance, and GPS location."
tags:
- fleet-management
- logistics
- tracking
capability:
exposes:
- type: mcp
namespace: fleet
port: 8080
tools:
- name: get-fleet-status
description: "Get vehicle fleet status at a station."
inputParameters:
- name: station
in: body
type: string
- name: vehicle_type
in: body
type: string
description: "Type (van, truck, tractor)."
call: "fleet-api.get-status"
with:
station: "{{station}}"
type: "{{vehicle_type}}"
outputParameters:
- name: available
type: number
mapping: "$.available"
- name: in_service
type: number
mapping: "$.inService"
- name: maintenance
type: number
mapping: "$.inMaintenance"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_fleet_token"
resources:
- name: status
path: "/stations/{{station}}/vehicles"
inputParameters:
- name: station
in: path
operations:
- name: get-status
method: GET
When a delivery vehicle needs maintenance, creates a work order, schedules replacement vehicle, and notifies the station manager.
naftiko: "0.5"
info:
label: "Vehicle Maintenance Orchestrator"
description: "When a delivery vehicle needs maintenance, creates a work order, schedules replacement vehicle, and notifies the station manager."
tags:
- fleet-management
- maintenance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vehicle-mx
port: 8080
tools:
- name: process-vehicle-mx
description: "Process vehicle maintenance request."
inputParameters:
- name: vehicle_id
in: body
type: string
- name: issue
in: body
type: string
- name: station
in: body
type: string
steps:
- name: create-wo
type: call
call: "fleet-api.create-work-order"
with:
vehicle: "{{vehicle_id}}"
issue: "{{issue}}"
- name: assign-replacement
type: call
call: "fleet-api.assign-replacement"
with:
station: "{{station}}"
vehicle: "{{vehicle_id}}"
- name: notify-station
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{station_channel}}"
text: "Vehicle {{vehicle_id}} down: {{issue}} | Replacement: {{assign-replacement.vehicle_id}}"
consumes:
- type: http
namespace: fleet-api
baseUri: "https://fleet.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_fleet_token"
resources:
- name: work-orders
path: "/maintenance/work-orders"
operations:
- name: create-work-order
method: POST
- name: replacements
path: "/vehicles/replacement"
operations:
- name: assign-replacement
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/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves package volume forecasts for a facility to support capacity planning.
naftiko: "0.5"
info:
label: "Volume Forecast Report"
description: "Retrieves package volume forecasts for a facility to support capacity planning."
tags:
- analytics
- operations
- forecasting
capability:
exposes:
- type: mcp
namespace: forecast
port: 8080
tools:
- name: get-forecast
description: "Get volume forecast."
inputParameters:
- name: facility
in: body
type: string
- name: days_ahead
in: body
type: number
call: "analytics-api.get-forecast"
with:
facility: "{{facility}}"
days: "{{days_ahead}}"
outputParameters:
- name: daily_volumes
type: array
mapping: "$.dailyVolumes"
- name: peak_day
type: string
mapping: "$.peakDay"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://analytics.fedex.com/api/v1"
authentication:
type: bearer
token: "$secrets.fedex_analytics_token"
resources:
- name: forecast
path: "/volume/forecast"
operations:
- name: get-forecast
method: POST
Exports current FedEx headcount grouped by department and cost center from Workday for use in workforce planning and finance reporting.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot"
description: "Exports current FedEx headcount grouped by department and cost center from Workday for use in workforce planning and finance reporting."
tags:
- hr
- reporting
- workday
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-by-department
description: "Returns a list of active FedEx employees grouped by department and cost center from Workday. Use for headcount planning, budget forecasting, and HR dashboards."
call: "workday-hcm.headcount-export"
outputParameters:
- name: employees
type: array
mapping: "$.data"
- name: total_count
type: number
mapping: "$.total"
consumes:
- type: http
namespace: workday-hcm
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers-export
path: "/fedex/workers"
inputParameters:
- name: format
in: query
value: "json"
operations:
- name: headcount-export
method: GET
Fetches all open job requisitions from Workday Recruiting and syncs them to a Power BI dataset for talent acquisition reporting.
naftiko: "0.5"
info:
label: "Workday Open Requisition Dashboard Sync"
description: "Fetches all open job requisitions from Workday Recruiting and syncs them to a Power BI dataset for talent acquisition reporting."
tags:
- hr
- recruiting
- workday
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: talent-reporting
port: 8080
tools:
- name: sync-open-requisitions
description: "Fetch all open Workday job requisitions and push updated counts to the talent acquisition Power BI dataset. Use when refreshing the recruiter performance dashboard or preparing for weekly staffing reviews."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID containing the talent dataset."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh after fetching requisitions."
steps:
- name: get-open-requisitions
type: call
call: "workday-ta.list-open-requisitions"
with:
status: "Open"
- name: refresh-pbi-dataset
type: call
call: "powerbi-ta.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: workday-ta
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/fedex/jobRequisitions"
inputParameters:
- name: status
in: query
operations:
- name: list-open-requisitions
method: GET
- type: http
namespace: powerbi-ta
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
When a Workday job change or promotion is approved, updates the employee's Azure AD group memberships and sends a Teams notification confirming the access changes.
naftiko: "0.5"
info:
label: "Workday Role Change Provisioner"
description: "When a Workday job change or promotion is approved, updates the employee's Azure AD group memberships and sends a Teams notification confirming the access changes."
tags:
- hr
- identity
- workday
- azure-ad
- microsoft-teams
- role-change
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: sync-role-change
description: "Given a Workday employee ID and new role, update the employee's Azure AD group memberships to reflect the new position and notify the employee via Teams. Use when an internal transfer, promotion, or role change is finalized in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the employee changing roles."
- name: new_role
in: body
type: string
description: "The new job title or role name."
- name: new_ad_group
in: body
type: string
description: "The Azure AD group ID to add the employee to for the new role."
steps:
- name: get-worker
type: call
call: "workday-role.get-worker"
with:
worker_id: "{{employee_id}}"
- name: update-ad-group
type: call
call: "azure-ad-role.add-group-member"
with:
group_id: "{{new_ad_group}}"
user_id: "{{get-worker.azure_object_id}}"
- name: notify-employee
type: call
call: "msteams-role.send-message"
with:
recipient_upn: "{{get-worker.work_email}}"
text: "Your role has been updated to {{new_role}} in FedEx systems. Your access has been provisioned accordingly."
consumes:
- type: http
namespace: workday-role
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/fedex/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azure-ad-role
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.azure_ad_token"
resources:
- name: group-members
path: "/groups/{{group_id}}/members/$ref"
inputParameters:
- name: group_id
in: path
operations:
- name: add-group-member
method: POST
- type: http
namespace: msteams-role
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Looks up the status of an employee's pending time-off request in Workday and returns approval state and covered dates.
naftiko: "0.5"
info:
label: "Workday Time-Off Request Status Lookup"
description: "Looks up the status of an employee's pending time-off request in Workday and returns approval state and covered dates."
tags:
- hr
- workday
- time-off
capability:
exposes:
- type: mcp
namespace: hr-time
port: 8080
tools:
- name: get-time-off-request
description: "Given a Workday worker ID and time-off request ID, return the current approval status, requester name, and covered date range. Use when employees or managers need to check leave approval status."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID of the employee."
- name: request_id
in: body
type: string
description: "The Workday time-off request ID."
call: "workday-time.get-time-off-request"
with:
worker_id: "{{worker_id}}"
request_id: "{{request_id}}"
outputParameters:
- name: status
type: string
mapping: "$.data.overallStatus"
- name: start_date
type: string
mapping: "$.data.startDate"
- name: end_date
type: string
mapping: "$.data.endDate"
consumes:
- type: http
namespace: workday-time
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-off-requests
path: "/fedex/workers/{{worker_id}}/timeOffRequests/{{request_id}}"
inputParameters:
- name: worker_id
in: path
- name: request_id
in: path
operations:
- name: get-time-off-request
method: GET