AGCO Capabilities
Naftiko 0.5 capability definitions for AGCO - 100 capabilities showing integration workflows and service orchestrations.
When ADP flags a payroll exception, retrieves employee details from Workday, creates a ServiceNow HR ticket, and notifies the employee and HR in Microsoft Teams.
naftiko: "0.5"
info:
label: "ADP Payroll Exception Handler"
description: "When ADP flags a payroll exception, retrieves employee details from Workday, creates a ServiceNow HR ticket, and notifies the employee and HR in Microsoft Teams."
tags:
- hr
- adp
- workday
- servicenow
- microsoft-teams
- payroll
capability:
exposes:
- type: mcp
namespace: payroll-exceptions
port: 8080
tools:
- name: handle-payroll-exception
description: "Handle an ADP payroll exception: get exception details, fetch employee from Workday, create ServiceNow HR ticket, and notify in Teams."
inputParameters:
- name: exception_id
in: body
type: string
description: "The ADP payroll exception ID."
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
steps:
- name: get-exception
type: call
call: "adp.get-payroll-exception"
with:
exception_id: "{{exception_id}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: create-hr-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Payroll exception: {{get-employee.full_name}} - {{get-exception.type}}"
description: "Exception: {{get-exception.description}}. Amount: ${{get-exception.amount}}. Pay period: {{get-exception.pay_period}}."
category: "hr_payroll"
assigned_group: "HR_Payroll"
- name: notify-hr
type: call
call: "msteams.send-message"
with:
channel_id: "hr-payroll-ops"
text: "Payroll exception for {{get-employee.full_name}}: {{get-exception.type}} (${{get-exception.amount}}). ServiceNow: {{create-hr-ticket.number}}."
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/payroll/v1"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: exceptions
path: "/exceptions/{{exception_id}}"
inputParameters:
- name: exception_id
in: path
operations:
- name: get-payroll-exception
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes parts and service revenue from SAP, identifies growth opportunities in Snowflake, updates Power BI reports, and notifies aftermarket team.
naftiko: "0.5"
info:
label: "Aftermarket Revenue Analytics Pipeline"
description: "Analyzes parts and service revenue from SAP, identifies growth opportunities in Snowflake, updates Power BI reports, and notifies aftermarket team."
tags:
- aftermarket
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: aftermarket
port: 8080
tools:
- name: aftermarket_revenue_analytics_pipeline
description: "Orchestrate aftermarket revenue analytics pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Validates equipment configurations against subsidy requirements, generates compliance certificates, and notifies dealers.
naftiko: "0.5"
info:
label: "Agricultural Subsidy Compliance Pipeline"
description: "Validates equipment configurations against subsidy requirements, generates compliance certificates, and notifies dealers."
tags:
- compliance
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: agricultural_subsidy_compliance_pipeline
description: "Orchestrate agricultural subsidy compliance pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves metadata for the latest firmware binary artifact stored in Amazon S3, including version, upload date, and presigned download URL.
naftiko: "0.5"
info:
label: "Amazon S3 Firmware Artifact Retrieval"
description: "Retrieves metadata for the latest firmware binary artifact stored in Amazon S3, including version, upload date, and presigned download URL."
tags:
- firmware
- amazon-s3
- engineering
capability:
exposes:
- type: mcp
namespace: firmware-artifacts
port: 8080
tools:
- name: get-firmware-artifact
description: "Get metadata for the latest firmware artifact in S3 for a given ECU model. Returns version, upload date, and download URL."
inputParameters:
- name: ecu_model
in: body
type: string
description: "The ECU model identifier (e.g. TC-5000)."
call: "s3.get-object-metadata"
with:
ecu_model: "{{ecu_model}}"
outputParameters:
- name: firmware_version
type: string
mapping: "$.Metadata.firmware-version"
- name: last_modified
type: string
mapping: "$.LastModified"
- name: content_length
type: string
mapping: "$.ContentLength"
consumes:
- type: http
namespace: s3
baseUri: "https://agco-firmware-artifacts.s3.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
accessKeyId: "$secrets.aws_access_key"
secretAccessKey: "$secrets.aws_secret_key"
region: "us-east-1"
resources:
- name: objects
path: "/firmware/{{ecu_model}}/latest.bin"
inputParameters:
- name: ecu_model
in: path
operations:
- name: get-object-metadata
method: HEAD
# --- Orchestrated capabilities (steps) ---
Monitors Apache Airflow DAG runs, logs results to Datadog, creates a Jira ticket if a critical DAG fails, and notifies the data engineering team in Teams.
naftiko: "0.5"
info:
label: "Apache Airflow ETL Job Monitor"
description: "Monitors Apache Airflow DAG runs, logs results to Datadog, creates a Jira ticket if a critical DAG fails, and notifies the data engineering team in Teams."
tags:
- data-engineering
- apache-airflow
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: etl-monitoring
port: 8080
tools:
- name: monitor-airflow-dag
description: "Monitor an Airflow DAG: check run status, log to Datadog, create Jira ticket on failure, and notify data engineering."
inputParameters:
- name: dag_id
in: body
type: string
description: "The Airflow DAG identifier."
- name: run_id
in: body
type: string
description: "The DAG run identifier."
steps:
- name: get-dag-run
type: call
call: "airflow.get-dag-run"
with:
dag_id: "{{dag_id}}"
run_id: "{{run_id}}"
- name: log-to-datadog
type: call
call: "datadog.post-event"
with:
title: "Airflow DAG {{dag_id}} run {{run_id}}: {{get-dag-run.state}}"
text: "Duration: {{get-dag-run.duration}}s. Tasks: {{get-dag-run.task_count}} total, {{get-dag-run.failed_tasks}} failed."
alert_type: "{{get-dag-run.state}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "DATA"
summary: "Airflow DAG failure: {{dag_id}}"
description: "Run {{run_id}} failed. Duration: {{get-dag-run.duration}}s. Failed tasks: {{get-dag-run.failed_tasks}}."
issuetype: "Bug"
priority: "High"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "data-engineering"
text: "Airflow DAG {{dag_id}} failed. Run: {{run_id}}. Failed tasks: {{get-dag-run.failed_tasks}}. Jira: {{create-ticket.key}}."
consumes:
- type: http
namespace: airflow
baseUri: "https://airflow.agcocorp.com/api/v1"
authentication:
type: basic
username: "$secrets.airflow_user"
password: "$secrets.airflow_password"
resources:
- name: dag-runs
path: "/dags/{{dag_id}}/dagRuns/{{run_id}}"
inputParameters:
- name: dag_id
in: path
- name: run_id
in: path
operations:
- name: get-dag-run
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: events
path: "/events"
operations:
- name: post-event
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Apache NiFi data flow health, captures metrics in Prometheus, visualizes in Grafana, and creates a ServiceNow incident if flow backs up beyond threshold.
naftiko: "0.5"
info:
label: "Apache NiFi Data Flow Monitoring"
description: "Monitors Apache NiFi data flow health, captures metrics in Prometheus, visualizes in Grafana, and creates a ServiceNow incident if flow backs up beyond threshold."
tags:
- data-integration
- apache-nifi
- prometheus
- grafana
- servicenow
capability:
exposes:
- type: mcp
namespace: nifi-monitoring
port: 8080
tools:
- name: check-nifi-flow-health
description: "Monitor a NiFi flow: check queue depth, push metrics to Prometheus, annotate Grafana, and create ServiceNow incident if backed up."
inputParameters:
- name: process_group_id
in: body
type: string
description: "The NiFi process group ID."
- name: threshold_queued
in: body
type: string
description: "The queue depth threshold for alerting."
steps:
- name: get-flow-status
type: call
call: "nifi.get-process-group"
with:
pg_id: "{{process_group_id}}"
- name: push-metrics
type: call
call: "prometheus.push-metrics"
with:
job: "nifi-flow-{{process_group_id}}"
metrics:
queued_count: "{{get-flow-status.queued_count}}"
bytes_in: "{{get-flow-status.bytes_in}}"
bytes_out: "{{get-flow-status.bytes_out}}"
- name: annotate-grafana
type: call
call: "grafana.create-annotation"
with:
dashboard_id: "nifi-overview"
text: "Flow {{process_group_id}} queued: {{get-flow-status.queued_count}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "NiFi flow backlog: {{process_group_id}}"
description: "Queued: {{get-flow-status.queued_count}} (threshold: {{threshold_queued}}). Bytes in: {{get-flow-status.bytes_in}}, out: {{get-flow-status.bytes_out}}."
category: "data_integration"
consumes:
- type: http
namespace: nifi
baseUri: "https://nifi.agcocorp.com/nifi-api"
authentication:
type: bearer
token: "$secrets.nifi_token"
resources:
- name: process-groups
path: "/process-groups/{{pg_id}}/status"
inputParameters:
- name: pg_id
in: path
operations:
- name: get-process-group
method: GET
- type: http
namespace: prometheus
baseUri: "https://prometheus-pushgateway.agcocorp.com"
authentication:
type: basic
username: "$secrets.prometheus_user"
password: "$secrets.prometheus_password"
resources:
- name: metrics
path: "/metrics/job/{{job}}"
inputParameters:
- name: job
in: path
operations:
- name: push-metrics
method: POST
- type: http
namespace: grafana
baseUri: "https://grafana.agcocorp.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: annotations
path: "/annotations"
operations:
- name: create-annotation
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.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
Monitors production line throughput from SAP MES, detects bottlenecks in Snowflake, creates improvement tasks in Jira, and notifies ops.
naftiko: "0.5"
info:
label: "Assembly Line Bottleneck Detector"
description: "Monitors production line throughput from SAP MES, detects bottlenecks in Snowflake, creates improvement tasks in Jira, and notifies ops."
tags:
- manufacturing
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: assembly_line_bottleneck_detector
description: "Orchestrate assembly line bottleneck detector workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves the latest build status for an AGCO firmware or embedded software pipeline in Azure DevOps.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status"
description: "Retrieves the latest build status for an AGCO firmware or embedded software pipeline in Azure DevOps."
tags:
- ci-cd
- azure-devops
- engineering
- firmware
capability:
exposes:
- type: mcp
namespace: build-pipeline
port: 8080
tools:
- name: get-latest-build
description: "Get the latest Azure DevOps build for an AGCO firmware pipeline. Returns build number, status, result, and finish time."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The Azure DevOps pipeline definition ID."
call: "azuredevops.get-build"
with:
definition_id: "{{pipeline_id}}"
outputParameters:
- name: build_number
type: string
mapping: "$.value[0].buildNumber"
- name: status
type: string
mapping: "$.value[0].status"
- name: result
type: string
mapping: "$.value[0].result"
- name: finish_time
type: string
mapping: "$.value[0].finishTime"
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/agco/FirmwareProject/_apis/build"
authentication:
type: basic
username: ""
password: "$secrets.azuredevops_pat"
resources:
- name: builds
path: "/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
inputParameters:
- name: definition_id
in: query
operations:
- name: get-build
method: GET
Pulls sensor data from Fuse telematics, runs a predictive maintenance model in Azure Machine Learning, schedules a SAP PM order if failure predicted, and notifies the service team in Teams.
naftiko: "0.5"
info:
label: "Azure ML Predictive Maintenance Pipeline"
description: "Pulls sensor data from Fuse telematics, runs a predictive maintenance model in Azure Machine Learning, schedules a SAP PM order if failure predicted, and notifies the service team in Teams."
tags:
- predictive-maintenance
- azure-machine-learning
- iot
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: predictive-maintenance
port: 8080
tools:
- name: run-predictive-maintenance
description: "Run predictive maintenance: pull sensor data from Fuse, run Azure ML model, create SAP PM order if needed, and notify service team."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: component_type
in: body
type: string
description: "The component type to evaluate (engine, transmission, hydraulic)."
steps:
- name: get-sensor-data
type: call
call: "fuse-telematics.get-sensor-history"
with:
serial: "{{machine_serial}}"
component: "{{component_type}}"
- name: run-model
type: call
call: "azureml.score-model"
with:
model_name: "pm-failure-prediction"
input_data:
serial: "{{machine_serial}}"
component: "{{component_type}}"
sensor_data: "{{get-sensor-data.readings}}"
- name: create-pm-order
type: call
call: "sap-pm.create-maintenance-order"
with:
equipment_serial: "{{machine_serial}}"
description: "Predictive maintenance: {{component_type}} - failure probability {{run-model.failure_probability}}%"
priority: "{{run-model.recommended_priority}}"
- name: notify-service
type: call
call: "msteams.send-message"
with:
channel_id: "predictive-maintenance"
text: "PM alert for {{machine_serial}} {{component_type}}: failure probability {{run-model.failure_probability}}%. SAP order: {{create-pm-order.order_number}}. Recommended action: {{run-model.recommended_action}}."
consumes:
- type: http
namespace: fuse-telematics
baseUri: "https://fuse-api.agcocorp.com/telematics/v2"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: sensor-history
path: "/machines/{{serial}}/sensors/{{component}}/history"
inputParameters:
- name: serial
in: path
- name: component
in: path
operations:
- name: get-sensor-history
method: GET
- type: http
namespace: azureml
baseUri: "https://agco-ml.westus2.inference.ml.azure.com"
authentication:
type: bearer
token: "$secrets.azureml_token"
resources:
- name: models
path: "/score"
operations:
- name: score-model
method: POST
- type: http
namespace: sap-pm
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-orders
path: "/A_MaintenanceOrder"
operations:
- name: create-maintenance-order
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors component availability in SAP, detects shortages, evaluates production impact in Snowflake, and escalates to supply chain.
naftiko: "0.5"
info:
label: "Component Shortage Escalation Pipeline"
description: "Monitors component availability in SAP, detects shortages, evaluates production impact in Snowflake, and escalates to supply chain."
tags:
- supply-chain
- sap
- snowflake
- jira
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: component_shortage_escalation_pipeline
description: "Orchestrate component shortage escalation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Searches AGCO Confluence knowledge base for technical service bulletins and returns the top matching article title, URL, and last updated date.
naftiko: "0.5"
info:
label: "Confluence Knowledge Article Lookup"
description: "Searches AGCO Confluence knowledge base for technical service bulletins and returns the top matching article title, URL, and last updated date."
tags:
- knowledge-management
- confluence
- dealer-support
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-service-bulletin
description: "Search AGCO Confluence for a technical service bulletin by keyword. Returns the top match title, URL, and last modified date."
inputParameters:
- name: search_query
in: body
type: string
description: "Search keywords for the technical service bulletin."
call: "confluence.search-content"
with:
query: "{{search_query}}"
outputParameters:
- name: title
type: string
mapping: "$.results[0].title"
- name: url
type: string
mapping: "$.results[0]._links.webui"
- name: last_modified
type: string
mapping: "$.results[0].version.when"
consumes:
- type: http
namespace: confluence
baseUri: "https://agco.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/content/search?cql=type=page+AND+space=TSB+AND+text~'{{query}}'"
inputParameters:
- name: query
in: query
operations:
- name: search-content
method: GET
Retrieves Confluence page content for AGCO knowledge base.
naftiko: "0.5"
info:
label: "Confluence Page Retrieval"
description: "Retrieves Confluence page content for AGCO knowledge base."
tags:
- collaboration
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page
description: "Get page at AGCO."
inputParameters:
- name: page_id
in: body
type: string
description: "The page_id to look up."
call: "confluence.get-page_id"
with:
page_id: "{{page_id}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://agco.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence_page_retrieval
method: GET
Plans firmware rollout for connected equipment, deploys OTA updates, monitors success rates in Datadog, and notifies IoT team.
naftiko: "0.5"
info:
label: "Connected Machine Firmware Deployment"
description: "Plans firmware rollout for connected equipment, deploys OTA updates, monitors success rates in Datadog, and notifies IoT team."
tags:
- iot
- firmware
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: iot
port: 8080
tools:
- name: connected_machine_firmware_deployment
description: "Orchestrate connected machine firmware deployment workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Analyzes regional crop calendars, forecasts equipment demand in Snowflake, plans dealer inventory in SAP, and notifies sales planning.
naftiko: "0.5"
info:
label: "Crop Season Planning Pipeline"
description: "Analyzes regional crop calendars, forecasts equipment demand in Snowflake, plans dealer inventory in SAP, and notifies sales planning."
tags:
- agronomy
- snowflake
- sap
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: agronomy
port: 8080
tools:
- name: crop_season_planning_pipeline
description: "Orchestrate crop season planning pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-salesforce
type: call
call: "salesforce.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Distributes CSAT surveys to equipment owners, analyzes responses in Snowflake, updates Salesforce accounts, and notifies customer success.
naftiko: "0.5"
info:
label: "Customer Satisfaction Survey Pipeline"
description: "Distributes CSAT surveys to equipment owners, analyzes responses in Snowflake, updates Salesforce accounts, and notifies customer success."
tags:
- customer-success
- salesforce
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: customer-success
port: 8080
tools:
- name: customer_satisfaction_survey_pipeline
description: "Orchestrate customer satisfaction survey pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Queries Datadog for infrastructure health metrics of an AGCO manufacturing plant host group, returning CPU, memory, and alert status.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Health Check"
description: "Queries Datadog for infrastructure health metrics of an AGCO manufacturing plant host group, returning CPU, memory, and alert status."
tags:
- monitoring
- datadog
- infrastructure
- manufacturing
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-host-health
description: "Check Datadog infrastructure health for a plant host group. Returns CPU usage, memory usage, and active alert count."
inputParameters:
- name: host_group
in: body
type: string
description: "The Datadog host group tag for the plant (e.g. plant:jackson-mn)."
call: "datadog.get-host-metrics"
with:
filter: "{{host_group}}"
outputParameters:
- name: avg_cpu
type: string
mapping: "$.series[0].pointlist[-1][1]"
- name: avg_memory
type: string
mapping: "$.series[1].pointlist[-1][1]"
- name: active_alerts
type: string
mapping: "$.total_matching"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: metrics
path: "/query?query=avg:system.cpu.user{{filter}}&from=-3600"
inputParameters:
- name: filter
in: query
operations:
- name: get-host-metrics
method: GET
Retrieves Datadog monitor status for AGCO infrastructure.
naftiko: "0.5"
info:
label: "Datadog Monitor Status"
description: "Retrieves Datadog monitor status for AGCO infrastructure."
tags:
- monitoring
- datadog
- alerting
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-monitor
description: "Check monitor at AGCO."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The monitor_id to look up."
call: "datadog.get-monitor_id"
with:
monitor_id: "{{monitor_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog_monitor_status
method: GET
When a dealer submits a credit application via Salesforce, validates the dealer in Oracle EBS, runs a financial check, creates a Jira review ticket, and notifies finance in Teams.
naftiko: "0.5"
info:
label: "Dealer Credit Application Processor"
description: "When a dealer submits a credit application via Salesforce, validates the dealer in Oracle EBS, runs a financial check, creates a Jira review ticket, and notifies finance in Teams."
tags:
- dealer-management
- salesforce
- oracle-ebs
- jira
- microsoft-teams
- finance
capability:
exposes:
- type: mcp
namespace: dealer-credit
port: 8080
tools:
- name: process-credit-application
description: "Process a dealer credit application: get Salesforce request, validate in Oracle EBS, create Jira review, and notify finance."
inputParameters:
- name: application_id
in: body
type: string
description: "The Salesforce credit application record ID."
- name: dealer_code
in: body
type: string
description: "The dealer code."
steps:
- name: get-application
type: call
call: "salesforce.get-credit-app"
with:
record_id: "{{application_id}}"
- name: validate-dealer
type: call
call: "oracle-ebs.get-supplier"
with:
supplier_num: "{{dealer_code}}"
- name: create-review
type: call
call: "jira.create-issue"
with:
project: "FIN"
summary: "Credit review: {{dealer_code}} - ${{get-application.requested_amount}}"
description: "Dealer: {{validate-dealer.supplier_name}}. Requested: ${{get-application.requested_amount}}. Payment terms: {{validate-dealer.payment_terms}}."
issuetype: "Task"
priority: "Medium"
- name: notify-finance
type: call
call: "msteams.send-message"
with:
channel_id: "dealer-finance"
text: "Credit application from {{validate-dealer.supplier_name}} ({{dealer_code}}) for ${{get-application.requested_amount}}. Review: {{create-review.key}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: credit-apps
path: "/sobjects/Credit_Application__c/{{record_id}}"
inputParameters:
- name: record_id
in: path
operations:
- name: get-credit-app
method: GET
- type: http
namespace: oracle-ebs
baseUri: "https://oracle-ebs.agcocorp.com/webservices/rest"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: suppliers
path: "/suppliers/{{supplier_num}}"
inputParameters:
- name: supplier_num
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Evaluates dealer creditworthiness from SAP financial data, runs scoring in Snowflake, creates credit decisions, and notifies finance.
naftiko: "0.5"
info:
label: "Dealer Credit Assessment Pipeline"
description: "Evaluates dealer creditworthiness from SAP financial data, runs scoring in Snowflake, creates credit decisions, and notifies finance."
tags:
- finance
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: dealer_credit_assessment_pipeline
description: "Orchestrate dealer credit assessment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Monitors dealer stock levels from Salesforce, calculates replenishment in Snowflake, creates SAP orders, and notifies dealers.
naftiko: "0.5"
info:
label: "Dealer Inventory Replenishment Pipeline"
description: "Monitors dealer stock levels from Salesforce, calculates replenishment in Snowflake, creates SAP orders, and notifies dealers."
tags:
- inventory
- salesforce
- snowflake
- sap
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: dealer_inventory_replenishment_pipeline
description: "Orchestrate dealer inventory replenishment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-sap
type: call
call: "sap.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a new dealer agreement is signed, creates the account in Salesforce, provisions access in Azure Active Directory, sets up a SharePoint collaboration site, and notifies the regional team in Teams.
naftiko: "0.5"
info:
label: "Dealer Onboarding Orchestrator"
description: "When a new dealer agreement is signed, creates the account in Salesforce, provisions access in Azure Active Directory, sets up a SharePoint collaboration site, and notifies the regional team in Teams."
tags:
- dealer-management
- salesforce
- azure-active-directory
- sharepoint
- microsoft-teams
- onboarding
capability:
exposes:
- type: mcp
namespace: dealer-onboarding
port: 8080
tools:
- name: onboard-new-dealer
description: "Onboard a new AGCO dealer: create Salesforce account, provision Azure AD access, set up SharePoint site, and notify regional team."
inputParameters:
- name: dealer_name
in: body
type: string
description: "The dealer business name."
- name: dealer_code
in: body
type: string
description: "The assigned AGCO dealer code."
- name: region
in: body
type: string
description: "The dealer's region."
- name: primary_contact_email
in: body
type: string
description: "The dealer primary contact email."
steps:
- name: create-account
type: call
call: "salesforce.create-account"
with:
name: "{{dealer_name}}"
dealer_code: "{{dealer_code}}"
region: "{{region}}"
type: "Dealer"
- name: provision-ad
type: call
call: "azuread.create-guest-user"
with:
email: "{{primary_contact_email}}"
display_name: "{{dealer_name}} - {{dealer_code}}"
group: "AGCO-Dealers-{{region}}"
- name: create-site
type: call
call: "sharepoint.create-site"
with:
site_name: "Dealer-{{dealer_code}}"
template: "dealer-collaboration"
- name: notify-region
type: call
call: "msteams.send-message"
with:
channel_id: "dealer-ops-{{region}}"
text: "New dealer onboarded: {{dealer_name}} ({{dealer_code}}). SF Account: {{create-account.id}}. Portal: {{create-site.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account"
operations:
- name: create-account
method: POST
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/invitations"
operations:
- name: create-guest-user
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: sites
path: "/sites"
operations:
- name: create-site
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Creates dealer profile in Salesforce, provisions SAP access, sets up training in LMS, creates ServiceNow tickets, and notifies channel management.
naftiko: "0.5"
info:
label: "Dealer Onboarding Workflow"
description: "Creates dealer profile in Salesforce, provisions SAP access, sets up training in LMS, creates ServiceNow tickets, and notifies channel management."
tags:
- dealer-management
- salesforce
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: dealer-management
port: 8080
tools:
- name: dealer_onboarding_workflow
description: "Orchestrate dealer onboarding workflow workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Collects sales and service data from Salesforce, analyzes in Snowflake, generates scorecards in Power BI, and notifies sales leadership.
naftiko: "0.5"
info:
label: "Dealer Performance Analytics Pipeline"
description: "Collects sales and service data from Salesforce, analyzes in Snowflake, generates scorecards in Power BI, and notifies sales leadership."
tags:
- sales
- salesforce
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: dealer_performance_analytics_pipeline
description: "Orchestrate dealer performance analytics pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, and inventory turns from SAP, then posts a consolidated performance summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "Dealer Performance Review Pipeline"
description: "Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, and inventory turns from SAP, then posts a consolidated performance summary to Microsoft Teams."
tags:
- dealer-management
- salesforce
- servicenow
- sap
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: dealer-performance
port: 8080
tools:
- name: generate-dealer-review
description: "Generate a dealer performance review by aggregating sales from Salesforce, service metrics from ServiceNow, inventory from SAP, and posting summary to Teams."
inputParameters:
- name: dealer_code
in: body
type: string
description: "The AGCO dealer code."
- name: review_period
in: body
type: string
description: "The review period (e.g. 2026-Q1)."
steps:
- name: get-sales
type: call
call: "salesforce.get-dealer-sales"
with:
dealer_code: "{{dealer_code}}"
period: "{{review_period}}"
- name: get-service-metrics
type: call
call: "servicenow.get-dealer-cases"
with:
dealer_code: "{{dealer_code}}"
period: "{{review_period}}"
- name: get-inventory
type: call
call: "sap.get-dealer-inventory"
with:
dealer_code: "{{dealer_code}}"
- name: post-summary
type: call
call: "msteams.send-message"
with:
channel_id: "dealer-reviews"
text: "Dealer {{dealer_code}} - {{review_period}} Review: Sales: ${{get-sales.total_revenue}}. Cases: {{get-service-metrics.total_cases}} ({{get-service-metrics.avg_resolution_days}}d avg). Inventory turns: {{get-inventory.turns_ratio}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: dealer-sales
path: "/query?q=SELECT+SUM(Amount)+total_revenue+FROM+Opportunity+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+CloseDate>=THIS_QUARTER"
inputParameters:
- name: dealer_code
in: query
operations:
- name: get-dealer-sales
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case?sysparm_query=dealer_code={{dealer_code}}"
inputParameters:
- name: dealer_code
in: query
operations:
- name: get-dealer-cases
method: GET
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_DATA_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: dealer-inventory
path: "/A_DealerInventory('{{dealer_code}}')"
inputParameters:
- name: dealer_code
in: path
operations:
- name: get-dealer-inventory
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves dealer account details from Salesforce including contact info, territory, and active contracts for a given AGCO dealer code.
naftiko: "0.5"
info:
label: "Dealer Salesforce Account Lookup"
description: "Retrieves dealer account details from Salesforce including contact info, territory, and active contracts for a given AGCO dealer code."
tags:
- dealer-management
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: dealer-crm
port: 8080
tools:
- name: get-dealer-account
description: "Look up an AGCO dealer in Salesforce by dealer code. Returns account name, territory, primary contact, and contract status."
inputParameters:
- name: dealer_code
in: body
type: string
description: "The AGCO dealer code."
call: "salesforce.get-account"
with:
dealer_code: "{{dealer_code}}"
outputParameters:
- name: account_name
type: string
mapping: "$.records[0].Name"
- name: territory
type: string
mapping: "$.records[0].Territory__c"
- name: primary_contact
type: string
mapping: "$.records[0].Primary_Contact__c"
- name: contract_status
type: string
mapping: "$.records[0].Contract_Status__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/query?q=SELECT+Id,Name,Territory__c,Primary_Contact__c,Contract_Status__c+FROM+Account+WHERE+Dealer_Code__c='{{dealer_code}}'"
inputParameters:
- name: dealer_code
in: query
operations:
- name: get-account
method: GET
When a dealer submits a warranty claim, validates the machine in SAP, creates a ServiceNow case, uploads supporting documents to SharePoint, and notifies the dealer via Salesforce.
naftiko: "0.5"
info:
label: "Dealer Warranty Claim Orchestrator"
description: "When a dealer submits a warranty claim, validates the machine in SAP, creates a ServiceNow case, uploads supporting documents to SharePoint, and notifies the dealer via Salesforce."
tags:
- warranty
- dealer-management
- sap
- servicenow
- sharepoint
- salesforce
capability:
exposes:
- type: mcp
namespace: warranty-claims
port: 8080
tools:
- name: process-warranty-claim
description: "Process a dealer warranty claim end-to-end: validate machine in SAP, create ServiceNow case, store documents in SharePoint, and notify dealer in Salesforce."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: dealer_code
in: body
type: string
description: "The AGCO dealer code."
- name: claim_description
in: body
type: string
description: "Description of the warranty issue."
- name: failure_code
in: body
type: string
description: "The warranty failure code."
steps:
- name: validate-machine
type: call
call: "sap.get-equipment"
with:
serial: "{{machine_serial}}"
- name: create-case
type: call
call: "servicenow.create-case"
with:
short_description: "Warranty claim: {{machine_serial}} - {{failure_code}}"
description: "{{claim_description}}"
category: "warranty"
equipment_serial: "{{machine_serial}}"
- name: create-doc-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "warranty_claims"
folder_path: "Claims/{{create-case.number}}_{{machine_serial}}"
- name: notify-dealer
type: call
call: "salesforce.create-task"
with:
dealer_code: "{{dealer_code}}"
subject: "Warranty claim {{create-case.number}} created for {{machine_serial}}"
description: "Case {{create-case.number}} has been opened. Upload documents to {{create-doc-folder.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: equipment
path: "/A_Equipment?$filter=SerialNumber eq '{{serial}}'"
inputParameters:
- name: serial
in: query
operations:
- name: get-equipment
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
Processes warranty claims from dealers in Salesforce, validates against SAP warranty rules, creates service orders, and notifies claims team.
naftiko: "0.5"
info:
label: "Dealer Warranty Claims Orchestrator"
description: "Processes warranty claims from dealers in Salesforce, validates against SAP warranty rules, creates service orders, and notifies claims team."
tags:
- warranty
- salesforce
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: warranty
port: 8080
tools:
- name: dealer_warranty_claims_orchestrator
description: "Orchestrate dealer warranty claims orchestrator workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Searches Elasticsearch indexes for AGCO.
naftiko: "0.5"
info:
label: "Elasticsearch Log Query"
description: "Searches Elasticsearch indexes for AGCO."
tags:
- data
- elasticsearch
- search
capability:
exposes:
- type: mcp
namespace: search
port: 8080
tools:
- name: search-logs
description: "Search ES logs at AGCO."
inputParameters:
- name: query
in: body
type: string
description: "The query to look up."
call: "elasticsearch.get-query"
with:
query: "{{query}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://agco-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: elasticsearch_log_query
method: GET
On new hire creation in Workday, provisions a SharePoint document folder, assigns an ADP payroll record, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Pipeline"
description: "On new hire creation in Workday, provisions a SharePoint document folder, assigns an ADP payroll record, creates a ServiceNow onboarding ticket, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- sharepoint
- adp
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Orchestrate full onboarding for an AGCO new hire across Workday, SharePoint, ADP, ServiceNow, and Teams."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID."
- name: start_date
in: body
type: string
description: "Employee start date (YYYY-MM-DD)."
- name: department
in: body
type: string
description: "Department the new hire is joining."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding"
folder_path: "NewHires/{{get-employee.full_name}}_{{start_date}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Onboarding: {{get-employee.full_name}} - {{department}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to AGCO, {{get-employee.first_name}}! IT ticket: {{open-ticket.number}}. Documents: {{provision-folder.url}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Analyzes remaining inventory from SAP, calculates aging and carrying costs in Snowflake, generates markdown proposals, and notifies sales.
naftiko: "0.5"
info:
label: "End of Season Inventory Analysis"
description: "Analyzes remaining inventory from SAP, calculates aging and carrying costs in Snowflake, generates markdown proposals, and notifies sales."
tags:
- inventory
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: end_of_season_inventory_analysis
description: "Orchestrate end of season inventory analysis workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Processes ECN requests in Jira, validates BOM impact in SAP, updates documentation in Confluence, creates change orders, and notifies engineering.
naftiko: "0.5"
info:
label: "Engineering Change Notice Pipeline"
description: "Processes ECN requests in Jira, validates BOM impact in SAP, updates documentation in Confluence, creates change orders, and notifies engineering."
tags:
- engineering
- jira
- sap
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: engineering_change_notice_pipeline
description: "Orchestrate engineering change notice pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-confluence
type: call
call: "confluence.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: confluence
baseUri: "https://agco.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a product engineering change is proposed, creates a Jira ECN issue, updates the SAP BOM, uploads specs to SharePoint, posts to Confluence for review, and notifies stakeholders in Teams.
naftiko: "0.5"
info:
label: "Engineering Change Notice Workflow"
description: "When a product engineering change is proposed, creates a Jira ECN issue, updates the SAP BOM, uploads specs to SharePoint, posts to Confluence for review, and notifies stakeholders in Teams."
tags:
- engineering
- jira
- sap
- sharepoint
- confluence
- microsoft-teams
- product-development
capability:
exposes:
- type: mcp
namespace: engineering-change
port: 8080
tools:
- name: process-engineering-change
description: "Process an engineering change notice: create Jira ECN, update SAP BOM, upload specs to SharePoint, post to Confluence, and notify stakeholders."
inputParameters:
- name: change_title
in: body
type: string
description: "The title of the engineering change."
- name: affected_material
in: body
type: string
description: "The SAP material number affected."
- name: change_reason
in: body
type: string
description: "The reason for the change."
- name: requestor_id
in: body
type: string
description: "The requestor's employee ID."
steps:
- name: create-ecn
type: call
call: "jira.create-issue"
with:
project: "ECN"
summary: "{{change_title}}"
description: "Material: {{affected_material}}. Reason: {{change_reason}}."
issuetype: "Story"
priority: "High"
- name: get-bom
type: call
call: "sap.get-bom"
with:
material: "{{affected_material}}"
- name: upload-specs
type: call
call: "sharepoint.upload-file"
with:
site_id: "engineering_ecn"
folder_path: "ECN/{{create-ecn.key}}"
file_name: "current_bom.json"
content: "{{get-bom.payload}}"
- name: create-review-page
type: call
call: "confluence.create-page"
with:
space: "ECN"
title: "ECN Review: {{create-ecn.key}} - {{change_title}}"
body: "Change request for material {{affected_material}}. Reason: {{change_reason}}. Current BOM: {{upload-specs.url}}."
- name: notify-stakeholders
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-changes"
text: "ECN {{create-ecn.key}}: {{change_title}} for material {{affected_material}}. Review page: {{create-review-page.url}}."
consumes:
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PP_BOM_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: boms
path: "/A_BillOfMaterial('{{material}}')"
inputParameters:
- name: material
in: path
operations:
- name: get-bom
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: confluence
baseUri: "https://agco.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- 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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Analyzes IoT telemetry from agricultural equipment, predicts failures in Snowflake, creates maintenance orders in SAP, and notifies dealers.
naftiko: "0.5"
info:
label: "Equipment Predictive Maintenance Pipeline"
description: "Analyzes IoT telemetry from agricultural equipment, predicts failures in Snowflake, creates maintenance orders in SAP, and notifies dealers."
tags:
- iot
- predictive-maintenance
- sap
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: iot
port: 8080
tools:
- name: equipment_predictive_maintenance_pipelin
description: "Orchestrate equipment predictive maintenance pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Retrieves real-time telematics data for a connected machine from the AGCO Fuse platform, including GPS location, engine hours, fuel level, and fault codes.
naftiko: "0.5"
info:
label: "Equipment Telematics Dashboard Lookup"
description: "Retrieves real-time telematics data for a connected machine from the AGCO Fuse platform, including GPS location, engine hours, fuel level, and fault codes."
tags:
- iot
- telematics
- precision-agriculture
- datadog
capability:
exposes:
- type: mcp
namespace: telematics
port: 8080
tools:
- name: get-machine-telemetry
description: "Look up real-time telematics for an AGCO connected machine by serial number. Returns GPS coordinates, engine hours, fuel level, and active fault codes."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number registered in AGCO Fuse."
call: "fuse-telematics.get-machine"
with:
serial: "{{machine_serial}}"
outputParameters:
- name: latitude
type: string
mapping: "$.data.location.lat"
- name: longitude
type: string
mapping: "$.data.location.lng"
- name: engine_hours
type: string
mapping: "$.data.engineHours"
- name: fuel_level
type: string
mapping: "$.data.fuelLevelPercent"
- name: fault_codes
type: string
mapping: "$.data.activeDTCs"
consumes:
- type: http
namespace: fuse-telematics
baseUri: "https://fuse-api.agcocorp.com/telematics/v2"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: machines
path: "/machines/{{serial}}"
inputParameters:
- name: serial
in: path
operations:
- name: get-machine
method: GET
Receives service requests from Salesforce, optimizes routing, dispatches technicians, tracks in ServiceNow, and notifies customers.
naftiko: "0.5"
info:
label: "Field Service Dispatch Optimizer"
description: "Receives service requests from Salesforce, optimizes routing, dispatches technicians, tracks in ServiceNow, and notifies customers."
tags:
- field-service
- salesforce
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: field-service
port: 8080
tools:
- name: field_service_dispatch_optimizer
description: "Orchestrate field service dispatch optimizer workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-snowflake
type: call
call: "snowflake.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a machine needs service, locates the nearest dealer via Google Maps, creates a ServiceNow work order, assigns a technician via Workday skills lookup, and notifies the dealer in Salesforce.
naftiko: "0.5"
info:
label: "Field Service Dispatch Orchestrator"
description: "When a machine needs service, locates the nearest dealer via Google Maps, creates a ServiceNow work order, assigns a technician via Workday skills lookup, and notifies the dealer in Salesforce."
tags:
- field-service
- google-maps
- servicenow
- workday
- salesforce
- dealer-management
capability:
exposes:
- type: mcp
namespace: field-dispatch
port: 8080
tools:
- name: dispatch-field-service
description: "Dispatch field service: locate nearest dealer, create ServiceNow work order, find qualified technician, and notify dealer."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: machine_latitude
in: body
type: string
description: "Machine GPS latitude."
- name: machine_longitude
in: body
type: string
description: "Machine GPS longitude."
- name: service_type
in: body
type: string
description: "Type of service required (e.g. engine, hydraulic, electrical)."
steps:
- name: find-dealer
type: call
call: "googlemaps.find-nearest"
with:
lat: "{{machine_latitude}}"
lng: "{{machine_longitude}}"
keyword: "AGCO dealer"
- name: create-work-order
type: call
call: "servicenow.create-work-order"
with:
short_description: "Field service: {{machine_serial}} - {{service_type}}"
location: "{{find-dealer.name}}"
equipment_serial: "{{machine_serial}}"
category: "{{service_type}}"
- name: find-technician
type: call
call: "workday.search-workers"
with:
skill: "{{service_type}}"
location: "{{find-dealer.formatted_address}}"
- name: notify-dealer
type: call
call: "salesforce.create-task"
with:
dealer_name: "{{find-dealer.name}}"
subject: "Service dispatch for {{machine_serial}} - WO {{create-work-order.number}}"
description: "Technician {{find-technician.name}} assigned. Service type: {{service_type}}."
consumes:
- type: http
namespace: googlemaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apiKey
key: "$secrets.google_maps_key"
headerName: "X-Goog-Api-Key"
resources:
- name: places
path: "/place/nearbysearch/json?location={{lat}},{{lng}}&radius=80000&keyword={{keyword}}"
inputParameters:
- name: lat
in: query
- name: lng
in: query
- name: keyword
in: query
operations:
- name: find-nearest
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: work-orders
path: "/table/wm_order"
operations:
- name: create-work-order
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers?skill={{skill}}&location={{location}}"
inputParameters:
- name: skill
in: query
- name: location
in: query
operations:
- name: search-workers
method: GET
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
Pulls firmware binary from S3, validates checksum in Azure DevOps, creates a deployment record in ServiceNow, and pushes OTA update via the Fuse telematics gateway.
naftiko: "0.5"
info:
label: "Firmware OTA Deployment Pipeline"
description: "Pulls firmware binary from S3, validates checksum in Azure DevOps, creates a deployment record in ServiceNow, and pushes OTA update via the Fuse telematics gateway."
tags:
- firmware
- amazon-s3
- azure-devops
- servicenow
- iot
- telematics
capability:
exposes:
- type: mcp
namespace: firmware-ota
port: 8080
tools:
- name: deploy-firmware-ota
description: "Deploy a firmware OTA update: fetch artifact from S3, validate build in Azure DevOps, create ServiceNow change record, and push via Fuse."
inputParameters:
- name: ecu_model
in: body
type: string
description: "The ECU model identifier."
- name: firmware_version
in: body
type: string
description: "The firmware version to deploy."
- name: target_fleet
in: body
type: string
description: "The target fleet group for OTA."
steps:
- name: get-artifact
type: call
call: "s3.get-object"
with:
key: "firmware/{{ecu_model}}/{{firmware_version}}/binary.bin"
- name: validate-build
type: call
call: "azuredevops.get-build-artifact"
with:
build_number: "{{firmware_version}}"
artifact_name: "checksum"
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "OTA deployment: {{ecu_model}} v{{firmware_version}} to {{target_fleet}}"
category: "firmware"
risk: "moderate"
- name: push-ota
type: call
call: "fuse-ota.deploy-update"
with:
ecu_model: "{{ecu_model}}"
version: "{{firmware_version}}"
fleet_group: "{{target_fleet}}"
change_number: "{{create-change.number}}"
consumes:
- type: http
namespace: s3
baseUri: "https://agco-firmware-artifacts.s3.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
accessKeyId: "$secrets.aws_access_key"
secretAccessKey: "$secrets.aws_secret_key"
region: "us-east-1"
resources:
- name: objects
path: "/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: get-object
method: GET
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/agco/FirmwareProject/_apis/build"
authentication:
type: basic
username: ""
password: "$secrets.azuredevops_pat"
resources:
- name: artifacts
path: "/builds?buildNumber={{build_number}}&api-version=7.0"
inputParameters:
- name: build_number
in: query
operations:
- name: get-build-artifact
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: fuse-ota
baseUri: "https://fuse-api.agcocorp.com/ota/v1"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: deployments
path: "/deployments"
operations:
- name: deploy-update
method: POST
Aggregates fleet telematics data from Fuse, enriches with dealer info from Salesforce, generates a Databricks analytics report, and stores it in SharePoint for dealer access.
naftiko: "0.5"
info:
label: "Fleet Utilization Report Generator"
description: "Aggregates fleet telematics data from Fuse, enriches with dealer info from Salesforce, generates a Databricks analytics report, and stores it in SharePoint for dealer access."
tags:
- telematics
- iot
- salesforce
- databricks
- sharepoint
- dealer-management
capability:
exposes:
- type: mcp
namespace: fleet-utilization
port: 8080
tools:
- name: generate-fleet-report
description: "Generate a fleet utilization report: pull Fuse telematics, enrich with Salesforce dealer data, run Databricks analytics, and store in SharePoint."
inputParameters:
- name: dealer_code
in: body
type: string
description: "The AGCO dealer code."
- name: report_month
in: body
type: string
description: "The report month (YYYY-MM)."
steps:
- name: get-fleet-data
type: call
call: "fuse-telematics.get-fleet-summary"
with:
dealer_code: "{{dealer_code}}"
month: "{{report_month}}"
- name: get-dealer-info
type: call
call: "salesforce.get-account"
with:
dealer_code: "{{dealer_code}}"
- name: run-analytics
type: call
call: "databricks.run-job"
with:
job_id: "fleet-utilization-report"
parameters:
dealer_code: "{{dealer_code}}"
month: "{{report_month}}"
fleet_data: "{{get-fleet-data.machines}}"
- name: store-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "dealer_reports"
folder_path: "FleetReports/{{dealer_code}}/{{report_month}}"
file_name: "fleet_utilization_{{report_month}}.pdf"
consumes:
- type: http
namespace: fuse-telematics
baseUri: "https://fuse-api.agcocorp.com/telematics/v2"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: fleet
path: "/dealers/{{dealer_code}}/fleet?month={{month}}"
inputParameters:
- name: dealer_code
in: path
- name: month
in: query
operations:
- name: get-fleet-summary
method: GET
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/query?q=SELECT+Id,Name,Territory__c+FROM+Account+WHERE+Dealer_Code__c='{{dealer_code}}'"
inputParameters:
- name: dealer_code
in: query
operations:
- name: get-account
method: GET
- type: http
namespace: databricks
baseUri: "https://agco.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Retrieves GitHub repository metadata for AGCO.
naftiko: "0.5"
info:
label: "GitHub Repository Lookup"
description: "Retrieves GitHub repository metadata for AGCO."
tags:
- devops
- github
- source-control
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-repo
description: "Look up repo at AGCO."
inputParameters:
- name: repo_name
in: body
type: string
description: "The repo_name to look up."
call: "github.get-repo_name"
with:
repo_name: "{{repo_name}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: github_repository_lookup
method: GET
Analyzes global inventory levels in SAP, identifies imbalances in Snowflake, creates transfer orders, and notifies supply chain.
naftiko: "0.5"
info:
label: "Global Inventory Rebalancing Pipeline"
description: "Analyzes global inventory levels in SAP, identifies imbalances in Snowflake, creates transfer orders, and notifies supply chain."
tags:
- supply-chain
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: global_inventory_rebalancing_pipeline
description: "Orchestrate global inventory rebalancing pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Geocodes an AGCO dealer address using Google Maps API and returns latitude, longitude, and formatted address for fleet routing.
naftiko: "0.5"
info:
label: "Google Maps Dealer Geocode"
description: "Geocodes an AGCO dealer address using Google Maps API and returns latitude, longitude, and formatted address for fleet routing."
tags:
- dealer-management
- google-maps
- geolocation
capability:
exposes:
- type: mcp
namespace: dealer-geo
port: 8080
tools:
- name: geocode-dealer-address
description: "Geocode a dealer street address using Google Maps. Returns latitude, longitude, and formatted address."
inputParameters:
- name: address
in: body
type: string
description: "The dealer street address to geocode."
call: "googlemaps.geocode"
with:
address: "{{address}}"
outputParameters:
- name: latitude
type: string
mapping: "$.results[0].geometry.location.lat"
- name: longitude
type: string
mapping: "$.results[0].geometry.location.lng"
- name: formatted_address
type: string
mapping: "$.results[0].formatted_address"
consumes:
- type: http
namespace: googlemaps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apiKey
key: "$secrets.google_maps_key"
headerName: "X-Goog-Api-Key"
resources:
- name: geocode
path: "/geocode/json?address={{address}}"
inputParameters:
- name: address
in: query
operations:
- name: geocode
method: GET
When Grafana fires a critical alert for a plant system, creates a ServiceNow incident, escalates via PagerDuty-style Datadog on-call, and notifies the ops channel in Teams.
naftiko: "0.5"
info:
label: "Grafana Alert to Incident Bridge"
description: "When Grafana fires a critical alert for a plant system, creates a ServiceNow incident, escalates via PagerDuty-style Datadog on-call, and notifies the ops channel in Teams."
tags:
- monitoring
- grafana
- servicenow
- datadog
- microsoft-teams
- incident-management
capability:
exposes:
- type: mcp
namespace: alert-incident
port: 8080
tools:
- name: bridge-alert-to-incident
description: "Bridge a Grafana alert to an incident: create ServiceNow incident, log to Datadog, and notify ops in Teams."
inputParameters:
- name: alert_name
in: body
type: string
description: "The Grafana alert rule name."
- name: severity
in: body
type: string
description: "The alert severity (P1, P2, P3)."
- name: plant_code
in: body
type: string
description: "The affected plant code."
- name: alert_message
in: body
type: string
description: "The alert detail message."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "{{alert_name}} at {{plant_code}}"
description: "{{alert_message}}"
urgency: "{{severity}}"
category: "infrastructure"
- name: log-to-datadog
type: call
call: "datadog.post-event"
with:
title: "Grafana alert: {{alert_name}} at {{plant_code}}"
text: "Severity: {{severity}}. ServiceNow: {{create-incident.number}}. {{alert_message}}"
alert_type: "error"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
channel_id: "plant-{{plant_code}}-ops"
text: "INCIDENT {{severity}}: {{alert_name}} at {{plant_code}}. ServiceNow: {{create-incident.number}}. {{alert_message}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://agco.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: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: events
path: "/events"
operations:
- name: post-event
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Grafana dashboard data for AGCO monitoring.
naftiko: "0.5"
info:
label: "Grafana Dashboard Query"
description: "Queries Grafana dashboard data for AGCO monitoring."
tags:
- monitoring
- grafana
- dashboards
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-dashboard
description: "Query dashboard at AGCO."
inputParameters:
- name: dashboard_uid
in: body
type: string
description: "The dashboard_uid to look up."
call: "grafana.get-dashboard_uid"
with:
dashboard_uid: "{{dashboard_uid}}"
consumes:
- type: http
namespace: grafana
baseUri: "https://agco-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana_dashboard_query
method: GET
Triggers an Informatica data quality job for master data cleansing, stores results in Amazon Redshift, updates the data quality dashboard in Power BI, and alerts the data governance team in Teams.
naftiko: "0.5"
info:
label: "Informatica Data Quality Pipeline"
description: "Triggers an Informatica data quality job for master data cleansing, stores results in Amazon Redshift, updates the data quality dashboard in Power BI, and alerts the data governance team in Teams."
tags:
- data-quality
- informatica
- amazon-redshift
- power-bi
- microsoft-teams
- data-governance
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: run-data-quality-check
description: "Run a data quality pipeline: trigger Informatica job, store results in Redshift, refresh Power BI, and notify governance team."
inputParameters:
- name: domain
in: body
type: string
description: "The data domain (material, supplier, customer, dealer)."
- name: source_system
in: body
type: string
description: "The source system (SAP, Oracle, Salesforce)."
steps:
- name: run-dq-job
type: call
call: "informatica.run-job"
with:
task_name: "DQ_{{domain}}_{{source_system}}"
- name: store-results
type: call
call: "redshift.execute-query"
with:
query: "INSERT INTO data_quality.results SELECT * FROM staging.dq_{{domain}}_latest"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "data-quality-dashboard"
- name: notify-governance
type: call
call: "msteams.send-message"
with:
channel_id: "data-governance"
text: "Data quality check complete for {{domain}} from {{source_system}}. Job: {{run-dq-job.task_id}}. Records processed: {{run-dq-job.records_processed}}. Errors: {{run-dq-job.error_count}}. Dashboard refreshed."
consumes:
- type: http
namespace: informatica
baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
authentication:
type: bearer
token: "$secrets.informatica_token"
resources:
- name: jobs
path: "/job"
operations:
- name: run-job
method: POST
- type: http
namespace: redshift
baseUri: "https://redshift-data.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
accessKeyId: "$secrets.aws_access_key"
secretAccessKey: "$secrets.aws_secret_key"
region: "us-east-1"
resources:
- name: statements
path: "/execute-statement"
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg/groups"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: 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
Monitors connected machine fleet via IoT gateway, detects anomalies in Snowflake, creates alerts in ServiceNow, and notifies fleet managers.
naftiko: "0.5"
info:
label: "IoT Fleet Monitoring Pipeline"
description: "Monitors connected machine fleet via IoT gateway, detects anomalies in Snowflake, creates alerts in ServiceNow, and notifies fleet managers."
tags:
- iot
- snowflake
- servicenow
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: iot
port: 8080
tools:
- name: iot_fleet_monitoring_pipeline
description: "Orchestrate iot fleet monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: grafana
baseUri: "https://agco-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When an IoT sensor on a tractor reports anomalous readings, queries Elasticsearch for historical baseline, creates a Grafana annotation, opens a Jira investigation, and alerts engineering in Teams.
naftiko: "0.5"
info:
label: "IoT Sensor Anomaly Response"
description: "When an IoT sensor on a tractor reports anomalous readings, queries Elasticsearch for historical baseline, creates a Grafana annotation, opens a Jira investigation, and alerts engineering in Teams."
tags:
- iot
- elasticsearch
- grafana
- jira
- microsoft-teams
- anomaly-detection
capability:
exposes:
- type: mcp
namespace: iot-anomaly
port: 8080
tools:
- name: respond-to-anomaly
description: "Respond to an IoT sensor anomaly: check Elasticsearch baseline, annotate Grafana, create Jira investigation, and alert engineering."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: sensor_id
in: body
type: string
description: "The sensor identifier."
- name: reading_value
in: body
type: string
description: "The anomalous sensor reading value."
- name: sensor_type
in: body
type: string
description: "The type of sensor (e.g. temperature, pressure, vibration)."
steps:
- name: get-baseline
type: call
call: "elasticsearch.search"
with:
index: "iot-sensor-data"
query: "machine_serial:{{machine_serial}} AND sensor_id:{{sensor_id}}"
agg: "avg_reading"
- name: annotate-dashboard
type: call
call: "grafana.create-annotation"
with:
dashboard_id: "iot-fleet-overview"
text: "Anomaly on {{machine_serial}} sensor {{sensor_id}}: {{reading_value}} (baseline: {{get-baseline.avg_reading}})"
tags: "anomaly,{{machine_serial}},{{sensor_type}}"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project: "IOT"
summary: "Anomaly: {{machine_serial}} - {{sensor_type}} sensor {{sensor_id}}"
description: "Reading: {{reading_value}}. Baseline avg: {{get-baseline.avg_reading}}. Grafana: {{annotate-dashboard.url}}."
issuetype: "Task"
priority: "High"
- name: alert-engineering
type: call
call: "msteams.send-message"
with:
channel_id: "iot-engineering"
text: "ANOMALY: {{machine_serial}} {{sensor_type}} sensor {{sensor_id}} reading {{reading_value}} (baseline: {{get-baseline.avg_reading}}). Jira: {{create-investigation.key}}."
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://agco-es.us-east-1.es.amazonaws.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: search
path: "/{{index}}/_search"
inputParameters:
- name: index
in: path
operations:
- name: search
method: POST
- type: http
namespace: grafana
baseUri: "https://grafana.agcocorp.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: annotations
path: "/annotations"
operations:
- name: create-annotation
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Jira issue by key from the AGCO engineering project, returning summary, status, assignee, and priority for product development tracking.
naftiko: "0.5"
info:
label: "Jira Engineering Issue Lookup"
description: "Retrieves a Jira issue by key from the AGCO engineering project, returning summary, status, assignee, and priority for product development tracking."
tags:
- engineering
- jira
- product-development
capability:
exposes:
- type: mcp
namespace: engineering-tracker
port: 8080
tools:
- name: get-engineering-issue
description: "Look up a Jira issue by key. Returns summary, status, assignee, and priority."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key (e.g. ENG-1234)."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
- name: priority
type: string
mapping: "$.fields.priority.name"
consumes:
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Retrieves Jira issue status for AGCO engineering teams.
naftiko: "0.5"
info:
label: "Jira Issue Status"
description: "Retrieves Jira issue status for AGCO engineering teams."
tags:
- devops
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-issue
description: "Look up Jira issue at AGCO."
inputParameters:
- name: issue_key
in: body
type: string
description: "The issue_key to look up."
call: "jira.get-issue_key"
with:
issue_key: "{{issue_key}}"
consumes:
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira_issue_status
method: GET
When a deployment health check fails, rolls back the Kubernetes deployment, logs the event in Datadog, creates a Jira post-mortem ticket, and alerts the platform team in Teams.
naftiko: "0.5"
info:
label: "Kubernetes Deployment Rollback Workflow"
description: "When a deployment health check fails, rolls back the Kubernetes deployment, logs the event in Datadog, creates a Jira post-mortem ticket, and alerts the platform team in Teams."
tags:
- kubernetes
- datadog
- jira
- microsoft-teams
- deployment
- platform
capability:
exposes:
- type: mcp
namespace: k8s-rollback
port: 8080
tools:
- name: rollback-deployment
description: "Roll back a failed Kubernetes deployment: revert to previous revision, log to Datadog, create Jira post-mortem, and alert platform team."
inputParameters:
- name: namespace
in: body
type: string
description: "The Kubernetes namespace."
- name: deployment_name
in: body
type: string
description: "The deployment name."
- name: cluster
in: body
type: string
description: "The AKS cluster name."
- name: failure_reason
in: body
type: string
description: "The reason for the rollback."
steps:
- name: rollback
type: call
call: "aks.rollback-deployment"
with:
cluster: "{{cluster}}"
namespace: "{{namespace}}"
deployment: "{{deployment_name}}"
- name: log-event
type: call
call: "datadog.post-event"
with:
title: "K8s rollback: {{deployment_name}} in {{namespace}} on {{cluster}}"
text: "Reason: {{failure_reason}}. Rolled back to revision: {{rollback.previous_revision}}."
alert_type: "warning"
- name: create-postmortem
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Post-mortem: {{deployment_name}} rollback on {{cluster}}"
description: "Deployment {{deployment_name}} in {{namespace}} was rolled back. Reason: {{failure_reason}}. Previous revision: {{rollback.previous_revision}}."
issuetype: "Task"
priority: "High"
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "platform-alerts"
text: "ROLLBACK: {{deployment_name}} in {{namespace}} on {{cluster}}. Reason: {{failure_reason}}. Jira: {{create-postmortem.key}}."
consumes:
- type: http
namespace: aks
baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService/managedClusters"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: deployments
path: "/{{cluster}}/apis/apps/v1/namespaces/{{namespace}}/deployments/{{deployment}}"
inputParameters:
- name: cluster
in: path
- name: namespace
in: path
- name: deployment
in: path
operations:
- name: rollback-deployment
method: PATCH
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: events
path: "/events"
operations:
- name: post-event
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks shipping performance from SAP, scores carriers in Snowflake, updates procurement records, and notifies logistics team.
naftiko: "0.5"
info:
label: "Logistics Carrier Performance Pipeline"
description: "Tracks shipping performance from SAP, scores carriers in Snowflake, updates procurement records, and notifies logistics team."
tags:
- logistics
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: logistics_carrier_performance_pipeline
description: "Orchestrate logistics carrier performance pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a critical fault code is detected via telematics, logs it to Datadog, creates a Jira issue for engineering, and notifies the regional service manager in Microsoft Teams.
naftiko: "0.5"
info:
label: "Machine Fault Alert Pipeline"
description: "When a critical fault code is detected via telematics, logs it to Datadog, creates a Jira issue for engineering, and notifies the regional service manager in Microsoft Teams."
tags:
- iot
- telematics
- datadog
- jira
- microsoft-teams
- fault-management
capability:
exposes:
- type: mcp
namespace: fault-alert
port: 8080
tools:
- name: escalate-machine-fault
description: "Escalate a critical machine fault: log to Datadog, create Jira issue, and notify service manager in Teams."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: fault_code
in: body
type: string
description: "The DTC fault code."
- name: severity
in: body
type: string
description: "Fault severity level (critical, warning, info)."
- name: region
in: body
type: string
description: "The dealer region for notification routing."
steps:
- name: log-event
type: call
call: "datadog.post-event"
with:
title: "Critical fault {{fault_code}} on {{machine_serial}}"
text: "Severity: {{severity}}. Region: {{region}}."
alert_type: "error"
tags: "machine:{{machine_serial}},fault:{{fault_code}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "FAULTS"
summary: "Machine {{machine_serial}} - Fault {{fault_code}}"
description: "Critical fault detected. Severity: {{severity}}. Datadog event: {{log-event.id}}."
issuetype: "Bug"
priority: "High"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "service-alerts-{{region}}"
text: "ALERT: Machine {{machine_serial}} has critical fault {{fault_code}}. Jira: {{create-issue.key}}. Datadog: {{log-event.url}}."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: events
path: "/events"
operations:
- name: post-event
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects machine hours from IoT, calculates utilization in Snowflake, generates customer reports, and notifies account managers.
naftiko: "0.5"
info:
label: "Machine Utilization Reporting Pipeline"
description: "Collects machine hours from IoT, calculates utilization in Snowflake, generates customer reports, and notifies account managers."
tags:
- iot
- snowflake
- salesforce
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: iot
port: 8080
tools:
- name: machine_utilization_reporting_pipeline
description: "Orchestrate machine utilization reporting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Evaluates warranty extension requests from Salesforce, checks maintenance history in SAP, creates approvals, and notifies dealers.
naftiko: "0.5"
info:
label: "Machine Warranty Extension Processor"
description: "Evaluates warranty extension requests from Salesforce, checks maintenance history in SAP, creates approvals, and notifies dealers."
tags:
- warranty
- salesforce
- sap
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: warranty
port: 8080
tools:
- name: machine_warranty_extension_processor
description: "Orchestrate machine warranty extension processor workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Collects production KPIs from SAP MES, aggregates in Snowflake, refreshes Grafana dashboards, creates alerts for targets, and notifies plant managers.
naftiko: "0.5"
info:
label: "Manufacturing KPI Dashboard Pipeline"
description: "Collects production KPIs from SAP MES, aggregates in Snowflake, refreshes Grafana dashboards, creates alerts for targets, and notifies plant managers."
tags:
- manufacturing
- sap
- snowflake
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: manufacturing_kpi_dashboard_pipeline
description: "Orchestrate manufacturing kpi dashboard pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://agco-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
At shift change, pulls production data from Power BI, open incidents from ServiceNow, pending maintenance from SAP PM, and posts a consolidated handover report to Microsoft Teams.
naftiko: "0.5"
info:
label: "Manufacturing Shift Handover Report"
description: "At shift change, pulls production data from Power BI, open incidents from ServiceNow, pending maintenance from SAP PM, and posts a consolidated handover report to Microsoft Teams."
tags:
- manufacturing
- power-bi
- servicenow
- sap
- microsoft-teams
- shift-management
capability:
exposes:
- type: mcp
namespace: shift-handover
port: 8080
tools:
- name: generate-shift-handover
description: "Generate a shift handover report from Power BI production data, ServiceNow open incidents, SAP PM maintenance orders, and post to Teams."
inputParameters:
- name: plant_code
in: body
type: string
description: "The plant code."
- name: shift
in: body
type: string
description: "The shift identifier (e.g. day, swing, night)."
- name: date
in: body
type: string
description: "The shift date (YYYY-MM-DD)."
steps:
- name: get-production
type: call
call: "powerbi.get-shift-data"
with:
plant_code: "{{plant_code}}"
shift: "{{shift}}"
date: "{{date}}"
- name: get-incidents
type: call
call: "servicenow.get-open-incidents"
with:
plant_code: "{{plant_code}}"
shift: "{{shift}}"
- name: get-maintenance
type: call
call: "sap-pm.get-open-orders"
with:
plant: "{{plant_code}}"
- name: post-handover
type: call
call: "msteams.send-message"
with:
channel_id: "plant-{{plant_code}}-shifts"
text: "SHIFT HANDOVER - {{plant_code}} {{shift}} {{date}}\nUnits produced: {{get-production.units_produced}}\nOEE: {{get-production.oee}}%\nOpen incidents: {{get-incidents.count}}\nPending maintenance orders: {{get-maintenance.count}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg/groups"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/{{group_id}}/datasets/{{dataset_id}}/executeQueries"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-shift-data
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=plant={{plant_code}}^shift={{shift}}^state!=6"
inputParameters:
- name: plant_code
in: query
- name: shift
in: query
operations:
- name: get-open-incidents
method: GET
- type: http
namespace: sap-pm
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: orders
path: "/A_MaintenanceOrder?$filter=Plant eq '{{plant}}' and OrderStatus eq 'OPEN'"
inputParameters:
- name: plant
in: query
operations:
- name: get-open-orders
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Posts a formatted notification message to a specified Microsoft Teams channel using an incoming webhook.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Notification"
description: "Posts a formatted notification message to a specified Microsoft Teams channel using an incoming webhook."
tags:
- communications
- microsoft-teams
- notifications
capability:
exposes:
- type: mcp
namespace: team-notifications
port: 8080
tools:
- name: post-channel-notification
description: "Post a notification message to a Microsoft Teams channel. Returns the message ID."
inputParameters:
- name: channel_id
in: body
type: string
description: "The Teams channel ID."
- name: message_text
in: body
type: string
description: "The notification message content."
call: "msteams.post-message"
with:
channel_id: "{{channel_id}}"
text: "{{message_text}}"
outputParameters:
- name: message_id
type: string
mapping: "$.id"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Checks MuleSoft Anypoint API health status, correlates with Datadog metrics, creates a ServiceNow incident if degraded, and alerts the integration team in Teams.
naftiko: "0.5"
info:
label: "MuleSoft Integration Health Monitor"
description: "Checks MuleSoft Anypoint API health status, correlates with Datadog metrics, creates a ServiceNow incident if degraded, and alerts the integration team in Teams."
tags:
- integration
- mulesoft
- datadog
- servicenow
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: integration-health
port: 8080
tools:
- name: check-integration-health
description: "Check MuleSoft integration health: get API status, check Datadog metrics, create ServiceNow incident if degraded, and alert team."
inputParameters:
- name: api_name
in: body
type: string
description: "The MuleSoft API name."
- name: environment
in: body
type: string
description: "The environment (production, staging)."
steps:
- name: get-api-status
type: call
call: "mulesoft.get-api-status"
with:
api_name: "{{api_name}}"
environment: "{{environment}}"
- name: get-metrics
type: call
call: "datadog.get-api-metrics"
with:
filter: "api:{{api_name}},env:{{environment}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "MuleSoft API degraded: {{api_name}} in {{environment}}"
description: "Status: {{get-api-status.status}}. Error rate: {{get-metrics.error_rate}}%. Latency p99: {{get-metrics.latency_p99}}ms."
category: "integration"
urgency: "high"
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "integration-ops"
text: "MuleSoft {{api_name}} ({{environment}}) degraded. Status: {{get-api-status.status}}. Error rate: {{get-metrics.error_rate}}%. Incident: {{create-incident.number}}."
consumes:
- type: http
namespace: mulesoft
baseUri: "https://anypoint.mulesoft.com/apimanager/api/v1"
authentication:
type: bearer
token: "$secrets.mulesoft_token"
resources:
- name: apis
path: "/organizations/{{org_id}}/environments/{{env_id}}/apis/{{api_name}}/status"
inputParameters:
- name: org_id
in: path
- name: env_id
in: path
- name: api_name
in: path
operations:
- name: get-api-status
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: metrics
path: "/query?query=avg:mulesoft.api.error_rate{{filter}}&from=-3600"
inputParameters:
- name: filter
in: query
operations:
- name: get-api-metrics
method: GET
- type: http
namespace: servicenow
baseUri: "https://agco.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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Coordinates NPI milestones in Jira, validates BOM readiness in SAP, trains dealers via Salesforce, and notifies product management.
naftiko: "0.5"
info:
label: "New Product Introduction Pipeline"
description: "Coordinates NPI milestones in Jira, validates BOM readiness in SAP, trains dealers via Salesforce, and notifies product management."
tags:
- npi
- jira
- sap
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: npi
port: 8080
tools:
- name: new_product_introduction_pipeline
description: "Orchestrate new product introduction pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-salesforce
type: call
call: "salesforce.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves Okta user profile for AGCO identity management.
naftiko: "0.5"
info:
label: "Okta User Profile Lookup"
description: "Retrieves Okta user profile for AGCO identity management."
tags:
- security
- okta
- identity
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user
description: "Look up user at AGCO."
inputParameters:
- name: user_email
in: body
type: string
description: "The user_email to look up."
call: "okta.get-user_email"
with:
user_email: "{{user_email}}"
consumes:
- type: http
namespace: okta
baseUri: "https://agco.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta_user_profile_lookup
method: GET
Queries Oracle E-Business Suite for supplier master data by supplier number, returning name, payment terms, and qualification status.
naftiko: "0.5"
info:
label: "Oracle EBS Supplier Lookup"
description: "Queries Oracle E-Business Suite for supplier master data by supplier number, returning name, payment terms, and qualification status."
tags:
- supply-chain
- oracle
- oracle-ebs
- procurement
capability:
exposes:
- type: mcp
namespace: supplier-master
port: 8080
tools:
- name: get-supplier
description: "Look up an AGCO supplier in Oracle E-Business Suite by supplier number. Returns name, payment terms, and qualification status."
inputParameters:
- name: supplier_number
in: body
type: string
description: "The Oracle supplier number."
call: "oracle-ebs.get-supplier"
with:
supplier_num: "{{supplier_number}}"
outputParameters:
- name: supplier_name
type: string
mapping: "$.Supplier.VendorName"
- name: payment_terms
type: string
mapping: "$.Supplier.PaymentTerms"
- name: qualification_status
type: string
mapping: "$.Supplier.QualificationStatus"
consumes:
- type: http
namespace: oracle-ebs
baseUri: "https://oracle-ebs.agcocorp.com/webservices/rest"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: suppliers
path: "/suppliers/{{supplier_num}}"
inputParameters:
- name: supplier_num
in: path
operations:
- name: get-supplier
method: GET
Retrieves PagerDuty incident details for AGCO on-call teams.
naftiko: "0.5"
info:
label: "PagerDuty Incident Details"
description: "Retrieves PagerDuty incident details for AGCO on-call teams."
tags:
- devops
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: incident-mgmt
port: 8080
tools:
- name: get-incident
description: "Look up incident at AGCO."
inputParameters:
- name: incident_id
in: body
type: string
description: "The incident_id to look up."
call: "pagerduty.get-incident_id"
with:
incident_id: "{{incident_id}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty_incident_details
method: GET
Analyzes parts consumption from SAP, runs ML forecasts in Snowflake, updates reorder points, generates reports, and notifies supply chain.
naftiko: "0.5"
info:
label: "Parts Demand Forecasting Pipeline"
description: "Analyzes parts consumption from SAP, runs ML forecasts in Snowflake, updates reorder points, generates reports, and notifies supply chain."
tags:
- supply-chain
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: parts_demand_forecasting_pipeline
description: "Orchestrate parts demand forecasting pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
When SAP inventory drops below reorder point, creates a purchase requisition in SAP, notifies procurement in Microsoft Teams, and logs the event in ServiceNow for tracking.
naftiko: "0.5"
info:
label: "Parts Reorder Automation"
description: "When SAP inventory drops below reorder point, creates a purchase requisition in SAP, notifies procurement in Microsoft Teams, and logs the event in ServiceNow for tracking."
tags:
- supply-chain
- sap
- procurement
- microsoft-teams
- servicenow
- inventory
capability:
exposes:
- type: mcp
namespace: parts-reorder
port: 8080
tools:
- name: trigger-parts-reorder
description: "Trigger an automated parts reorder: check stock in SAP, create purchase requisition, notify procurement in Teams, and log in ServiceNow."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: plant_code
in: body
type: string
description: "The SAP plant code."
- name: reorder_quantity
in: body
type: string
description: "The quantity to reorder."
steps:
- name: check-stock
type: call
call: "sap.get-material-stock"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
- name: create-requisition
type: call
call: "sap.create-purchase-req"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
quantity: "{{reorder_quantity}}"
delivery_date: "{{check-stock.next_available_date}}"
- name: notify-procurement
type: call
call: "msteams.send-message"
with:
channel_id: "procurement-alerts"
text: "Auto-reorder triggered for material {{material_number}} at plant {{plant_code}}. PR: {{create-requisition.pr_number}}. Current stock: {{check-stock.available_qty}}."
- name: log-event
type: call
call: "servicenow.create-incident"
with:
short_description: "Parts reorder: {{material_number}} at {{plant_code}}"
description: "Purchase requisition {{create-requisition.pr_number}} created. Reorder qty: {{reorder_quantity}}."
category: "supply_chain"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQUISITION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
- name: sap-client
in: header
value: "200"
resources:
- name: stock
path: "/A_MaterialStock('{{material}}')?$filter=Plant eq '{{plant}}'"
inputParameters:
- name: material
in: path
- name: plant
in: query
operations:
- name: get-material-stock
method: GET
- name: requisitions
path: "/A_PurchaseRequisition"
operations:
- name: create-purchase-req
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.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
Refreshes a Power BI dataset for a manufacturing plant and returns the latest OEE, throughput, and downtime KPIs.
naftiko: "0.5"
info:
label: "Power BI Manufacturing KPI Snapshot"
description: "Refreshes a Power BI dataset for a manufacturing plant and returns the latest OEE, throughput, and downtime KPIs."
tags:
- manufacturing
- power-bi
- analytics
- kpi
capability:
exposes:
- type: mcp
namespace: manufacturing-analytics
port: 8080
tools:
- name: get-plant-kpis
description: "Retrieve the latest manufacturing KPIs from Power BI for a given plant code. Returns OEE, throughput, and downtime hours."
inputParameters:
- name: plant_code
in: body
type: string
description: "The AGCO manufacturing plant code."
call: "powerbi.get-report-data"
with:
plant_code: "{{plant_code}}"
outputParameters:
- name: oee_percent
type: string
mapping: "$.tables[0].rows[0].OEE"
- name: throughput_units
type: string
mapping: "$.tables[0].rows[0].Throughput"
- name: downtime_hours
type: string
mapping: "$.tables[0].rows[0].DowntimeHours"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg/groups"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/{{group_id}}/datasets/{{dataset_id}}/executeQueries"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-report-data
method: POST
Triggers Power BI dataset refresh for AGCO reporting.
naftiko: "0.5"
info:
label: "Power BI Refresh Trigger"
description: "Triggers Power BI dataset refresh for AGCO reporting."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: trigger-refresh
description: "Trigger refresh at AGCO."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The dataset_id to look up."
call: "powerbi.get-dataset_id"
with:
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: power_bi_refresh_trigger
method: GET
Ingests precision ag sensor data, processes in Snowflake, generates field analytics, updates dealer dashboards, and notifies agronomists.
naftiko: "0.5"
info:
label: "Precision Agriculture Data Pipeline"
description: "Ingests precision ag sensor data, processes in Snowflake, generates field analytics, updates dealer dashboards, and notifies agronomists."
tags:
- precision-ag
- snowflake
- powerbi
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: precision-ag
port: 8080
tools:
- name: precision_agriculture_data_pipeline
description: "Orchestrate precision agriculture data pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
Pulls field boundary and yield data from the AGCO Fuse platform, stores it in Amazon S3, indexes it in Elasticsearch, and triggers a Databricks analytics job.
naftiko: "0.5"
info:
label: "Precision Agriculture Data Sync"
description: "Pulls field boundary and yield data from the AGCO Fuse platform, stores it in Amazon S3, indexes it in Elasticsearch, and triggers a Databricks analytics job."
tags:
- precision-agriculture
- iot
- amazon-s3
- elasticsearch
- databricks
capability:
exposes:
- type: mcp
namespace: precision-ag-sync
port: 8080
tools:
- name: sync-field-data
description: "Sync precision agriculture data from Fuse to S3, index in Elasticsearch, and trigger Databricks analytics."
inputParameters:
- name: farm_id
in: body
type: string
description: "The farm identifier in AGCO Fuse."
- name: field_id
in: body
type: string
description: "The field identifier."
- name: season
in: body
type: string
description: "The crop season (e.g. 2026-spring)."
steps:
- name: get-field-data
type: call
call: "fuse-ag.get-field-data"
with:
farm_id: "{{farm_id}}"
field_id: "{{field_id}}"
season: "{{season}}"
- name: store-to-s3
type: call
call: "s3.put-object"
with:
bucket: "agco-precision-ag"
key: "fields/{{farm_id}}/{{field_id}}/{{season}}/yield-data.json"
body: "{{get-field-data.payload}}"
- name: index-data
type: call
call: "elasticsearch.index-document"
with:
index: "precision-ag-fields"
body:
farm_id: "{{farm_id}}"
field_id: "{{field_id}}"
season: "{{season}}"
yield_avg: "{{get-field-data.avg_yield}}"
s3_uri: "{{store-to-s3.location}}"
- name: trigger-analytics
type: call
call: "databricks.run-job"
with:
job_id: "precision-ag-pipeline"
parameters:
s3_path: "{{store-to-s3.location}}"
farm_id: "{{farm_id}}"
consumes:
- type: http
namespace: fuse-ag
baseUri: "https://fuse-api.agcocorp.com/precision/v2"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: fields
path: "/farms/{{farm_id}}/fields/{{field_id}}/data?season={{season}}"
inputParameters:
- name: farm_id
in: path
- name: field_id
in: path
- name: season
in: query
operations:
- name: get-field-data
method: GET
- type: http
namespace: s3
baseUri: "https://agco-precision-ag.s3.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
accessKeyId: "$secrets.aws_access_key"
secretAccessKey: "$secrets.aws_secret_key"
region: "us-east-1"
resources:
- name: objects
path: "/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: elasticsearch
baseUri: "https://agco-es.us-east-1.es.amazonaws.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: documents
path: "/{{index}}/_doc"
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: databricks
baseUri: "https://agco.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
Tracks product certifications and expirations in SAP, creates renewal tasks in Jira, validates compliance, and notifies regulatory.
naftiko: "0.5"
info:
label: "Product Certification Tracking Pipeline"
description: "Tracks product certifications and expirations in SAP, creates renewal tasks in Jira, validates compliance, and notifies regulatory."
tags:
- regulatory
- sap
- jira
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: regulatory
port: 8080
tools:
- name: product_certification_tracking_pipeline
description: "Orchestrate product certification tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Validates product configurations from Salesforce CPQ against SAP BOM rules, identifies errors, and notifies order management.
naftiko: "0.5"
info:
label: "Product Configuration Validation Pipeline"
description: "Validates product configurations from Salesforce CPQ against SAP BOM rules, identifies errors, and notifies order management."
tags:
- product-config
- salesforce
- sap
- jira
- slack
capability:
exposes:
- type: mcp
namespace: product-config
port: 8080
tools:
- name: product_configuration_validation_pipelin
description: "Orchestrate product configuration validation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-jira
type: call
call: "jira.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a production line stops, captures OEE data from Power BI, creates a Jira incident for manufacturing engineering, logs to Datadog, and notifies the plant manager in Teams.
naftiko: "0.5"
info:
label: "Production Line Downtime Reporter"
description: "When a production line stops, captures OEE data from Power BI, creates a Jira incident for manufacturing engineering, logs to Datadog, and notifies the plant manager in Teams."
tags:
- manufacturing
- power-bi
- jira
- datadog
- microsoft-teams
- downtime
capability:
exposes:
- type: mcp
namespace: downtime-reporter
port: 8080
tools:
- name: report-line-downtime
description: "Report a production line downtime event: capture Power BI KPIs, create Jira incident, log to Datadog, and notify plant manager."
inputParameters:
- name: line_id
in: body
type: string
description: "The production line identifier."
- name: plant_code
in: body
type: string
description: "The plant code."
- name: reason_code
in: body
type: string
description: "The downtime reason code."
steps:
- name: get-kpis
type: call
call: "powerbi.get-report-data"
with:
line_id: "{{line_id}}"
plant_code: "{{plant_code}}"
- name: create-incident
type: call
call: "jira.create-issue"
with:
project: "MFG"
summary: "Line {{line_id}} down at {{plant_code}} - {{reason_code}}"
description: "OEE at time of stop: {{get-kpis.oee_percent}}%. Throughput: {{get-kpis.throughput_units}} units."
issuetype: "Bug"
priority: "Critical"
- name: log-downtime
type: call
call: "datadog.post-event"
with:
title: "Production line {{line_id}} down at {{plant_code}}"
text: "Reason: {{reason_code}}. OEE: {{get-kpis.oee_percent}}%. Jira: {{create-incident.key}}."
alert_type: "error"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "plant-{{plant_code}}-alerts"
text: "DOWNTIME: Line {{line_id}} stopped. Reason: {{reason_code}}. OEE: {{get-kpis.oee_percent}}%. Jira: {{create-incident.key}}."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg/groups"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/{{group_id}}/datasets/{{dataset_id}}/executeQueries"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: get-report-data
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: events
path: "/events"
operations:
- name: post-event
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Collects SPC data from manufacturing, runs statistical analysis in Snowflake, detects out-of-control processes, and alerts quality engineering.
naftiko: "0.5"
info:
label: "Production Quality SPC Pipeline"
description: "Collects SPC data from manufacturing, runs statistical analysis in Snowflake, detects out-of-control processes, and alerts quality engineering."
tags:
- quality
- sap
- snowflake
- grafana
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: production_quality_spc_pipeline
description: "Orchestrate production quality spc pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: grafana
baseUri: "https://agco-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Analyzes demand from Salesforce, optimizes production schedule in SAP, validates capacity in Snowflake, and notifies manufacturing.
naftiko: "0.5"
info:
label: "Production Scheduling Optimizer"
description: "Analyzes demand from Salesforce, optimizes production schedule in SAP, validates capacity in Snowflake, and notifies manufacturing."
tags:
- manufacturing
- salesforce
- sap
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: production_scheduling_optimizer
description: "Orchestrate production scheduling optimizer workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-snowflake
type: call
call: "snowflake.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Detects quality escapes from field reports, traces root cause in SAP, creates investigation in Jira, updates CAPA log, and notifies quality.
naftiko: "0.5"
info:
label: "Quality Escape Investigation Pipeline"
description: "Detects quality escapes from field reports, traces root cause in SAP, creates investigation in Jira, updates CAPA log, and notifies quality."
tags:
- quality
- sap
- jira
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: quality_escape_investigation_pipeline
description: "Orchestrate quality escape investigation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Identifies affected machines in SAP, notifies dealers via Salesforce, tracks remediation progress, and reports to regulatory.
naftiko: "0.5"
info:
label: "Safety Recall Execution Pipeline"
description: "Identifies affected machines in SAP, notifies dealers via Salesforce, tracks remediation progress, and reports to regulatory."
tags:
- safety
- sap
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: safety
port: 8080
tools:
- name: safety_recall_execution_pipeline
description: "Orchestrate safety recall execution pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Triggers a SailPoint access review campaign, fetches user entitlements, creates a Jira governance ticket for review, and notifies security in Teams.
naftiko: "0.5"
info:
label: "SailPoint Access Review Workflow"
description: "Triggers a SailPoint access review campaign, fetches user entitlements, creates a Jira governance ticket for review, and notifies security in Teams."
tags:
- security
- sailpoint
- jira
- microsoft-teams
- identity-governance
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: trigger-access-review
description: "Trigger a SailPoint access review: get user entitlements, create Jira governance ticket, and notify security team."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The access review campaign name."
- name: target_application
in: body
type: string
description: "The application to review access for."
steps:
- name: get-entitlements
type: call
call: "sailpoint.get-entitlements"
with:
application: "{{target_application}}"
- name: create-campaign
type: call
call: "sailpoint.create-campaign"
with:
name: "{{campaign_name}}"
application: "{{target_application}}"
entitlement_count: "{{get-entitlements.count}}"
- name: create-governance-ticket
type: call
call: "jira.create-issue"
with:
project: "SEC"
summary: "Access review: {{campaign_name}} - {{target_application}}"
description: "Campaign ID: {{create-campaign.campaign_id}}. Entitlements to review: {{get-entitlements.count}}."
issuetype: "Task"
priority: "Medium"
- name: notify-security
type: call
call: "msteams.send-message"
with:
channel_id: "security-governance"
text: "Access review campaign started: {{campaign_name}} for {{target_application}}. Entitlements: {{get-entitlements.count}}. Jira: {{create-governance-ticket.key}}."
consumes:
- type: http
namespace: sailpoint
baseUri: "https://agco.api.identitynow.com/v3"
authentication:
type: bearer
token: "$secrets.sailpoint_token"
resources:
- name: entitlements
path: "/entitlements?filters=source.name eq '{{application}}'"
inputParameters:
- name: application
in: query
operations:
- name: get-entitlements
method: GET
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves Salesforce account details for AGCO sales teams.
naftiko: "0.5"
info:
label: "Salesforce Account Info"
description: "Retrieves Salesforce account details for AGCO sales teams."
tags:
- crm
- salesforce
- accounts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account
description: "Look up account at AGCO."
inputParameters:
- name: account_id
in: body
type: string
description: "The account_id to look up."
call: "salesforce.get-account_id"
with:
account_id: "{{account_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce_account_info
method: GET
Retrieves details of a sourcing event in SAP Ariba including event type, status, bid count, and award date.
naftiko: "0.5"
info:
label: "SAP Ariba Sourcing Event Lookup"
description: "Retrieves details of a sourcing event in SAP Ariba including event type, status, bid count, and award date."
tags:
- procurement
- sap-ariba
- sourcing
capability:
exposes:
- type: mcp
namespace: strategic-sourcing
port: 8080
tools:
- name: get-sourcing-event
description: "Look up a SAP Ariba sourcing event by event ID. Returns event type, status, number of bids, and award date."
inputParameters:
- name: event_id
in: body
type: string
description: "The SAP Ariba sourcing event ID."
call: "ariba.get-event"
with:
event_id: "{{event_id}}"
outputParameters:
- name: event_type
type: string
mapping: "$.event.eventType"
- name: status
type: string
mapping: "$.event.status"
- name: bid_count
type: string
mapping: "$.event.bidCount"
- name: award_date
type: string
mapping: "$.event.awardDate"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/sourcing/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: events
path: "/events/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
When an employee submits a travel request in SAP Concur, retrieves manager approval from Workday, validates against budget in SAP, and notifies the employee in Teams.
naftiko: "0.5"
info:
label: "SAP Concur Travel Request Pipeline"
description: "When an employee submits a travel request in SAP Concur, retrieves manager approval from Workday, validates against budget in SAP, and notifies the employee in Teams."
tags:
- travel
- sap-concur
- workday
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-management
port: 8080
tools:
- name: process-travel-request
description: "Process a travel request from SAP Concur: get request details, check budget in SAP, find approver in Workday, and notify in Teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The SAP Concur travel request ID."
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
steps:
- name: get-request
type: call
call: "concur.get-travel-request"
with:
request_id: "{{request_id}}"
- name: check-budget
type: call
call: "sap.check-cost-center-budget"
with:
cost_center: "{{get-request.cost_center}}"
amount: "{{get-request.total_amount}}"
- name: get-approver
type: call
call: "workday.get-manager"
with:
worker_id: "{{employee_id}}"
- name: notify-employee
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-request.requestor_email}}"
text: "Travel request {{request_id}} (${{get-request.total_amount}}) routed to {{get-approver.full_name}} for approval. Budget status: {{check-budget.status}}."
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: travel-requests
path: "/travelrequest/requests/{{request_id}}"
inputParameters:
- name: request_id
in: path
operations:
- name: get-travel-request
method: GET
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/FI_COST_CENTER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: budgets
path: "/A_CostCenterBudget('{{cost_center}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: check-cost-center-budget
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: managers
path: "/workers/{{worker_id}}/manager"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-manager
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When goods are received in SAP, creates a quality inspection lot, assigns an inspector via Workday skills lookup, and notifies the receiving team in Teams.
naftiko: "0.5"
info:
label: "SAP Goods Receipt to Quality Inspection"
description: "When goods are received in SAP, creates a quality inspection lot, assigns an inspector via Workday skills lookup, and notifies the receiving team in Teams."
tags:
- quality
- sap
- workday
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: goods-receipt-qc
port: 8080
tools:
- name: trigger-quality-inspection
description: "Trigger a quality inspection on goods receipt: create SAP inspection lot, find inspector in Workday, and notify receiving team."
inputParameters:
- name: purchase_order
in: body
type: string
description: "The SAP purchase order number."
- name: material_number
in: body
type: string
description: "The material number received."
- name: plant_code
in: body
type: string
description: "The receiving plant code."
steps:
- name: create-inspection-lot
type: call
call: "sap-qm.create-inspection-lot"
with:
purchase_order: "{{purchase_order}}"
material: "{{material_number}}"
plant: "{{plant_code}}"
- name: find-inspector
type: call
call: "workday.search-workers"
with:
skill: "quality_inspection"
location: "{{plant_code}}"
- name: notify-receiving
type: call
call: "msteams.send-message"
with:
channel_id: "plant-{{plant_code}}-receiving"
text: "Goods received for PO {{purchase_order}}, material {{material_number}}. Inspection lot: {{create-inspection-lot.lot_number}}. Inspector: {{find-inspector.name}}."
consumes:
- type: http
namespace: sap-qm
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/QM_INSPECTION_LOT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspection-lots
path: "/A_InspectionLot"
operations:
- name: create-inspection-lot
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers?skill={{skill}}&location={{location}}"
inputParameters:
- name: skill
in: query
- name: location
in: query
operations:
- name: search-workers
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries SAP S/4HANA material master to return current stock levels, reorder point, and warehouse location for a given AGCO part number.
naftiko: "0.5"
info:
label: "SAP Parts Inventory Check"
description: "Queries SAP S/4HANA material master to return current stock levels, reorder point, and warehouse location for a given AGCO part number."
tags:
- inventory
- erp
- sap
- supply-chain
capability:
exposes:
- type: mcp
namespace: parts-inventory
port: 8080
tools:
- name: get-part-stock
description: "Look up current inventory for an AGCO part number in SAP. Returns available stock, reorder point, and storage bin."
inputParameters:
- name: part_number
in: body
type: string
description: "The AGCO material/part number (10-digit)."
call: "sap.get-material-stock"
with:
material: "{{part_number}}"
outputParameters:
- name: available_qty
type: string
mapping: "$.d.AvailableStock"
- name: reorder_point
type: string
mapping: "$.d.ReorderPoint"
- name: storage_location
type: string
mapping: "$.d.StorageLocation"
- name: plant
type: string
mapping: "$.d.Plant"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_DATA_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
- name: sap-client
in: header
value: "200"
resources:
- name: material-stocks
path: "/A_MaterialStock('{{material}}')"
inputParameters:
- name: material
in: path
operations:
- name: get-material-stock
method: GET
Reads machine engine hours from Fuse telematics, checks the SAP PM maintenance plan, creates a maintenance order if due, and notifies the service team in Teams.
naftiko: "0.5"
info:
label: "SAP Preventive Maintenance Scheduler"
description: "Reads machine engine hours from Fuse telematics, checks the SAP PM maintenance plan, creates a maintenance order if due, and notifies the service team in Teams."
tags:
- maintenance
- sap
- telematics
- iot
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: preventive-maintenance
port: 8080
tools:
- name: check-and-schedule-maintenance
description: "Check machine hours from Fuse telematics, evaluate SAP PM plan, create maintenance order if due, and notify service team."
inputParameters:
- name: machine_serial
in: body
type: string
description: "The machine serial number."
- name: maintenance_plan_id
in: body
type: string
description: "The SAP PM maintenance plan ID."
steps:
- name: get-hours
type: call
call: "fuse-telematics.get-machine"
with:
serial: "{{machine_serial}}"
- name: check-plan
type: call
call: "sap-pm.get-maintenance-plan"
with:
plan_id: "{{maintenance_plan_id}}"
current_hours: "{{get-hours.engine_hours}}"
- name: create-order
type: call
call: "sap-pm.create-maintenance-order"
with:
equipment_serial: "{{machine_serial}}"
plan_id: "{{maintenance_plan_id}}"
description: "Preventive maintenance at {{get-hours.engine_hours}} hours"
- name: notify-service
type: call
call: "msteams.send-message"
with:
channel_id: "service-scheduling"
text: "PM scheduled for {{machine_serial}} at {{get-hours.engine_hours}} hrs. Order: {{create-order.order_number}}. Next due: {{check-plan.next_interval}} hrs."
consumes:
- type: http
namespace: fuse-telematics
baseUri: "https://fuse-api.agcocorp.com/telematics/v2"
authentication:
type: bearer
token: "$secrets.agco_fuse_token"
resources:
- name: machines
path: "/machines/{{serial}}"
inputParameters:
- name: serial
in: path
operations:
- name: get-machine
method: GET
- type: http
namespace: sap-pm
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-plans
path: "/A_MaintenancePlan('{{plan_id}}')"
inputParameters:
- name: plan_id
in: path
operations:
- name: get-maintenance-plan
method: GET
- name: maintenance-orders
path: "/A_MaintenanceOrder"
operations:
- name: create-maintenance-order
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a SAP production order is released, retrieves the BOM, pushes work instructions to the MES via Apache Kafka, logs the handoff in Elasticsearch, and notifies the plant floor supervisor in Teams.
naftiko: "0.5"
info:
label: "SAP Production Order to MES Bridge"
description: "When a SAP production order is released, retrieves the BOM, pushes work instructions to the MES via Apache Kafka, logs the handoff in Elasticsearch, and notifies the plant floor supervisor in Teams."
tags:
- manufacturing
- sap
- apache-kafka
- elasticsearch
- microsoft-teams
- mes
capability:
exposes:
- type: mcp
namespace: production-mes
port: 8080
tools:
- name: bridge-order-to-mes
description: "Bridge a SAP production order to MES: get BOM, publish to Kafka, index in Elasticsearch, and notify supervisor."
inputParameters:
- name: production_order
in: body
type: string
description: "The SAP production order number."
- name: plant_code
in: body
type: string
description: "The plant code."
steps:
- name: get-order
type: call
call: "sap.get-production-order"
with:
order_number: "{{production_order}}"
- name: get-bom
type: call
call: "sap.get-bom"
with:
material: "{{get-order.material}}"
- name: publish-to-kafka
type: call
call: "kafka.produce-message"
with:
topic: "mes-work-instructions-{{plant_code}}"
key: "{{production_order}}"
value:
order: "{{production_order}}"
material: "{{get-order.material}}"
quantity: "{{get-order.planned_quantity}}"
bom: "{{get-bom.components}}"
- name: log-handoff
type: call
call: "elasticsearch.index-document"
with:
index: "production-mes-handoffs"
body:
order: "{{production_order}}"
plant: "{{plant_code}}"
material: "{{get-order.material}}"
timestamp: "now"
- name: notify-supervisor
type: call
call: "msteams.send-message"
with:
channel_id: "plant-{{plant_code}}-production"
text: "Production order {{production_order}} released to MES. Material: {{get-order.material}}. Qty: {{get-order.planned_quantity}}. BOM components: {{get-bom.component_count}}."
consumes:
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PP_PRODUCTION_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: production-orders
path: "/A_ProductionOrder('{{order_number}}')"
inputParameters:
- name: order_number
in: path
operations:
- name: get-production-order
method: GET
- name: boms
path: "/A_BillOfMaterial('{{material}}')"
inputParameters:
- name: material
in: path
operations:
- name: get-bom
method: GET
- type: http
namespace: kafka
baseUri: "https://kafka-rest.agcocorp.com/v2"
authentication:
type: basic
username: "$secrets.kafka_user"
password: "$secrets.kafka_password"
resources:
- name: topics
path: "/topics/{{topic}}"
inputParameters:
- name: topic
in: path
operations:
- name: produce-message
method: POST
- type: http
namespace: elasticsearch
baseUri: "https://agco-es.us-east-1.es.amazonaws.com"
authentication:
type: basic
username: "$secrets.es_user"
password: "$secrets.es_password"
resources:
- name: documents
path: "/{{index}}/_doc"
inputParameters:
- name: index
in: path
operations:
- name: index-document
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a SAP purchase order is created above a spend threshold, retrieves the approver from Workday, sends an approval request in Teams, and updates the PO status in SAP upon approval.
naftiko: "0.5"
info:
label: "SAP Purchase Order Approval Router"
description: "When a SAP purchase order is created above a spend threshold, retrieves the approver from Workday, sends an approval request in Teams, and updates the PO status in SAP upon approval."
tags:
- procurement
- sap
- workday
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: po-approval
port: 8080
tools:
- name: route-po-approval
description: "Route a SAP purchase order for approval: fetch PO details, find approver in Workday, request approval in Teams."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
- name: requestor_employee_id
in: body
type: string
description: "The Workday employee ID of the requestor."
steps:
- name: get-po
type: call
call: "sap.get-purchase-order"
with:
po_number: "{{po_number}}"
- name: get-approver
type: call
call: "workday.get-manager"
with:
worker_id: "{{requestor_employee_id}}"
- name: request-approval
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-approver.work_email}}"
text: "PO {{po_number}} requires your approval. Amount: {{get-po.total_value}} {{get-po.currency}}. Supplier: {{get-po.vendor}}. Please approve or reject."
consumes:
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-purchase-order
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: managers
path: "/workers/{{worker_id}}/manager"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-manager
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a SAP sales order is created for a dealer, retrieves dealer contact from Salesforce, generates a confirmation document in SharePoint, and emails notification via Microsoft Outlook.
naftiko: "0.5"
info:
label: "SAP Sales Order to Dealer Notification"
description: "When a SAP sales order is created for a dealer, retrieves dealer contact from Salesforce, generates a confirmation document in SharePoint, and emails notification via Microsoft Outlook."
tags:
- sales
- sap
- salesforce
- sharepoint
- microsoft-outlook
- dealer-management
capability:
exposes:
- type: mcp
namespace: sales-order-notify
port: 8080
tools:
- name: notify-dealer-sales-order
description: "Notify a dealer about a new SAP sales order: get order details, find dealer contact in Salesforce, create confirmation doc in SharePoint, and email notification."
inputParameters:
- name: sales_order_number
in: body
type: string
description: "The SAP sales order number."
- name: dealer_code
in: body
type: string
description: "The dealer code."
steps:
- name: get-order
type: call
call: "sap-sd.get-sales-order"
with:
order_number: "{{sales_order_number}}"
- name: get-dealer-contact
type: call
call: "salesforce.get-dealer-contact"
with:
dealer_code: "{{dealer_code}}"
- name: create-confirmation
type: call
call: "sharepoint.upload-file"
with:
site_id: "dealer_orders"
folder_path: "Confirmations/{{dealer_code}}"
file_name: "SO_{{sales_order_number}}.pdf"
- name: send-email
type: call
call: "outlook.send-mail"
with:
to: "{{get-dealer-contact.email}}"
subject: "AGCO Sales Order {{sales_order_number}} Confirmation"
body: "Dear {{get-dealer-contact.name}}, your order {{sales_order_number}} for ${{get-order.total_value}} has been confirmed. Estimated delivery: {{get-order.delivery_date}}. Confirmation: {{create-confirmation.url}}."
consumes:
- type: http
namespace: sap-sd
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder('{{order_number}}')"
inputParameters:
- name: order_number
in: path
operations:
- name: get-sales-order
method: GET
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/query?q=SELECT+Name,Email+FROM+Contact+WHERE+Account.Dealer_Code__c='{{dealer_code}}'+AND+Primary__c=true"
inputParameters:
- name: dealer_code
in: query
operations:
- name: get-dealer-contact
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{sender_upn}}/sendMail"
inputParameters:
- name: sender_upn
in: path
operations:
- name: send-mail
method: POST
Pulls historical sales data from Salesforce, runs a demand forecast in Databricks, updates safety stock levels in SAP, and distributes the forecast report via SharePoint and Teams.
naftiko: "0.5"
info:
label: "Seasonal Demand Forecast Pipeline"
description: "Pulls historical sales data from Salesforce, runs a demand forecast in Databricks, updates safety stock levels in SAP, and distributes the forecast report via SharePoint and Teams."
tags:
- forecasting
- salesforce
- databricks
- sap
- sharepoint
- microsoft-teams
- supply-chain
capability:
exposes:
- type: mcp
namespace: demand-forecast
port: 8080
tools:
- name: run-seasonal-forecast
description: "Run a seasonal demand forecast: pull Salesforce sales history, run Databricks ML model, update SAP safety stock, and distribute report."
inputParameters:
- name: product_line
in: body
type: string
description: "The product line code (e.g. TRACTORS, COMBINES)."
- name: forecast_horizon
in: body
type: string
description: "Forecast horizon in months."
- name: region
in: body
type: string
description: "The sales region."
steps:
- name: get-sales-history
type: call
call: "salesforce.get-sales-data"
with:
product_line: "{{product_line}}"
region: "{{region}}"
- name: run-forecast
type: call
call: "databricks.run-job"
with:
job_id: "demand-forecast-pipeline"
parameters:
product_line: "{{product_line}}"
region: "{{region}}"
horizon: "{{forecast_horizon}}"
history_data: "{{get-sales-history.records}}"
- name: update-safety-stock
type: call
call: "sap.update-safety-stock"
with:
product_line: "{{product_line}}"
region: "{{region}}"
forecast_qty: "{{run-forecast.recommended_stock}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "supply_chain_planning"
folder_path: "Forecasts/{{product_line}}/{{region}}"
file_name: "forecast_{{forecast_horizon}}m.pdf"
- name: notify-planners
type: call
call: "msteams.send-message"
with:
channel_id: "supply-planning"
text: "Forecast complete for {{product_line}} in {{region}}. Horizon: {{forecast_horizon}} months. Recommended stock: {{run-forecast.recommended_stock}} units. Report: {{upload-report.url}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: sales-data
path: "/query?q=SELECT+Product_Line__c,Region__c,Amount,CloseDate+FROM+Opportunity+WHERE+Product_Line__c='{{product_line}}'+AND+Region__c='{{region}}'"
inputParameters:
- name: product_line
in: query
- name: region
in: query
operations:
- name: get-sales-data
method: GET
- type: http
namespace: databricks
baseUri: "https://agco.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_DATA_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: safety-stock
path: "/A_MaterialSafetyStock"
operations:
- name: update-safety-stock
method: PATCH
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- 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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Plans seasonal ramp-up using Snowflake forecasts, adjusts SAP capacity, coordinates staffing via Workday, and notifies operations.
naftiko: "0.5"
info:
label: "Seasonal Production Ramp Orchestrator"
description: "Plans seasonal ramp-up using Snowflake forecasts, adjusts SAP capacity, coordinates staffing via Workday, and notifies operations."
tags:
- manufacturing
- snowflake
- sap
- workday
- slack
capability:
exposes:
- type: mcp
namespace: manufacturing
port: 8080
tools:
- name: seasonal_production_ramp_orchestrator
description: "Orchestrate seasonal production ramp orchestrator workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-snowflake
type: call
call: "snowflake.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-sap
type: call
call: "sap.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-workday
type: call
call: "workday.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks ServiceNow incident status for AGCO IT operations.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Check"
description: "Checks ServiceNow incident status for AGCO IT operations."
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: "Look up incident at AGCO."
inputParameters:
- name: incident_id
in: body
type: string
description: "The incident_id to look up."
call: "servicenow.get-incident_id"
with:
incident_id: "{{incident_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow_incident_status_che
method: GET
Looks up a field service work order in ServiceNow by work order number and returns status, assigned technician, and scheduled date.
naftiko: "0.5"
info:
label: "ServiceNow Work Order Status"
description: "Looks up a field service work order in ServiceNow by work order number and returns status, assigned technician, and scheduled date."
tags:
- field-service
- servicenow
- maintenance
capability:
exposes:
- type: mcp
namespace: field-service
port: 8080
tools:
- name: get-work-order
description: "Look up a ServiceNow field service work order by number. Returns status, assigned technician, and scheduled completion date."
inputParameters:
- name: work_order_number
in: body
type: string
description: "The ServiceNow work order number."
call: "servicenow.get-work-order"
with:
number: "{{work_order_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
- name: scheduled_date
type: string
mapping: "$.result.scheduled_date"
consumes:
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: work-orders
path: "/table/wm_order?sysparm_query=number={{number}}"
inputParameters:
- name: number
in: query
operations:
- name: get-work-order
method: GET
Sends a message to a Slack channel for AGCO notifications.
naftiko: "0.5"
info:
label: "Slack Channel Post"
description: "Sends a message to a Slack channel for AGCO notifications."
tags:
- collaboration
- slack
- messaging
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: send-message
description: "Post to Slack at AGCO."
inputParameters:
- name: channel
in: body
type: string
description: "The channel to look up."
call: "slack.get-channel"
with:
channel: "{{channel}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack_channel_post
method: GET
Executes SQL queries against AGCO Snowflake warehouse.
naftiko: "0.5"
info:
label: "Snowflake Query Executor"
description: "Executes SQL queries against AGCO Snowflake warehouse."
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-query
description: "Run query at AGCO."
inputParameters:
- name: sql_query
in: body
type: string
description: "The sql_query to look up."
call: "snowflake.get-sql_query"
with:
sql_query: "{{sql_query}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake_query_executor
method: GET
Searches Splunk indexes for log entries at AGCO.
naftiko: "0.5"
info:
label: "Splunk Log Search"
description: "Searches Splunk indexes for log entries at AGCO."
tags:
- devops
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: logging
port: 8080
tools:
- name: search-logs
description: "Search Splunk logs for AGCO."
inputParameters:
- name: query
in: body
type: string
description: "The query to look up."
call: "splunk.get-query"
with:
query: "{{query}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://agco-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk_log_search
method: GET
Tracks supplier deliveries from SAP, monitors on-time performance in Snowflake, creates escalations for delays, and notifies procurement.
naftiko: "0.5"
info:
label: "Supplier Delivery Tracking Pipeline"
description: "Tracks supplier deliveries from SAP, monitors on-time performance in Snowflake, creates escalations for delays, and notifies procurement."
tags:
- procurement
- sap
- snowflake
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: supplier_delivery_tracking_pipeline
description: "Orchestrate supplier delivery tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-servicenow
type: call
call: "servicenow.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a quality inspection fails, records the nonconformance in SAP QM, creates a Jira corrective action ticket, notifies the supplier via Salesforce, and alerts quality engineering in Teams.
naftiko: "0.5"
info:
label: "Supplier Quality Nonconformance Workflow"
description: "When a quality inspection fails, records the nonconformance in SAP QM, creates a Jira corrective action ticket, notifies the supplier via Salesforce, and alerts quality engineering in Teams."
tags:
- quality
- sap
- jira
- salesforce
- microsoft-teams
- supply-chain
capability:
exposes:
- type: mcp
namespace: quality-management
port: 8080
tools:
- name: raise-nonconformance
description: "Raise a supplier nonconformance: record in SAP QM, create Jira corrective action, notify supplier via Salesforce, and alert quality team in Teams."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: supplier_number
in: body
type: string
description: "The SAP supplier number."
- name: defect_description
in: body
type: string
description: "Description of the quality defect."
- name: lot_number
in: body
type: string
description: "The inspection lot number."
steps:
- name: record-ncr
type: call
call: "sap-qm.create-notification"
with:
material: "{{material_number}}"
supplier: "{{supplier_number}}"
defect_text: "{{defect_description}}"
lot: "{{lot_number}}"
- name: create-capa
type: call
call: "jira.create-issue"
with:
project: "CAPA"
summary: "NCR {{record-ncr.notification_id}}: {{material_number}} from supplier {{supplier_number}}"
description: "{{defect_description}}. Lot: {{lot_number}}."
issuetype: "Task"
priority: "High"
- name: notify-supplier
type: call
call: "salesforce.create-task"
with:
supplier_number: "{{supplier_number}}"
subject: "Quality Nonconformance NCR-{{record-ncr.notification_id}}"
description: "A nonconformance has been raised for material {{material_number}}. Please review and respond with corrective action plan."
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "quality-alerts"
text: "NCR raised: {{record-ncr.notification_id}} for material {{material_number}} from supplier {{supplier_number}}. CAPA: {{create-capa.key}}."
consumes:
- type: http
namespace: sap-qm
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: notifications
path: "/A_QualityNotification"
operations:
- name: create-notification
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors supplier risk scores in Oracle EBS, cross-references with SAP Ariba supplier performance, creates a Jira risk ticket, and notifies supply chain leadership in Teams.
naftiko: "0.5"
info:
label: "Supply Chain Risk Alert Pipeline"
description: "Monitors supplier risk scores in Oracle EBS, cross-references with SAP Ariba supplier performance, creates a Jira risk ticket, and notifies supply chain leadership in Teams."
tags:
- supply-chain
- oracle-ebs
- sap-ariba
- jira
- microsoft-teams
- risk-management
capability:
exposes:
- type: mcp
namespace: supply-chain-risk
port: 8080
tools:
- name: escalate-supplier-risk
description: "Escalate a supplier risk event: fetch risk data from Oracle EBS, check Ariba performance, create Jira risk ticket, and alert leadership."
inputParameters:
- name: supplier_number
in: body
type: string
description: "The supplier number."
- name: risk_category
in: body
type: string
description: "The risk category (delivery, quality, financial)."
steps:
- name: get-risk-score
type: call
call: "oracle-ebs.get-supplier-risk"
with:
supplier_num: "{{supplier_number}}"
- name: get-ariba-score
type: call
call: "ariba.get-supplier-performance"
with:
supplier_id: "{{supplier_number}}"
- name: create-risk-ticket
type: call
call: "jira.create-issue"
with:
project: "SCR"
summary: "Supplier {{supplier_number}} risk alert - {{risk_category}}"
description: "Oracle risk score: {{get-risk-score.score}}. Ariba performance: {{get-ariba-score.rating}}. Category: {{risk_category}}."
issuetype: "Task"
priority: "High"
- name: alert-leadership
type: call
call: "msteams.send-message"
with:
channel_id: "supply-chain-leadership"
text: "RISK ALERT: Supplier {{supplier_number}} flagged for {{risk_category}}. Oracle score: {{get-risk-score.score}}. Ariba rating: {{get-ariba-score.rating}}. Jira: {{create-risk-ticket.key}}."
consumes:
- type: http
namespace: oracle-ebs
baseUri: "https://oracle-ebs.agcocorp.com/webservices/rest"
authentication:
type: basic
username: "$secrets.oracle_ebs_user"
password: "$secrets.oracle_ebs_password"
resources:
- name: supplier-risk
path: "/suppliers/{{supplier_num}}/risk"
inputParameters:
- name: supplier_num
in: path
operations:
- name: get-supplier-risk
method: GET
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/sourcing/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: performance
path: "/suppliers/{{supplier_id}}/performance"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-performance
method: GET
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Calculates Scope 1-3 emissions from SAP operations data, aggregates in Snowflake, generates ESG reports, and notifies sustainability.
naftiko: "0.5"
info:
label: "Sustainability Emissions Calculator"
description: "Calculates Scope 1-3 emissions from SAP operations data, aggregates in Snowflake, generates ESG reports, and notifies sustainability."
tags:
- sustainability
- sap
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: sustainability_emissions_calculator
description: "Orchestrate sustainability emissions calculator workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-sap
type: call
call: "sap.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-snowflake
type: call
call: "snowflake.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-servicenow
type: call
call: "servicenow.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://agco-sap.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: sap-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
When a Terraform apply completes in Azure DevOps, captures the output state, stores it in Amazon S3, updates the CMDB in ServiceNow, and posts a summary to Teams.
naftiko: "0.5"
info:
label: "Terraform Infrastructure Provisioning Tracker"
description: "When a Terraform apply completes in Azure DevOps, captures the output state, stores it in Amazon S3, updates the CMDB in ServiceNow, and posts a summary to Teams."
tags:
- infrastructure
- terraform
- azure-devops
- amazon-s3
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: track-terraform-apply
description: "Track a Terraform apply: get pipeline output from Azure DevOps, store state in S3, update ServiceNow CMDB, and notify in Teams."
inputParameters:
- name: pipeline_run_id
in: body
type: string
description: "The Azure DevOps pipeline run ID."
- name: environment
in: body
type: string
description: "The target environment (dev, staging, prod)."
steps:
- name: get-run
type: call
call: "azuredevops.get-pipeline-run"
with:
run_id: "{{pipeline_run_id}}"
- name: store-state
type: call
call: "s3.put-object"
with:
bucket: "agco-terraform-state"
key: "{{environment}}/{{pipeline_run_id}}/tfstate.json"
body: "{{get-run.state_output}}"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
environment: "{{environment}}"
resources_created: "{{get-run.resources_created}}"
pipeline_run: "{{pipeline_run_id}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "infra-deployments"
text: "Terraform apply complete for {{environment}}. Pipeline: {{pipeline_run_id}}. Resources created: {{get-run.resources_created}}. State stored at {{store-state.location}}."
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/agco/Infrastructure/_apis/pipelines"
authentication:
type: basic
username: ""
password: "$secrets.azuredevops_pat"
resources:
- name: runs
path: "/{{pipeline_id}}/runs/{{run_id}}?api-version=7.0"
inputParameters:
- name: pipeline_id
in: path
- name: run_id
in: path
operations:
- name: get-pipeline-run
method: GET
- type: http
namespace: s3
baseUri: "https://agco-terraform-state.s3.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
accessKeyId: "$secrets.aws_access_key"
secretAccessKey: "$secrets.aws_secret_key"
region: "us-east-1"
resources:
- name: objects
path: "/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: servicenow
baseUri: "https://agco.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci"
operations:
- name: update-ci
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: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Captures leads from trade shows, enriches in Salesforce, assigns to dealers, creates follow-up tasks in Jira, and notifies marketing.
naftiko: "0.5"
info:
label: "Trade Show Lead Processing Pipeline"
description: "Captures leads from trade shows, enriches in Salesforce, assigns to dealers, creates follow-up tasks in Jira, and notifies marketing."
tags:
- marketing
- salesforce
- jira
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: trade_show_lead_processing_pipeline
description: "Orchestrate trade show lead processing pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-salesforce
type: call
call: "salesforce.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
resource_id: "{{resource_id}}"
- name: create-snowflake
type: call
call: "snowflake.create-resource"
with:
resource_id: "{{resource_id}}"
- name: notify-slack
type: call
call: "slack.notify-resource"
with:
resource_id: "{{resource_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://agco.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: snowflake
baseUri: "https://agco.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: snowflake-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves employee profile from Workday at AGCO.
naftiko: "0.5"
info:
label: "Workday Employee Lookup"
description: "Retrieves employee profile from Workday at AGCO."
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee
description: "Look up Workday employee at AGCO."
inputParameters:
- name: employee_id
in: body
type: string
description: "The employee_id to look up."
call: "workday.get-employee_id"
with:
employee_id: "{{employee_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday_employee_lookup
method: GET
Retrieves an employee profile from Workday by worker ID including job title, department, manager, and cost center for AGCO workforce planning.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves an employee profile from Workday by worker ID including job title, department, manager, and cost center for AGCO workforce planning."
tags:
- hr
- workday
- workforce
capability:
exposes:
- type: mcp
namespace: hr-workforce
port: 8080
tools:
- name: get-employee-profile
description: "Look up an AGCO employee in Workday by worker ID. Returns name, job title, department, manager, and cost center."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.fullName"
- name: job_title
type: string
mapping: "$.worker.jobTitle"
- name: department
type: string
mapping: "$.worker.department"
- name: manager
type: string
mapping: "$.worker.manager.fullName"
- name: cost_center
type: string
mapping: "$.worker.costCenter"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/agco"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
When a Zendesk dealer support ticket is escalated, fetches machine history from SAP, attaches service bulletins from Confluence, creates a Jira engineering issue, and notifies tier-2 support in Teams.
naftiko: "0.5"
info:
label: "Zendesk Dealer Support Escalation"
description: "When a Zendesk dealer support ticket is escalated, fetches machine history from SAP, attaches service bulletins from Confluence, creates a Jira engineering issue, and notifies tier-2 support in Teams."
tags:
- dealer-support
- zendesk
- sap
- confluence
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: support-escalation
port: 8080
tools:
- name: escalate-support-ticket
description: "Escalate a Zendesk dealer support ticket: get machine history from SAP, find service bulletins in Confluence, create Jira issue, and notify tier-2."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
- name: machine_serial
in: body
type: string
description: "The machine serial number."
steps:
- name: get-ticket
type: call
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
- name: get-machine-history
type: call
call: "sap.get-service-history"
with:
serial: "{{machine_serial}}"
- name: find-bulletins
type: call
call: "confluence.search-content"
with:
query: "{{get-ticket.subject}}"
- name: create-eng-issue
type: call
call: "jira.create-issue"
with:
project: "SUPPORT"
summary: "Escalation: {{get-ticket.subject}} - {{machine_serial}}"
description: "Zendesk #{{ticket_id}}. Machine: {{machine_serial}}. Service history: {{get-machine-history.last_service_date}}. Related bulletin: {{find-bulletins.title}}."
issuetype: "Bug"
priority: "High"
- name: notify-tier2
type: call
call: "msteams.send-message"
with:
channel_id: "tier2-support"
text: "Escalated: Zendesk #{{ticket_id}} for {{machine_serial}}. {{get-ticket.subject}}. Jira: {{create-eng-issue.key}}. Bulletin: {{find-bulletins.title}}."
consumes:
- type: http
namespace: zendesk
baseUri: "https://agco.zendesk.com/api/v2"
authentication:
type: basic
username: "$secrets.zendesk_user"
password: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: sap
baseUri: "https://agco-s4.sap.com/sap/opu/odata/sap/PM_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: service-history
path: "/A_MaintenanceOrder?$filter=Equipment/SerialNumber eq '{{serial}}'"
inputParameters:
- name: serial
in: query
operations:
- name: get-service-history
method: GET
- type: http
namespace: confluence
baseUri: "https://agco.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/content/search?cql=type=page+AND+space=TSB+AND+text~'{{query}}'"
inputParameters:
- name: query
in: query
operations:
- name: search-content
method: GET
- type: http
namespace: jira
baseUri: "https://agco.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST