Honda Capabilities
Naftiko 0.5 capability definitions for Honda - 100 capabilities showing integration workflows and service orchestrations.
Uses the Anthropic API to summarize technical engineering documents (vehicle specifications, R&D reports, patent drafts) stored in SharePoint and posts the summary to the relevant engineering Teams channel.
naftiko: "0.5"
info:
label: "AI Technical Document Summarization"
description: "Uses the Anthropic API to summarize technical engineering documents (vehicle specifications, R&D reports, patent drafts) stored in SharePoint and posts the summary to the relevant engineering Teams channel."
tags:
- ai
- automation
- anthropic
- sharepoint
- microsoft-teams
- engineering
capability:
exposes:
- type: mcp
namespace: ai-engineering-docs
port: 8080
tools:
- name: summarize-technical-document
description: "Given the text of a Honda engineering document and its title, call the Anthropic API to produce a structured technical summary and post it to the specified Teams channel. Use for rapid review of vehicle specs, R&D reports, and supplier technical submissions."
inputParameters:
- name: document_text
in: body
type: string
description: "The full text of the technical document to summarize."
- name: document_title
in: body
type: string
description: "The title of the engineering document."
- name: target_channel_id
in: body
type: string
description: "The Teams channel ID where the summary should be posted."
steps:
- name: generate-summary
type: call
call: "anthropic.create-message"
with:
model: "claude-3-5-sonnet-20241022"
prompt: "Summarize this Honda engineering document in 3-5 bullet points covering: key specifications, technical decisions, open issues, and next steps. Document:\n\n{{document_text}}"
- name: post-summary
type: call
call: "msteams-docs.post-channel-message"
with:
channel_id: "{{target_channel_id}}"
message: "Technical Document Summary: {{document_title}}\n\n{{generate-summary.content}}"
consumes:
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: msteams-docs
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When Azure Cost Management detects a spending anomaly in Honda's cloud subscriptions, creates a ServiceNow incident and notifies the FinOps Teams channel with overage and service details.
naftiko: "0.5"
info:
label: "Azure Cost Anomaly Responder"
description: "When Azure Cost Management detects a spending anomaly in Honda's cloud subscriptions, creates a ServiceNow incident and notifies the FinOps Teams channel with overage and service details."
tags:
- cloud
- finops
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an Azure subscription ID, anomaly description, and estimated overage, create a ServiceNow incident and notify the FinOps channel in Teams. Use when Azure Cost Management alerts fire for budget or anomaly thresholds."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID where the cost anomaly was detected."
- name: anomaly_description
in: body
type: string
description: "Description of the anomaly including affected service and region."
- name: estimated_overage_usd
in: body
type: string
description: "Estimated monthly overage in USD."
steps:
- name: create-incident
type: call
call: "servicenow-cloud.create-incident"
with:
short_description: "Azure cost anomaly: {{anomaly_description}} — {{subscription_id}}"
category: "cloud_cost"
urgency: "2"
- name: notify-finops
type: call
call: "msteams-finops.post-channel-message"
with:
channel_id: "$secrets.teams_finops_channel_id"
message: "Azure cost anomaly | Subscription: {{subscription_id}} | Overage: ${{estimated_overage_usd}} | {{anomaly_description}} | Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow-cloud
baseUri: "https://honda.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-finops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps.
naftiko: "0.5"
info:
label: "Azure Cost Budget Breach Notification"
description: "When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps."
tags:
- finops
- azure
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: azure-cost-budget-breach-notification
description: "When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-azure
type: call
call: azure.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-azure.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_finops_team_id"
channel_id: "$secrets.teams_finops_channel_id"
text: "Azure Cost Budget Breach Notification: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: records
path: "/subscriptions"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams.
naftiko: "0.5"
info:
label: "Azure DevOps Build Failure Notification"
description: "When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams."
tags:
- devops
- azure-devops
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: azure-devops-build-failure-notification
description: "When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-azdo
type: call
call: azdo.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-azdo.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_devops_team_id"
channel_id: "$secrets.teams_devops_channel_id"
text: "Azure DevOps Build Failure Notification: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com"
authentication:
type: bearer
token: "$secrets.azdo_token"
resources:
- name: records
path: "/pipelines"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB.
naftiko: "0.5"
info:
label: "Azure DevOps Release to ServiceNow Change"
description: "When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB."
tags:
- devops
- azure-devops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: azure-devops-release-to-servicenow-change
description: "When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-azdo
type: call
call: azdo.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-azdo.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_devops_team_id"
channel_id: "$secrets.teams_devops_channel_id"
text: "Azure DevOps Release to ServiceNow Change: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com"
authentication:
type: bearer
token: "$secrets.azdo_token"
resources:
- name: records
path: "/pipelines"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket.
naftiko: "0.5"
info:
label: "Azure Resource Compliance to Jira Remediation"
description: "When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket."
tags:
- compliance
- azure
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: azure-resource-compliance-to-jira-remediation
description: "When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-azure
type: call
call: azure.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-azure.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_compliance_team_id"
channel_id: "$secrets.teams_compliance_channel_id"
text: "Azure Resource Compliance to Jira Remediation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: records
path: "/subscriptions"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Lists all resources within an Azure resource group.
naftiko: "0.5"
info:
label: "Azure Resource Group Inventory"
description: "Lists all resources within an Azure resource group."
tags:
- cloud
- azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: list-resources
description: "Given an Azure resource group, return the resource list."
inputParameters:
- name: resource_group
in: body
type: string
description: "Azure resource group name."
call: azure.list-resources
with:
resourceGroupName: "{{resource_group}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: resources
path: "/subscriptions"
inputParameters:
- name: resourceGroupName
in: path
operations:
- name: list-resources
method: GET
When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team.
naftiko: "0.5"
info:
label: "Azure Security Alert to Incident Response"
description: "When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team."
tags:
- security
- azure
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: azure-security-alert-to-incident-response
description: "When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-azure
type: call
call: azure.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-azure.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_security_team_id"
channel_id: "$secrets.teams_security_channel_id"
text: "Azure Security Alert to Incident Response: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: records
path: "/subscriptions"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Triggers a Terraform Cloud workspace run to provision or update Azure infrastructure for Honda's connected-vehicle and EV platform services, then posts run status to the platform engineering Teams channel.
naftiko: "0.5"
info:
label: "Azure Terraform Infrastructure Provisioning"
description: "Triggers a Terraform Cloud workspace run to provision or update Azure infrastructure for Honda's connected-vehicle and EV platform services, then posts run status to the platform engineering Teams channel."
tags:
- cloud
- infrastructure
- azure
- terraform
- devops
- automotive
capability:
exposes:
- type: mcp
namespace: platform-engineering
port: 8080
tools:
- name: run-terraform-workspace
description: "Given a Terraform Cloud workspace ID and run message, trigger a plan-and-apply run for Honda's Azure infrastructure and notify the platform engineering channel in Teams with the run ID."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Terraform Cloud workspace ID for the Azure environment."
- name: run_message
in: body
type: string
description: "Description of the infrastructure change, e.g. Add EV charging API autoscaling group."
steps:
- name: trigger-run
type: call
call: "terraform.create-run"
with:
workspace_id: "{{workspace_id}}"
message: "{{run_message}}"
- name: notify-platform
type: call
call: "msteams-platform.post-channel-message"
with:
channel_id: "$secrets.teams_platform_channel_id"
message: "Terraform run triggered | Workspace: {{workspace_id}} | Change: {{run_message}} | Run ID: {{trigger-run.run_id}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: create-run
method: POST
- type: http
namespace: msteams-platform
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks the current power state of an Azure virtual machine.
naftiko: "0.5"
info:
label: "Azure VM Power State Check"
description: "Checks the current power state of an Azure virtual machine."
tags:
- cloud
- azure
- compute
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: get-vm-power-state
description: "Given a VM name, return the current power state."
inputParameters:
- name: vm_name
in: body
type: string
description: "Azure VM name."
call: azure.get-vm-status
with:
vmName: "{{vm_name}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: vms
path: "/virtualMachines"
inputParameters:
- name: vmName
in: path
operations:
- name: get-vm-status
method: GET
Retrieves the content and metadata of a Confluence page by page ID.
naftiko: "0.5"
info:
label: "Confluence Page Content Lookup"
description: "Retrieves the content and metadata of a Confluence page by page ID."
tags:
- knowledge-management
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-page-content
description: "Given a Confluence page ID, return the title and body."
inputParameters:
- name: page_id
in: body
type: string
description: "Confluence page ID."
call: confluence.get-page
with:
id: "{{page_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
inputParameters:
- name: id
in: path
operations:
- name: get-page
method: GET
Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations.
naftiko: "0.5"
info:
label: "Confluence Runbook to ServiceNow KB Sync"
description: "Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations."
tags:
- knowledge-management
- confluence
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: confluence-runbook-to-servicenow-kb-sync
description: "Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-confluence
type: call
call: confluence.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-confluence.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_knowledge_management_team_id"
channel_id: "$secrets.teams_knowledge_management_channel_id"
text: "Confluence Runbook to ServiceNow KB Sync: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: records
path: "/content"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Datadog triggers a critical alert, creates a ServiceNow P1 incident and pages the on-call engineer via PagerDuty.
naftiko: "0.5"
info:
label: "Datadog Alert to ServiceNow Incident"
description: "When Datadog triggers a critical alert, creates a ServiceNow P1 incident and pages the on-call engineer via PagerDuty."
tags:
- observability
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: datadog-alert-to-servicenow-incident
description: "When Datadog triggers a critical alert, creates a ServiceNow P1 incident and pages the on-call engineer via PagerDuty."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_observability_team_id"
channel_id: "$secrets.teams_observability_channel_id"
text: "Datadog Alert to ServiceNow Incident: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident.
naftiko: "0.5"
info:
label: "Datadog APM Degradation to Rollback"
description: "When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident."
tags:
- observability
- datadog
- github
- jira
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: datadog-apm-degradation-to-rollback
description: "When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-github
type: call
call: github.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_observability_team_id"
channel_id: "$secrets.teams_observability_channel_id"
text: "Datadog APM Degradation to Rollback: {{source_id}} | {{summary}} | Ref: {{create-github.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra.
naftiko: "0.5"
info:
label: "Datadog Disk Usage to Capacity Planning"
description: "When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra."
tags:
- infrastructure
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: datadog-disk-usage-to-capacity-planning
description: "When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_infrastructure_team_id"
channel_id: "$secrets.teams_infrastructure_channel_id"
text: "Datadog Disk Usage to Capacity Planning: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident.
naftiko: "0.5"
info:
label: "Datadog Error Rate to Feature Flag Disable"
description: "When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident."
tags:
- observability
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: datadog-error-rate-to-feature-flag-disable
description: "When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_observability_team_id"
channel_id: "$secrets.teams_observability_channel_id"
text: "Datadog Error Rate to Feature Flag Disable: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC.
naftiko: "0.5"
info:
label: "Datadog Log Anomaly to Security Investigation"
description: "When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC."
tags:
- security
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: datadog-log-anomaly-to-security-investigation
description: "When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_security_team_id"
channel_id: "$secrets.teams_security_channel_id"
text: "Datadog Log Anomaly to Security Investigation: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Datadog monitor fires for a manufacturing or connected-vehicle platform service, creates a ServiceNow incident and alerts the operations Teams channel with severity and affected system details.
naftiko: "0.5"
info:
label: "Datadog Manufacturing System Alert Handler"
description: "When a Datadog monitor fires for a manufacturing or connected-vehicle platform service, creates a ServiceNow incident and alerts the operations Teams channel with severity and affected system details."
tags:
- itsm
- observability
- datadog
- servicenow
- microsoft-teams
- manufacturing
- incident-response
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: handle-infra-alert
description: "Given a Datadog monitor ID, alert title, affected system, and severity, create a ServiceNow incident and notify the IT operations Teams channel. Use when Datadog detects failures in manufacturing execution, telematics, or EV platform services."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that triggered."
- name: alert_title
in: body
type: string
description: "Human-readable alert title from Datadog."
- name: affected_system
in: body
type: string
description: "The affected system name, e.g. MES, Telematics-Platform, or EV-Charging-API."
- name: severity
in: body
type: string
description: "Alert severity: P1, P2, or P3."
steps:
- name: create-incident
type: call
call: "servicenow-infra.create-incident"
with:
short_description: "[{{severity}}] {{alert_title}} — {{affected_system}}"
urgency: "1"
category: "infrastructure"
- name: notify-ops
type: call
call: "msteams-infra.post-channel-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
message: "ALERT {{severity}}: {{alert_title}} | System: {{affected_system}} | Monitor: {{monitor_id}} | Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow-infra
baseUri: "https://honda.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-infra
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries the current health status of a monitored service in Datadog.
naftiko: "0.5"
info:
label: "Datadog Service Status Check"
description: "Queries the current health status of a monitored service in Datadog."
tags:
- observability
- datadog
- monitoring
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-service-status
description: "Given a Datadog service name, return the current monitor status."
inputParameters:
- name: service_name
in: body
type: string
description: "Name of the service to check."
call: datadog.search-monitors
with:
query: "{{service_name}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/search"
inputParameters:
- name: query
in: query
operations:
- name: search-monitors
method: GET
Retrieves SLO compliance data from Datadog for Honda's connected services and telematics platforms, publishing a weekly compliance digest to the engineering leadership Teams channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Retrieves SLO compliance data from Datadog for Honda's connected services and telematics platforms, publishing a weekly compliance digest to the engineering leadership Teams channel."
tags:
- observability
- slo
- datadog
- microsoft-teams
- reporting
- automotive
capability:
exposes:
- type: mcp
namespace: observability-reporting
port: 8080
tools:
- name: digest-slo-compliance
description: "Given a Datadog SLO ID and time window, retrieve compliance percentage and error budget, then post a digest to the engineering leadership channel in Teams. Use weekly for connected-vehicle and telematics SLO reviews."
inputParameters:
- name: slo_id
in: body
type: string
description: "The Datadog SLO ID to check, e.g. for telematics or connected-vehicle APIs."
- name: time_window
in: body
type: string
description: "The SLO rolling window, e.g. 7d or 30d."
steps:
- name: get-slo-history
type: call
call: "datadog.get-slo-history"
with:
slo_id: "{{slo_id}}"
- name: post-digest
type: call
call: "msteams-slo.post-channel-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
message: "SLO Compliance Report | SLO: {{slo_id}} | Window: {{time_window}} | Compliance and error budget data retrieved from Datadog."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slo-history
path: "/slo/{{slo_id}}/history"
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo-history
method: GET
- type: http
namespace: msteams-slo
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert.
naftiko: "0.5"
info:
label: "Datadog Synthetic Failure to Incident"
description: "When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert."
tags:
- observability
- datadog
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: datadog-synthetic-failure-to-incident
description: "When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-datadog
type: call
call: datadog.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-datadog.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_observability_team_id"
channel_id: "$secrets.teams_observability_channel_id"
text: "Datadog Synthetic Failure to Incident: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: records
path: "/events"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the health status of a monitored host in Dynatrace.
naftiko: "0.5"
info:
label: "Dynatrace Host Health Lookup"
description: "Retrieves the health status of a monitored host in Dynatrace."
tags:
- observability
- dynatrace
- monitoring
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-host-health
description: "Given a Dynatrace host ID, return the health state."
inputParameters:
- name: host_id
in: body
type: string
description: "Dynatrace host entity ID."
call: dynatrace.get-host
with:
entityId: "{{host_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: entities
path: "/entities"
inputParameters:
- name: entityId
in: path
operations:
- name: get-host
method: GET
When a Honda associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation and notifies the IT operations team via Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "When a Honda associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation and notifies the IT operations team via Teams."
tags:
- hr
- offboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, open a ServiceNow access-revocation ticket and notify the IT operations team in Teams. Use when an associate's termination is confirmed in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the departing associate."
- name: termination_date
in: body
type: string
description: "The associate's last working day in YYYY-MM-DD format."
steps:
- name: get-worker
type: call
call: "workday-off.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-offboarding-ticket
type: call
call: "servicenow-off.create-incident"
with:
short_description: "Offboarding: {{get-worker.display_name}} — last day {{termination_date}}"
category: "hr_offboarding"
description: "Associate {{get-worker.display_name}} ({{employee_id}}) terminates {{termination_date}}. Revoke all system, network, and building access."
- name: notify-it-ops
type: call
call: "msteams-off.post-channel-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
message: "Offboarding initiated | Associate: {{get-worker.display_name}} | Last day: {{termination_date}} | Ticket: {{create-offboarding-ticket.number}} | Begin access revocation."
consumes:
- type: http
namespace: workday-off
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/honda/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-off
baseUri: "https://honda.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-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message with role and start date details.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "When a new associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message with role and start date details."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence by opening a ServiceNow ticket, provisioning a SharePoint folder, and sending a Teams welcome message to the new associate."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the new Honda associate."
- name: start_date
in: body
type: string
description: "The associate's start date in YYYY-MM-DD format."
- name: division
in: body
type: string
description: "The Honda division or business unit, e.g. HAM (Honda Automobiles) or HRDI (R&D)."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New associate onboarding: {{get-worker.display_name}} — {{division}}"
category: "hr_onboarding"
assigned_to: "IT_Onboarding"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "honda-hr-onboarding"
folder_path: "OnboardingDocs/{{division}}/{{get-worker.display_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-worker.work_email}}"
message: "Welcome to Honda, {{get-worker.first_name}}! You are joining {{division}} on {{start_date}}. Your onboarding ticket: {{create-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/honda/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/sites/{{site_id}}/drive/root/children"
inputParameters:
- name: site_id
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a GitHub Actions workflow fails on a main or release branch, creates a ServiceNow incident, opens a GitHub issue for the engineering team, and alerts the engineering Teams channel.
naftiko: "0.5"
info:
label: "GitHub Actions CI/CD Failure Handler"
description: "When a GitHub Actions workflow fails on a main or release branch, creates a ServiceNow incident, opens a GitHub issue for the engineering team, and alerts the engineering Teams channel."
tags:
- devops
- cicd
- github
- servicenow
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions workflow run ID, repository, and branch, create a ServiceNow incident, open a GitHub issue, and alert the engineering Teams channel. Use when a protected branch CI/CD workflow fails."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository in owner/repo format, e.g. honda-tech/ev-platform."
- name: workflow_name
in: body
type: string
description: "The GitHub Actions workflow name that failed."
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: branch
in: body
type: string
description: "The branch name, e.g. main or release/2025-q2."
- name: run_url
in: body
type: string
description: "Direct URL to the failed workflow run."
steps:
- name: create-incident
type: call
call: "servicenow-cicd.create-incident"
with:
short_description: "CI failure: {{repository}} / {{branch}} — {{workflow_name}}"
category: "devops"
urgency: "2"
- name: open-github-issue
type: call
call: "github.create-issue"
with:
repository: "{{repository}}"
title: "[CI Failure] {{workflow_name}} on {{branch}} (Run {{run_id}})"
body: "Workflow {{workflow_name}} failed on {{branch}}.\n\nRun ID: {{run_id}}\nRun URL: {{run_url}}\nServiceNow Incident: {{create-incident.number}}"
- name: alert-engineering
type: call
call: "msteams-cicd.post-channel-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
message: "CI Failure | Repo: {{repository}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Incident: {{create-incident.number}} | Issue: {{open-github-issue.number}} | URL: {{run_url}}"
consumes:
- type: http
namespace: servicenow-cicd
baseUri: "https://honda.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: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issues
path: "/repos/{{repository}}/issues"
inputParameters:
- name: repository
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-cicd
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Actions Test Failure to Teams Alert"
description: "When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams."
tags:
- devops
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: github-actions-test-failure-to-teams-alert
description: "When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-github
type: call
call: github.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-github.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_devops_team_id"
channel_id: "$secrets.teams_devops_channel_id"
text: "GitHub Actions Test Failure to Teams Alert: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security.
naftiko: "0.5"
info:
label: "GitHub Code Scanning to Jira Remediation"
description: "When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security."
tags:
- security
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: github-code-scanning-to-jira-remediation
description: "When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-github
type: call
call: github.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-github.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_security_team_id"
channel_id: "$secrets.teams_security_channel_id"
text: "GitHub Code Scanning to Jira Remediation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec.
naftiko: "0.5"
info:
label: "GitHub Dependabot Alert to Security Review"
description: "When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec."
tags:
- security
- github
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: github-dependabot-alert-to-security-review
description: "When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-github
type: call
call: github.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-github.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_security_team_id"
channel_id: "$secrets.teams_security_channel_id"
text: "GitHub Dependabot Alert to Security Review: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence.
naftiko: "0.5"
info:
label: "GitHub PR Merge to Jira Transition"
description: "When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence."
tags:
- devops
- github
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: github-pr-merge-to-jira-transition
description: "When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-github
type: call
call: github.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-github.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_devops_team_id"
channel_id: "$secrets.teams_devops_channel_id"
text: "GitHub PR Merge to Jira Transition: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves open pull requests from a GitHub repository that are awaiting review for more than 24 hours and posts a triage summary to the engineering Teams channel.
naftiko: "0.5"
info:
label: "GitHub Pull Request Code Review Triage"
description: "Retrieves open pull requests from a GitHub repository that are awaiting review for more than 24 hours and posts a triage summary to the engineering Teams channel."
tags:
- devops
- github
- code-review
- microsoft-teams
- engineering
capability:
exposes:
- type: mcp
namespace: devops-reviews
port: 8080
tools:
- name: triage-stale-pull-requests
description: "Given a GitHub repository and a staleness threshold in hours, list open pull requests awaiting review and post a triage digest to the engineering Teams channel. Use for daily PR backlog reviews."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository in owner/repo format, e.g. honda-tech/connected-services."
- name: stale_hours
in: body
type: integer
description: "Number of hours before a PR is considered stale, e.g. 24."
steps:
- name: list-prs
type: call
call: "github-prs.list-pull-requests"
with:
repository: "{{repository}}"
- name: post-triage
type: call
call: "msteams-reviews.post-channel-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
message: "Stale PR Triage | Repo: {{repository}} | PRs awaiting review >{{stale_hours}}h | Please review and assign reviewers to unblocked PRs."
consumes:
- type: http
namespace: github-prs
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pull-requests
path: "/repos/{{repository}}/pulls"
inputParameters:
- name: repository
in: path
- name: state
in: query
operations:
- name: list-pull-requests
method: GET
- type: http
namespace: msteams-reviews
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves repository metadata from GitHub including language and default branch.
naftiko: "0.5"
info:
label: "GitHub Repository Details Lookup"
description: "Retrieves repository metadata from GitHub including language and default branch."
tags:
- devops
- github
- repositories
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-repository-details
description: "Given an org and repo name, return the primary language."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository name."
call: github.get-repo
with:
repo: "{{repo}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos"
inputParameters:
- name: repo
in: path
operations:
- name: get-repo
method: GET
Retrieves open Dependabot security alerts from a GitHub repository, creates a ServiceNow security incident for critical vulnerabilities, and posts a triage summary to the security Teams channel.
naftiko: "0.5"
info:
label: "GitHub Repository Security Scan Triage"
description: "Retrieves open Dependabot security alerts from a GitHub repository, creates a ServiceNow security incident for critical vulnerabilities, and posts a triage summary to the security Teams channel."
tags:
- devops
- security
- github
- servicenow
- microsoft-teams
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: devops-security
port: 8080
tools:
- name: triage-security-alerts
description: "Given a GitHub repository, retrieve open Dependabot security alerts at critical or high severity, create a ServiceNow security incident, and post a triage summary to the security Teams channel. Use weekly for software supply chain security reviews."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository in owner/repo format, e.g. honda-tech/ev-charging-api."
- name: severity
in: body
type: string
description: "Minimum severity to include: critical, high, or medium."
steps:
- name: list-alerts
type: call
call: "github-security.list-dependabot-alerts"
with:
repository: "{{repository}}"
severity: "{{severity}}"
- name: create-security-incident
type: call
call: "servicenow-security.create-incident"
with:
short_description: "Security vulnerability triage: {{repository}} — {{severity}}+ severity"
category: "security"
urgency: "2"
- name: post-triage
type: call
call: "msteams-security.post-channel-message"
with:
channel_id: "$secrets.teams_security_channel_id"
message: "Security Alert Triage | Repo: {{repository}} | Severity: {{severity}}+ | Dependabot alerts retrieved. Incident: {{create-security-incident.number}} | Please review and patch affected dependencies."
consumes:
- type: http
namespace: github-security
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{{repository}}/dependabot/alerts"
inputParameters:
- name: repository
in: path
- name: severity
in: query
operations:
- name: list-dependabot-alerts
method: GET
- type: http
namespace: servicenow-security
baseUri: "https://honda.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-security
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves the current stage and amount of a HubSpot deal.
naftiko: "0.5"
info:
label: "HubSpot Deal Stage Lookup"
description: "Retrieves the current stage and amount of a HubSpot deal."
tags:
- crm
- hubspot
- sales
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-deal-stage
description: "Given a HubSpot deal ID, return the deal stage."
inputParameters:
- name: deal_id
in: body
type: string
description: "HubSpot deal ID."
call: hubspot.get-deal
with:
dealId: "{{deal_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: deals
path: "/objects/deals"
inputParameters:
- name: dealId
in: path
operations:
- name: get-deal
method: GET
When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team.
naftiko: "0.5"
info:
label: "HubSpot Form Submission to Salesforce Lead"
description: "When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team."
tags:
- marketing
- hubspot
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: hubspot-form-submission-to-salesforce-lead
description: "When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-hubspot
type: call
call: hubspot.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-salesforce
type: call
call: salesforce.create-record
with:
reference: "{{process-hubspot.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_marketing_team_id"
channel_id: "$secrets.teams_marketing_channel_id"
text: "HubSpot Form Submission to Salesforce Lead: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: records
path: "/objects"
operations:
- name: process-record
method: POST
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders.
naftiko: "0.5"
info:
label: "Jira Epic Completion to Stakeholder Update"
description: "When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders."
tags:
- project-management
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: jira-epic-completion-to-stakeholder-update
description: "When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-jira
type: call
call: jira.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-confluence
type: call
call: confluence.create-record
with:
reference: "{{process-jira.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_project_management_team_id"
channel_id: "$secrets.teams_project_management_channel_id"
text: "Jira Epic Completion to Stakeholder Update: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: process-record
method: POST
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: records
path: "/content"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current status, assignee, and priority of a Jira issue.
naftiko: "0.5"
info:
label: "Jira Issue Status Lookup"
description: "Retrieves the current status, assignee, and priority of a Jira issue."
tags:
- project-management
- jira
- issue-tracking
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: get-issue-status
description: "Given a Jira issue key, return the current status."
inputParameters:
- name: issue_key
in: body
type: string
description: "Jira issue key."
call: jira.get-issue
with:
issue_id: "{{issue_key}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
inputParameters:
- name: issue_id
in: path
operations:
- name: get-issue
method: GET
When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel.
naftiko: "0.5"
info:
label: "Jira Release to Confluence Changelog"
description: "When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel."
tags:
- release-management
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: jira-release-to-confluence-changelog
description: "When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-jira
type: call
call: jira.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-confluence
type: call
call: confluence.create-record
with:
reference: "{{process-jira.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_release_management_team_id"
channel_id: "$secrets.teams_release_management_channel_id"
text: "Jira Release to Confluence Changelog: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: process-record
method: POST
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: records
path: "/content"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team.
naftiko: "0.5"
info:
label: "LinkedIn Campaign to Salesforce Lead Import"
description: "When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team."
tags:
- marketing
- linkedin
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: linkedin-campaign-to-salesforce-lead-import
description: "When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-linkedin
type: call
call: linkedin.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-salesforce
type: call
call: salesforce.create-record
with:
reference: "{{process-linkedin.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_marketing_team_id"
channel_id: "$secrets.teams_marketing_channel_id"
text: "LinkedIn Campaign to Salesforce Lead Import: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: records
path: "/campaigns"
operations:
- name: process-record
method: POST
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves engagement and follower metrics for Honda's LinkedIn sponsored content and employer brand posts over the past 30 days, posting a digest to the talent acquisition Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Employer Brand Campaign Digest"
description: "Retrieves engagement and follower metrics for Honda's LinkedIn sponsored content and employer brand posts over the past 30 days, posting a digest to the talent acquisition Teams channel."
tags:
- marketing
- hr
- linkedin
- employer-brand
- reporting
capability:
exposes:
- type: mcp
namespace: talent-brand
port: 8080
tools:
- name: digest-linkedin-employer-brand
description: "Retrieve LinkedIn follower statistics and post engagement metrics for Honda's company page, then post a digest to the talent acquisition channel in Teams. Use for monthly employer brand performance reviews."
inputParameters:
- name: organization_id
in: body
type: string
description: "Honda's LinkedIn organization URN ID."
- name: date_range_days
in: body
type: integer
description: "Number of days to include in the report, e.g. 30."
steps:
- name: get-follower-stats
type: call
call: "linkedin.get-follower-statistics"
with:
organization_id: "{{organization_id}}"
- name: post-digest
type: call
call: "msteams-talent.post-channel-message"
with:
channel_id: "$secrets.teams_talent_channel_id"
message: "LinkedIn Employer Brand Digest | Honda | Last {{date_range_days}} days | Follower and engagement stats retrieved. Full report available in LinkedIn Campaign Manager."
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: follower-statistics
path: "/organizationalEntityFollowerStatistics"
inputParameters:
- name: organization_id
in: query
operations:
- name: get-follower-statistics
method: GET
- type: http
namespace: msteams-talent
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves impression, reach, and lead generation metrics from Meta Ads for Honda's vehicle launch campaigns and posts a weekly performance digest to the digital marketing Teams channel.
naftiko: "0.5"
info:
label: "Meta Automotive Campaign Performance Digest"
description: "Retrieves impression, reach, and lead generation metrics from Meta Ads for Honda's vehicle launch campaigns and posts a weekly performance digest to the digital marketing Teams channel."
tags:
- marketing
- social
- meta
- microsoft-teams
- digital-marketing
- automotive
capability:
exposes:
- type: mcp
namespace: digital-marketing
port: 8080
tools:
- name: digest-meta-auto-campaigns
description: "Given a Meta ad account ID and date preset, retrieve vehicle campaign metrics (impressions, reach, leads, cost-per-lead) and post a digest to the digital marketing Teams channel."
inputParameters:
- name: ad_account_id
in: body
type: string
description: "The Meta ad account ID for Honda's automotive campaigns."
- name: date_preset
in: body
type: string
description: "Meta Insights date preset, e.g. last_7d or last_30d."
steps:
- name: get-insights
type: call
call: "meta.get-ad-insights"
with:
ad_account_id: "{{ad_account_id}}"
date_preset: "{{date_preset}}"
- name: post-digest
type: call
call: "msteams-mktg.post-channel-message"
with:
channel_id: "$secrets.teams_marketing_channel_id"
message: "Meta Automotive Campaign Digest | Account: {{ad_account_id}} | Period: {{date_preset}} | Insights retrieved. Full breakdown in Ads Manager."
consumes:
- type: http
namespace: meta
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.meta_access_token"
resources:
- name: ad-insights
path: "/{{ad_account_id}}/insights"
inputParameters:
- name: ad_account_id
in: path
- name: date_preset
in: query
operations:
- name: get-ad-insights
method: GET
- type: http
namespace: msteams-mktg
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Lists all channels in a Microsoft Teams team.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel List"
description: "Lists all channels in a Microsoft Teams team."
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: list-team-channels
description: "Given a Teams team ID, return the channel list."
inputParameters:
- name: team_id
in: body
type: string
description: "Microsoft Teams team ID."
call: msteams.list-channels
with:
teamId: "{{team_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: msteams
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams"
inputParameters:
- name: teamId
in: path
operations:
- name: list-channels
method: GET
When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty.
naftiko: "0.5"
info:
label: "Okta Suspicious Activity to SOC Alert"
description: "When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty."
tags:
- security
- okta
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: okta-suspicious-activity-to-soc-alert
description: "When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-okta
type: call
call: okta.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-okta.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_security_team_id"
channel_id: "$secrets.teams_security_channel_id"
text: "Okta Suspicious Activity to SOC Alert: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: okta
baseUri: "https://honda.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: records
path: "/users"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current status and last login of an Okta user.
naftiko: "0.5"
info:
label: "Okta User Status Lookup"
description: "Retrieves the current status and last login of an Okta user."
tags:
- identity
- okta
- security
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-status
description: "Given an email, retrieve the Okta user status."
inputParameters:
- name: email
in: body
type: string
description: "Okta user email."
call: okta.get-user
with:
login: "{{email}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: okta
baseUri: "https://honda.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users"
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page.
naftiko: "0.5"
info:
label: "PagerDuty Incident to Statuspage Update"
description: "When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page."
tags:
- incident-management
- pagerduty
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-management
port: 8080
tools:
- name: pagerduty-incident-to-statuspage-update
description: "When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-pagerduty
type: call
call: pagerduty.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-confluence
type: call
call: confluence.create-record
with:
reference: "{{process-pagerduty.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_incident_management_team_id"
channel_id: "$secrets.teams_incident_management_channel_id"
text: "PagerDuty Incident to Statuspage Update: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: records
path: "/incidents"
operations:
- name: process-record
method: POST
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: records
path: "/content"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the current on-call engineer for a PagerDuty escalation policy.
naftiko: "0.5"
info:
label: "PagerDuty On-Call Lookup"
description: "Retrieves the current on-call engineer for a PagerDuty escalation policy."
tags:
- incident-management
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: incident-management
port: 8080
tools:
- name: get-on-call-engineer
description: "Given a PagerDuty escalation policy ID, return the on-call engineer."
inputParameters:
- name: policy_id
in: body
type: string
description: "PagerDuty escalation policy ID."
call: pagerduty.get-on-calls
with:
escalation_policy_ids: "{{policy_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: oncalls
path: "/oncalls"
inputParameters:
- name: escalation_policy_ids
in: query
operations:
- name: get-on-calls
method: GET
Returns the current global headcount breakdown by division, department, and cost center from Workday for workforce planning and finance reporting.
naftiko: "0.5"
info:
label: "Payroll Headcount Snapshot"
description: "Returns the current global headcount breakdown by division, department, and cost center from Workday for workforce planning and finance reporting."
tags:
- hr
- finance
- reporting
- workday
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns headcount grouped by division, department, and cost center from Workday. Use for workforce planning, labor cost analysis, and quarterly finance headcount submissions."
call: "workday-hc.headcount-report"
outputParameters:
- name: employees
type: array
mapping: "$.Report_Entry"
items:
- name: employee_id
type: string
mapping: "$.Employee_ID"
- name: full_name
type: string
mapping: "$.Employee_Name"
- name: division
type: string
mapping: "$.Division"
- name: department
type: string
mapping: "$.Department"
- name: cost_center
type: string
mapping: "$.Cost_Center"
- name: employment_type
type: string
mapping: "$.Employment_Type"
consumes:
- type: http
namespace: workday-hc
baseUri: "https://wd2-impl-services1.workday.com/ccx/service/customreport2/honda"
authentication:
type: basic
username: "$secrets.workday_report_user"
password: "$secrets.workday_report_password"
resources:
- name: headcount
path: "/Headcount_By_Division_Department"
operations:
- name: headcount-report
method: GET
outputRawFormat: json
Checks the last refresh status of a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Status"
description: "Checks the last refresh status of a Power BI dataset."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-refresh-status
description: "Given a Power BI dataset ID, return the refresh status."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID."
call: powerbi.get-refresh-history
with:
datasetId: "{{dataset_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets"
inputParameters:
- name: datasetId
in: path
operations:
- name: get-refresh-history
method: GET
When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel.
naftiko: "0.5"
info:
label: "Power BI Report Failure to Jira Ticket"
description: "When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel."
tags:
- analytics
- power-bi
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: power-bi-report-failure-to-jira-ticket
description: "When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-powerbi
type: call
call: powerbi.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-powerbi.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_analytics_team_id"
channel_id: "$secrets.teams_analytics_channel_id"
text: "Power BI Report Failure to Jira Ticket: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: records
path: "/datasets"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Triggers a Power BI dataset refresh for the global vehicle sales dashboard and posts a confirmation with the refresh timestamp to the sales operations Teams channel.
naftiko: "0.5"
info:
label: "Power BI Vehicle Sales Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the global vehicle sales dashboard and posts a confirmation with the refresh timestamp to the sales operations Teams channel."
tags:
- data-analytics
- reporting
- power-bi
- microsoft-teams
- sales
- automotive
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: refresh-vehicle-sales-dashboard
description: "Given a Power BI workspace ID and dataset ID, trigger a vehicle sales dashboard refresh and notify the sales operations channel in Teams. Use daily after regional sales data loads."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID containing the vehicle sales dataset."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID for the vehicle sales report."
steps:
- name: trigger-refresh
type: call
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-sales-ops
type: call
call: "msteams-sales.post-channel-message"
with:
channel_id: "$secrets.teams_sales_ops_channel_id"
message: "Vehicle Sales dashboard refresh triggered for dataset {{dataset_id}}. Updated data available shortly in Power BI."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams-sales
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty.
naftiko: "0.5"
info:
label: "Salesforce Case Escalation to Engineering"
description: "Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty."
tags:
- support
- salesforce
- github
- pagerduty
capability:
exposes:
- type: mcp
namespace: support
port: 8080
tools:
- name: salesforce-case-escalation-to-engineering
description: "Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-github
type: call
call: github.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_support_team_id"
channel_id: "$secrets.teams_support_channel_id"
text: "Salesforce Case Escalation to Engineering: {{source_id}} | {{summary}} | Ref: {{create-github.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention.
naftiko: "0.5"
info:
label: "Salesforce Churn Signal to Retention Workflow"
description: "When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention."
tags:
- crm
- salesforce
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: salesforce-churn-signal-to-retention-workflow
description: "When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_crm_team_id"
channel_id: "$secrets.teams_crm_channel_id"
text: "Salesforce Churn Signal to Retention Workflow: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves a Salesforce contact by email address with account association.
naftiko: "0.5"
info:
label: "Salesforce Contact Lookup"
description: "Retrieves a Salesforce contact by email address with account association."
tags:
- crm
- salesforce
- contacts
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-contact-by-email
description: "Given an email, retrieve the matching Salesforce contact."
inputParameters:
- name: email
in: body
type: string
description: "Contact email address."
call: salesforce.query-contacts
with:
q: "{{email}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-contacts
method: GET
Retrieves a Honda dealer account from Salesforce along with its recent vehicle order opportunities to surface relationship health metrics for the regional sales team.
naftiko: "0.5"
info:
label: "Salesforce Dealer Account Health Check"
description: "Retrieves a Honda dealer account from Salesforce along with its recent vehicle order opportunities to surface relationship health metrics for the regional sales team."
tags:
- sales
- crm
- salesforce
- dealer-management
- automotive
capability:
exposes:
- type: mcp
namespace: dealer-crm
port: 8080
tools:
- name: get-dealer-account-health
description: "Given a Salesforce dealer account ID, retrieve account details and the five most recent vehicle order opportunities. Use for dealer relationship reviews and regional sales performance monitoring."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID for the Honda dealer."
steps:
- name: get-account
type: call
call: "salesforce-acct.get-account"
with:
account_id: "{{account_id}}"
- name: get-opportunities
type: call
call: "salesforce-opps.list-opportunities"
with:
account_id: "{{account_id}}"
consumes:
- type: http
namespace: salesforce-acct
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: salesforce-opps
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: list-opportunities
method: GET
When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Lead to Jira Feature Request"
description: "When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams."
tags:
- crm
- salesforce
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: salesforce-lead-to-jira-feature-request
description: "When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_crm_team_id"
channel_id: "$secrets.teams_crm_channel_id"
text: "Salesforce Lead to Jira Feature Request: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce.
naftiko: "0.5"
info:
label: "Salesforce Quote Approval to Contract Send"
description: "When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce."
tags:
- quote-to-cash
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quote-to-cash
port: 8080
tools:
- name: salesforce-quote-approval-to-contract-send
description: "When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_quote_to_cash_team_id"
channel_id: "$secrets.teams_quote_to_cash_channel_id"
text: "Salesforce Quote Approval to Contract Send: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team.
naftiko: "0.5"
info:
label: "Salesforce Renewal Risk to Customer Success"
description: "When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team."
tags:
- crm
- salesforce
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: salesforce-renewal-risk-to-customer-success
description: "When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_crm_team_id"
channel_id: "$secrets.teams_crm_channel_id"
text: "Salesforce Renewal Risk to Customer Success: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a territory assignment changes, updates lead routing and notifies affected reps.
naftiko: "0.5"
info:
label: "Salesforce Territory Change to Routing Update"
description: "When a territory assignment changes, updates lead routing and notifies affected reps."
tags:
- crm
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: salesforce-territory-change-to-routing-update
description: "When a territory assignment changes, updates lead routing and notifies affected reps."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_crm_team_id"
channel_id: "$secrets.teams_crm_channel_id"
text: "Salesforce Territory Change to Routing Update: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Win to SAP Sales Order Creation"
description: "When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams."
tags:
- order-management
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: order-management
port: 8080
tools:
- name: salesforce-win-to-sap-sales-order-creation
description: "When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-salesforce
type: call
call: salesforce.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-sap
type: call
call: sap.create-record
with:
reference: "{{process-salesforce.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_order_management_team_id"
channel_id: "$secrets.teams_order_management_channel_id"
text: "Salesforce Win to SAP Sales Order Creation: {{source_id}} | {{summary}} | Ref: {{create-sap.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: process-record
method: POST
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves a contract summary from SAP Ariba by contract ID.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Lookup"
description: "Retrieves a contract summary from SAP Ariba by contract ID."
tags:
- procurement
- sap-ariba
- contracts
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-contract-summary
description: "Given a SAP Ariba contract ID, return the status."
inputParameters:
- name: contract_id
in: body
type: string
description: "SAP Ariba contract ID."
call: ariba.get-contract
with:
contractId: "{{contract_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: ariba
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: contracts
path: "/contracts"
inputParameters:
- name: contractId
in: path
operations:
- name: get-contract
method: GET
Retrieves category-level procurement spend data from SAP Ariba for the current quarter and posts a spend summary to the procurement leadership Teams channel for category management review.
naftiko: "0.5"
info:
label: "SAP Ariba Spend Analytics Digest"
description: "Retrieves category-level procurement spend data from SAP Ariba for the current quarter and posts a spend summary to the procurement leadership Teams channel for category management review."
tags:
- procurement
- finance
- sap-ariba
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-reporting
port: 8080
tools:
- name: digest-procurement-spend
description: "Given a spend category and quarter, retrieve Ariba spend analytics and post a digest to the procurement leadership channel in Teams. Use for quarterly category management reviews and cost reduction initiatives."
inputParameters:
- name: category
in: body
type: string
description: "The spend category, e.g. Steel, Semiconductors, Logistics, or Indirect Procurement."
- name: quarter
in: body
type: string
description: "The fiscal quarter, e.g. Q1-2025."
steps:
- name: get-spend
type: call
call: "ariba-analytics.get-spend-summary"
with:
category: "{{category}}"
- name: post-digest
type: call
call: "msteams-procurement.post-channel-message"
with:
channel_id: "$secrets.teams_procurement_channel_id"
message: "Procurement Spend Digest | Category: {{category}} | Quarter: {{quarter}} | Data retrieved from Ariba. Full report in Power BI procurement dashboard."
consumes:
- type: http
namespace: ariba-analytics
baseUri: "https://openapi.ariba.com/api/analytics-reporting-details/v1"
authentication:
type: apikey
key: "apikey"
value: "$secrets.ariba_api_key"
placement: header
resources:
- name: spend-summary
path: "/reports/spend"
inputParameters:
- name: category
in: query
operations:
- name: get-spend-summary
method: GET
- type: http
namespace: msteams-procurement
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new auto parts supplier submits a qualification request in SAP Ariba, creates a ServiceNow change request for vendor master setup in SAP S/4HANA and notifies the purchasing team via Teams.
naftiko: "0.5"
info:
label: "SAP Ariba Supplier Qualification"
description: "When a new auto parts supplier submits a qualification request in SAP Ariba, creates a ServiceNow change request for vendor master setup in SAP S/4HANA and notifies the purchasing team via Teams."
tags:
- procurement
- supplier-management
- sap-ariba
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: qualify-supplier
description: "Given an Ariba supplier ID, retrieve supplier details, open a ServiceNow change request for SAP vendor master creation, and notify the purchasing team in Teams. Use when a new auto parts or materials supplier completes Ariba qualification."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The Ariba supplier ID for the newly qualified vendor."
steps:
- name: get-supplier
type: call
call: "ariba.get-supplier"
with:
supplier_id: "{{supplier_id}}"
- name: create-change
type: call
call: "servicenow-proc.create-change"
with:
short_description: "Vendor master setup for qualified supplier: {{get-supplier.name}}"
category: "vendor_master"
description: "Supplier {{get-supplier.name}} ({{supplier_id}}) has completed Ariba qualification. Requires SAP S/4HANA vendor master creation and purchasing org assignment."
- name: notify-purchasing
type: call
call: "msteams-proc.post-channel-message"
with:
channel_id: "$secrets.teams_purchasing_channel_id"
message: "Supplier qualified: {{get-supplier.name}} | Ariba ID: {{supplier_id}} | Change request: {{create-change.number}} | Please complete SAP vendor master setup."
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/supplier/v1"
authentication:
type: apikey
key: "apikey"
value: "$secrets.ariba_api_key"
placement: header
resources:
- name: suppliers
path: "/suppliers/{{supplier_id}}"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: servicenow-proc
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-proc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves an expense report summary from SAP Concur by report ID.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Lookup"
description: "Retrieves an expense report summary from SAP Concur by report ID."
tags:
- finance
- sap-concur
- expense-management
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: get-expense-report
description: "Given a Concur report ID, return the summary."
inputParameters:
- name: report_id
in: body
type: string
description: "SAP Concur expense report ID."
call: concur.get-report
with:
id: "{{report_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: concur
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: reports
path: "/expense/reports"
inputParameters:
- name: id
in: path
operations:
- name: get-report
method: GET
Retrieves submitted expense reports from SAP Concur for a Honda cost center and identifies out-of-policy items for review by the travel and expense compliance team.
naftiko: "0.5"
info:
label: "SAP Concur Travel Expense Audit"
description: "Retrieves submitted expense reports from SAP Concur for a Honda cost center and identifies out-of-policy items for review by the travel and expense compliance team."
tags:
- finance
- travel
- sap-concur
- audit
- expense-management
capability:
exposes:
- type: mcp
namespace: travel-expense
port: 8080
tools:
- name: audit-expense-reports
description: "Given a SAP Concur cost center code, retrieve all submitted expense reports and flag out-of-policy items. Use for monthly T&E compliance audits and Honda travel policy enforcement."
inputParameters:
- name: cost_center
in: body
type: string
description: "The Honda cost center code to retrieve expense reports for."
call: "concur.list-reports-by-cost-center"
with:
cost_center: "{{cost_center}}"
outputParameters:
- name: reports
type: array
mapping: "$.Items"
items:
- name: report_id
type: string
mapping: "$.ID"
- name: submitter
type: string
mapping: "$.OwnerName"
- name: total
type: string
mapping: "$.Total"
- name: currency
type: string
mapping: "$.CurrencyCode"
- name: policy_compliant
type: string
mapping: "$.PolicyCompliant"
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports"
inputParameters:
- name: cost_center
in: query
operations:
- name: list-reports-by-cost-center
method: GET
When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity.
naftiko: "0.5"
info:
label: "SAP Contract Expiry to Renewal Workflow"
description: "When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity."
tags:
- procurement
- sap-ariba
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: sap-contract-expiry-to-renewal-workflow
description: "When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-ariba
type: call
call: ariba.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-salesforce
type: call
call: salesforce.create-record
with:
reference: "{{process-ariba.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_procurement_team_id"
channel_id: "$secrets.teams_procurement_channel_id"
text: "SAP Contract Expiry to Renewal Workflow: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: records
path: "/requisitions"
operations:
- name: process-record
method: POST
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success.
naftiko: "0.5"
info:
label: "SAP Delivery Confirmation to Salesforce Update"
description: "When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success."
tags:
- logistics
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: sap-delivery-confirmation-to-salesforce-update
description: "When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-salesforce
type: call
call: salesforce.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_logistics_team_id"
channel_id: "$secrets.teams_logistics_channel_id"
text: "SAP Delivery Confirmation to Salesforce Update: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Goods Receipt to Invoice Match"
description: "When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams."
tags:
- procurement
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: sap-goods-receipt-to-invoice-match
description: "When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_procurement_team_id"
channel_id: "$secrets.teams_procurement_channel_id"
text: "SAP Goods Receipt to Invoice Match: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement.
naftiko: "0.5"
info:
label: "SAP Inventory Alert to Procurement Request"
description: "When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement."
tags:
- supply-chain
- sap
- sap-ariba
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: sap-inventory-alert-to-procurement-request
description: "When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-ariba
type: call
call: ariba.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_supply_chain_team_id"
channel_id: "$secrets.teams_supply_chain_channel_id"
text: "SAP Inventory Alert to Procurement Request: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: records
path: "/requisitions"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Looks up a supplier invoice in SAP S/4HANA by document number and fiscal year, returning payment status, due date, and supplier name for accounts payable follow-up.
naftiko: "0.5"
info:
label: "SAP Invoice Processing Status"
description: "Looks up a supplier invoice in SAP S/4HANA by document number and fiscal year, returning payment status, due date, and supplier name for accounts payable follow-up."
tags:
- finance
- accounts-payable
- sap
- erp
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: get-invoice-status
description: "Given a SAP invoice document number and fiscal year, retrieve payment status, due date, and supplier name from SAP S/4HANA. Use for accounts payable status checks and payment run planning."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP accounts payable invoice document number."
- name: fiscal_year
in: body
type: string
description: "The fiscal year of the invoice in YYYY format."
call: "sap-ap.get-invoice"
with:
invoice_number: "{{invoice_number}}"
fiscal_year: "{{fiscal_year}}"
outputParameters:
- name: payment_status
type: string
mapping: "$.d.PaymentStatus"
- name: due_date
type: string
mapping: "$.d.PaymentDueDate"
- name: supplier_name
type: string
mapping: "$.d.SupplierName"
- name: amount
type: string
mapping: "$.d.DocumentAmountInCompanyCodeCurrency"
consumes:
- type: http
namespace: sap-ap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: supplier-invoices
path: "/A_SupplierInvoice(FiscalYear='{{fiscal_year}}',SupplierInvoiceIDByInvcgParty='{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
- name: fiscal_year
in: path
operations:
- name: get-invoice
method: GET
outputRawFormat: xml
Retrieves material master data from SAP by material number.
naftiko: "0.5"
info:
label: "SAP Material Master Lookup"
description: "Retrieves material master data from SAP by material number."
tags:
- erp
- sap
- materials
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-material-master
description: "Given a SAP material number, retrieve the material description."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number."
call: sap.get-material
with:
Material: "{{material_number}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: products
path: "/A_Product"
inputParameters:
- name: Material
in: path
operations:
- name: get-material
method: GET
When an SAP payment run completes, notifies vendor management and updates Salesforce records.
naftiko: "0.5"
info:
label: "SAP Payment Run to Vendor Notification"
description: "When an SAP payment run completes, notifies vendor management and updates Salesforce records."
tags:
- finance
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: sap-payment-run-to-vendor-notification
description: "When an SAP payment run completes, notifies vendor management and updates Salesforce records."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-salesforce
type: call
call: salesforce.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_finance_team_id"
channel_id: "$secrets.teams_finance_channel_id"
text: "SAP Payment Run to Vendor Notification: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: salesforce
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: records
path: "/sobjects"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves the status of financial period-close tasks in SAP S/4HANA for a given Honda company code and fiscal period, surfacing open items for the finance controller.
naftiko: "0.5"
info:
label: "SAP Period Close Checklist"
description: "Retrieves the status of financial period-close tasks in SAP S/4HANA for a given Honda company code and fiscal period, surfacing open items for the finance controller."
tags:
- finance
- period-close
- sap
- erp
- reporting
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: get-period-close-status
description: "Given an SAP company code and fiscal period, retrieve the list of period-close tasks and their completion status. Use during month-end and quarter-end financial close for Honda's global entities."
inputParameters:
- name: company_code
in: body
type: string
description: "The SAP company code, e.g. 1000 for Honda Motor Co. Japan."
- name: fiscal_period
in: body
type: string
description: "The fiscal period in YYYYMM format, e.g. 202503."
call: "sap-close.get-closing-tasks"
with:
company_code: "{{company_code}}"
fiscal_period: "{{fiscal_period}}"
outputParameters:
- name: open_tasks
type: array
mapping: "$.d.results"
items:
- name: task_id
type: string
mapping: "$.TaskID"
- name: description
type: string
mapping: "$.Description"
- name: status
type: string
mapping: "$.Status"
- name: responsible
type: string
mapping: "$.ResponsibleUser"
consumes:
- type: http
namespace: sap-close
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/FAR_PERIOD_CLOSE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: closing-tasks
path: "/ClosingTaskSet"
inputParameters:
- name: company_code
in: query
- name: fiscal_period
in: query
operations:
- name: get-closing-tasks
method: GET
outputRawFormat: xml
When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel.
naftiko: "0.5"
info:
label: "SAP Purchase Order Approval to Ariba Sync"
description: "When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel."
tags:
- procurement
- sap
- sap-ariba
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: sap-purchase-order-approval-to-ariba-sync
description: "When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-ariba
type: call
call: ariba.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_procurement_team_id"
channel_id: "$secrets.teams_procurement_channel_id"
text: "SAP Purchase Order Approval to Ariba Sync: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: records
path: "/requisitions"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Looks up a Honda SAP S/4HANA purchase order by number and returns header status, supplier name, total value, and currency for procurement and supply chain review.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Looks up a Honda SAP S/4HANA purchase order by number and returns header status, supplier name, total value, and currency for procurement and supply chain review."
tags:
- procurement
- finance
- sap
- erp
- supply-chain
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: "Given a SAP purchase order number, retrieve its overall status, supplier name, total amount, and currency from SAP S/4HANA. Use for procurement status checks and supplier payment verification."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number, e.g. 4500067890."
call: "sap-s4.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: supplier
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap-s4
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
outputRawFormat: xml
When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement.
naftiko: "0.5"
info:
label: "SAP Quality Hold to Supplier Notification"
description: "When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement."
tags:
- quality
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: sap-quality-hold-to-supplier-notification
description: "When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-sap
type: call
call: sap.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-sap.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_quality_team_id"
channel_id: "$secrets.teams_quality_channel_id"
text: "SAP Quality Hold to Supplier Notification: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: records
path: "/A_BusinessPartner"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves vendor master data from SAP by vendor ID.
naftiko: "0.5"
info:
label: "SAP Vendor Master Lookup"
description: "Retrieves vendor master data from SAP by vendor ID."
tags:
- erp
- sap
- vendor-management
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-vendor-master
description: "Given a SAP vendor ID, retrieve the vendor name."
inputParameters:
- name: vendor_id
in: body
type: string
description: "SAP vendor master ID."
call: sap.get-vendor
with:
Supplier: "{{vendor_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: sap
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: suppliers
path: "/A_Supplier"
inputParameters:
- name: Supplier
in: path
operations:
- name: get-vendor
method: GET
When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management.
naftiko: "0.5"
info:
label: "ServiceNow Asset Refresh to Procurement"
description: "When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management."
tags:
- asset-management
- servicenow
- sap-ariba
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: asset-management
port: 8080
tools:
- name: servicenow-asset-refresh-to-procurement
description: "When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-servicenow
type: call
call: servicenow.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-ariba
type: call
call: ariba.create-record
with:
reference: "{{process-servicenow.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_asset_management_team_id"
channel_id: "$secrets.teams_asset_management_channel_id"
text: "ServiceNow Asset Refresh to Procurement: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: process-record
method: POST
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: records
path: "/requisitions"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves a ServiceNow change request for a Honda IT or manufacturing system, returning its approval status, risk level, and implementation schedule for CAB review.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Approval"
description: "Retrieves a ServiceNow change request for a Honda IT or manufacturing system, returning its approval status, risk level, and implementation schedule for CAB review."
tags:
- itsm
- change-management
- servicenow
- governance
capability:
exposes:
- type: mcp
namespace: itsm-change
port: 8080
tools:
- name: get-change-request
description: "Given a ServiceNow change request number, retrieve its state, risk, approval status, and implementation window. Use for change advisory board review and change governance processes."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number, e.g. CHG0056789."
call: "servicenow-change.get-change"
with:
change_number: "{{change_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: risk
type: string
mapping: "$.result.risk"
- name: approval
type: string
mapping: "$.result.approval"
- name: start_date
type: string
mapping: "$.result.start_date"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
inputParameters:
- name: change_number
in: query
operations:
- name: get-change
method: GET
When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status.
naftiko: "0.5"
info:
label: "ServiceNow Change to GitHub Deployment"
description: "When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status."
tags:
- itsm
- servicenow
- github
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: servicenow-change-to-github-deployment
description: "When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-servicenow
type: call
call: servicenow.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-github
type: call
call: github.create-record
with:
reference: "{{process-servicenow.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_itsm_team_id"
channel_id: "$secrets.teams_itsm_channel_id"
text: "ServiceNow Change to GitHub Deployment: {{source_id}} | {{summary}} | Ref: {{create-github.id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: process-record
method: POST
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: records
path: "/repos"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Escalates a ServiceNow incident to P1, reassigns it to Honda's IT escalation group, and notifies the CTO via Teams when a critical system (ERP, connected-vehicle platform, or manufacturing) is impacted.
naftiko: "0.5"
info:
label: "ServiceNow Incident Escalation"
description: "Escalates a ServiceNow incident to P1, reassigns it to Honda's IT escalation group, and notifies the CTO via Teams when a critical system (ERP, connected-vehicle platform, or manufacturing) is impacted."
tags:
- itsm
- incident-response
- servicenow
- microsoft-teams
- escalation
- sla
capability:
exposes:
- type: mcp
namespace: itsm-escalation
port: 8080
tools:
- name: escalate-incident
description: "Given a ServiceNow incident number and escalation reason, update priority to P1, reassign to the IT escalation group, and notify the CTO channel in Teams. Use for critical Honda system failures affecting manufacturing, EV platforms, or enterprise operations."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number, e.g. INC0078901."
- name: escalation_reason
in: body
type: string
description: "Business impact and reason for escalation."
steps:
- name: update-incident
type: call
call: "servicenow-esc.patch-incident"
with:
incident_number: "{{incident_number}}"
priority: "1"
assignment_group: "IT_Escalation"
work_notes: "Escalated to P1: {{escalation_reason}}"
- name: notify-cto
type: call
call: "msteams-esc.post-channel-message"
with:
channel_id: "$secrets.teams_cto_channel_id"
message: "CRITICAL ESCALATION P1 | Incident: {{incident_number}} | Impact: {{escalation_reason}} | IT Escalation team engaged. Manufacturing or platform impact possible."
consumes:
- type: http
namespace: servicenow-esc
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: incident_number
in: query
operations:
- name: patch-incident
method: PATCH
- type: http
namespace: msteams-esc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves the priority and assignment group for a ServiceNow incident by number.
naftiko: "0.5"
info:
label: "ServiceNow Incident Priority Lookup"
description: "Retrieves the priority and assignment group for a ServiceNow incident by number."
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-priority
description: "Given a ServiceNow incident number, return the priority and assigned group."
inputParameters:
- name: incident_number
in: body
type: string
description: "ServiceNow incident number."
call: servicenow.get-incident
with:
number: "{{incident_number}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty.
naftiko: "0.5"
info:
label: "ServiceNow Major Incident Bridge Setup"
description: "When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty."
tags:
- itsm
- servicenow
- microsoft-teams
- pagerduty
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: servicenow-major-incident-bridge-setup
description: "When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-servicenow
type: call
call: servicenow.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-servicenow.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_itsm_team_id"
channel_id: "$secrets.teams_itsm_channel_id"
text: "ServiceNow Major Incident Bridge Setup: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB.
naftiko: "0.5"
info:
label: "ServiceNow Problem to Known Error KB"
description: "When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB."
tags:
- itsm
- servicenow
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: servicenow-problem-to-known-error-kb
description: "When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-servicenow
type: call
call: servicenow.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-confluence
type: call
call: confluence.create-record
with:
reference: "{{process-servicenow.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_itsm_team_id"
channel_id: "$secrets.teams_itsm_channel_id"
text: "ServiceNow Problem to Known Error KB: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: process-record
method: POST
- type: http
namespace: confluence
baseUri: "https://honda.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: records
path: "/content"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team.
naftiko: "0.5"
info:
label: "Snowflake Cost Spike to FinOps Alert"
description: "When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team."
tags:
- finops
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: snowflake-cost-spike-to-finops-alert
description: "When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-snowflake
type: call
call: snowflake.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-snowflake.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_finops_team_id"
channel_id: "$secrets.teams_finops_channel_id"
text: "Snowflake Cost Spike to FinOps Alert: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://honda.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: records
path: "/statements"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering.
naftiko: "0.5"
info:
label: "Snowflake ETL Failure to PagerDuty Escalation"
description: "When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering."
tags:
- data-engineering
- snowflake
- jira
- pagerduty
capability:
exposes:
- type: mcp
namespace: data-engineering
port: 8080
tools:
- name: snowflake-etl-failure-to-pagerduty-escalation
description: "When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-snowflake
type: call
call: snowflake.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-snowflake.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_data_engineering_team_id"
channel_id: "$secrets.teams_data_engineering_channel_id"
text: "Snowflake ETL Failure to PagerDuty Escalation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://honda.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: records
path: "/statements"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards.
naftiko: "0.5"
info:
label: "Snowflake Schema Drift to Data Governance"
description: "When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards."
tags:
- data-governance
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: snowflake-schema-drift-to-data-governance
description: "When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-snowflake
type: call
call: snowflake.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-jira
type: call
call: jira.create-record
with:
reference: "{{process-snowflake.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_data_governance_team_id"
channel_id: "$secrets.teams_data_governance_channel_id"
text: "Snowflake Schema Drift to Data Governance: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://honda.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: records
path: "/statements"
operations:
- name: process-record
method: POST
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: records
path: "/issue"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Executes a count query against a Snowflake table and returns the row count.
naftiko: "0.5"
info:
label: "Snowflake Table Row Count"
description: "Executes a count query against a Snowflake table and returns the row count."
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: get-table-row-count
description: "Given a Snowflake table name, return the total row count."
inputParameters:
- name: table_name
in: body
type: string
description: "Fully qualified Snowflake table name."
call: snowflake.execute-query
with:
statement: "{{table_name}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: snowflake
baseUri: "https://honda.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
inputParameters:
- name: statement
in: query
operations:
- name: execute-query
method: GET
Retrieves the latest auto parts demand forecast from Salesforce for a component SKU and pushes the planned independent requirement into SAP S/4HANA for production planning.
naftiko: "0.5"
info:
label: "Supply Chain Parts Demand Forecast Sync"
description: "Retrieves the latest auto parts demand forecast from Salesforce for a component SKU and pushes the planned independent requirement into SAP S/4HANA for production planning."
tags:
- supply-chain
- salesforce
- sap
- erp
- demand-planning
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain-planning
port: 8080
tools:
- name: sync-parts-demand-forecast
description: "Given a parts SKU and planning period, retrieve the demand forecast from Salesforce and create a planned independent requirement in SAP S/4HANA. Use for monthly production planning and parts procurement alignment."
inputParameters:
- name: part_number
in: body
type: string
description: "The Honda parts number or component SKU, e.g. 45251-T20-A01."
- name: planning_period
in: body
type: string
description: "The planning period in YYYYMM format, e.g. 202504."
- name: forecast_quantity
in: body
type: string
description: "Forecasted demand quantity in units."
steps:
- name: get-forecast
type: call
call: "salesforce-forecast.get-parts-forecast"
with:
part_number: "{{part_number}}"
- name: push-to-sap
type: call
call: "sap-pir.create-planned-requirement"
with:
material: "{{part_number}}"
planning_period: "{{planning_period}}"
quantity: "{{forecast_quantity}}"
consumes:
- type: http
namespace: salesforce-forecast
baseUri: "https://honda.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: parts-forecast
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: get-parts-forecast
method: GET
- type: http
namespace: sap-pir
baseUri: "https://honda-s4.sap.com/sap/opu/odata/sap/API_PLND_INDEP_REQMT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: planned-requirements
path: "/A_PlannedIndepRqmt"
operations:
- name: create-planned-requirement
method: POST
When Terraform Cloud detects infrastructure drift, creates a Jira remediation ticket and notifies the platform engineering team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Terraform Cloud Drift Detection"
description: "When Terraform Cloud detects infrastructure drift, creates a Jira remediation ticket and notifies the platform engineering team in Microsoft Teams."
tags:
- infrastructure
- terraform
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: handle-drift-detection
description: "Given a Terraform workspace with drift, create a remediation ticket and notify the platform team."
inputParameters:
- name: workspace_name
in: body
type: string
description: "Terraform Cloud workspace name."
- name: drift_summary
in: body
type: string
description: "Summary of detected drift."
- name: resource_count
in: body
type: integer
description: "Number of drifted resources."
steps:
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: PLATFORM
issuetype: Bug
summary: "Terraform Drift: {{workspace_name}} ({{resource_count}} resources)"
description: "{{drift_summary}}"
- name: notify-platform
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_platform_team_id"
channel_id: "$secrets.teams_platform_channel_id"
text: "Terraform Drift: {{workspace_name}} | {{resource_count}} resources | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: jira
baseUri: "https://honda.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Initiates the annual performance review cycle for a Honda division in Workday by notifying all managers via Teams to complete reviews for their direct reports by the submission deadline.
naftiko: "0.5"
info:
label: "Workday Annual Performance Review Kickoff"
description: "Initiates the annual performance review cycle for a Honda division in Workday by notifying all managers via Teams to complete reviews for their direct reports by the submission deadline."
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: kickoff-performance-reviews
description: "Given a Workday department ID, review cycle name, and deadline, list active associates and notify managers via Teams to begin the annual review process in Workday."
inputParameters:
- name: department_id
in: body
type: string
description: "The Workday department ID to kick off reviews for."
- name: review_cycle
in: body
type: string
description: "The review cycle name, e.g. 2025 Annual Performance Review."
- name: deadline
in: body
type: string
description: "Submission deadline in YYYY-MM-DD format."
steps:
- name: get-employees
type: call
call: "workday-perf.list-workers"
with:
department_id: "{{department_id}}"
- name: notify-hr-channel
type: call
call: "msteams-perf.post-channel-message"
with:
channel_id: "$secrets.teams_hr_channel_id"
message: "Performance Review Kickoff | {{review_cycle}} | Department: {{department_id}} | Deadline: {{deadline}} | Please complete all reviews in Workday."
consumes:
- type: http
namespace: workday-perf
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/honda/workers"
inputParameters:
- name: department_id
in: query
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams-perf
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP.
naftiko: "0.5"
info:
label: "Workday Compensation Change to Payroll Sync"
description: "When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP."
tags:
- hr
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: workday-compensation-change-to-payroll-sync
description: "When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_hr_team_id"
channel_id: "$secrets.teams_hr_channel_id"
text: "Workday Compensation Change to Payroll Sync: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves an employee profile from Workday by employee ID.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves an employee profile from Workday by employee ID."
tags:
- hr
- workday
- employee-data
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee-profile
description: "Given a Workday employee ID, return the employee name and title."
inputParameters:
- name: employee_id
in: body
type: string
description: "Workday employee ID."
call: workday.get-worker
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard.
naftiko: "0.5"
info:
label: "Workday Headcount Change to Finance Forecast"
description: "When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard."
tags:
- finance
- workday
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: workday-headcount-change-to-finance-forecast
description: "When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-snowflake
type: call
call: snowflake.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_finance_team_id"
channel_id: "$secrets.teams_finance_channel_id"
text: "Workday Headcount Change to Finance Forecast: {{source_id}} | {{summary}} | Ref: {{create-snowflake.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: snowflake
baseUri: "https://honda.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: records
path: "/statements"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Workday leave request is approved, notifies the manager and blocks the calendar.
naftiko: "0.5"
info:
label: "Workday Leave Request to Calendar Block"
description: "When a Workday leave request is approved, notifies the manager and blocks the calendar."
tags:
- hr
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: workday-leave-request-to-calendar-block
description: "When a Workday leave request is approved, notifies the manager and blocks the calendar."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-msteams
type: call
call: msteams.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_hr_team_id"
channel_id: "$secrets.teams_hr_channel_id"
text: "Workday Leave Request to Calendar Block: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: records
path: "/teams"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning.
naftiko: "0.5"
info:
label: "Workday New Hire to Equipment Request"
description: "When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning."
tags:
- hr
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: workday-new-hire-to-equipment-request
description: "When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-servicenow
type: call
call: servicenow.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_hr_team_id"
channel_id: "$secrets.teams_hr_channel_id"
text: "Workday New Hire to Equipment Request: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: servicenow
baseUri: "https://honda.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: records
path: "/table/incident"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket.
naftiko: "0.5"
info:
label: "Workday Org Change to Access Review"
description: "When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket."
tags:
- compliance
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: workday-org-change-to-access-review
description: "When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-okta
type: call
call: okta.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_compliance_team_id"
channel_id: "$secrets.teams_compliance_channel_id"
text: "Workday Org Change to Access Review: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: okta
baseUri: "https://honda.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: records
path: "/users"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request.
naftiko: "0.5"
info:
label: "Workday Promotion to Access Upgrade"
description: "When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request."
tags:
- hr
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: workday-promotion-to-access-upgrade
description: "When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-okta
type: call
call: okta.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_hr_team_id"
channel_id: "$secrets.teams_hr_channel_id"
text: "Workday Promotion to Access Upgrade: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: okta
baseUri: "https://honda.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: records
path: "/users"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves open engineering and manufacturing job requisitions and candidate pipeline counts from Workday Recruiting for a given Honda division or department.
naftiko: "0.5"
info:
label: "Workday Recruiting Pipeline Status"
description: "Retrieves open engineering and manufacturing job requisitions and candidate pipeline counts from Workday Recruiting for a given Honda division or department."
tags:
- hr
- recruiting
- workday
- talent-acquisition
- reporting
capability:
exposes:
- type: mcp
namespace: hr-recruiting
port: 8080
tools:
- name: get-recruiting-pipeline
description: "Given a Workday department ID, retrieve all open job requisitions and their candidate pipeline counts. Use for weekly talent acquisition reviews and hiring manager status updates across Honda divisions."
inputParameters:
- name: department_id
in: body
type: string
description: "The Workday department ID to retrieve open requisitions for."
call: "workday-rec.list-requisitions"
with:
department_id: "{{department_id}}"
outputParameters:
- name: requisitions
type: array
mapping: "$.data"
items:
- name: req_id
type: string
mapping: "$.id"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: status
type: string
mapping: "$.status"
- name: candidate_count
type: string
mapping: "$.candidateCount"
consumes:
- type: http
namespace: workday-rec
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/jobRequisitions"
inputParameters:
- name: department_id
in: query
operations:
- name: list-requisitions
method: GET
When a Honda associate changes roles in Workday (e.g., engineer to lead engineer or cross-division transfer), creates a ServiceNow access update request and notifies the new manager via Teams.
naftiko: "0.5"
info:
label: "Workday Role Change Provisioning"
description: "When a Honda associate changes roles in Workday (e.g., engineer to lead engineer or cross-division transfer), creates a ServiceNow access update request and notifies the new manager via Teams."
tags:
- hr
- access-management
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: provision-role-change
description: "Given a Workday employee ID, new role, effective date, and new manager UPN, create a ServiceNow access-update request and notify the new manager in Teams. Use for promotions and cross-division transfers."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the associate changing roles."
- name: new_role
in: body
type: string
description: "The new job title, e.g. Senior Software Engineer or Vehicle Program Manager."
- name: effective_date
in: body
type: string
description: "The effective date of the role change in YYYY-MM-DD format."
- name: new_manager_upn
in: body
type: string
description: "The Microsoft 365 UPN of the new manager."
steps:
- name: get-worker
type: call
call: "workday-rc.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-access-request
type: call
call: "servicenow-rc.create-incident"
with:
short_description: "Access update for {{get-worker.display_name}} — new role: {{new_role}}"
category: "access_management"
- name: notify-manager
type: call
call: "msteams-rc.send-message"
with:
recipient_upn: "{{new_manager_upn}}"
message: "{{get-worker.display_name}} will join your team as {{new_role}} on {{effective_date}}. Access update request: {{create-access-request.number}}."
consumes:
- type: http
namespace: workday-rc
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/honda/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-rc
baseUri: "https://honda.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-rc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket.
naftiko: "0.5"
info:
label: "Workday Termination to Okta Deprovisioning"
description: "When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket."
tags:
- hr
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: workday-termination-to-okta-deprovisioning
description: "When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket."
inputParameters:
- name: source_id
in: body
type: string
description: "Source record identifier."
- name: summary
in: body
type: string
description: "Summary of the event."
- name: severity
in: body
type: string
description: "Priority or severity level."
steps:
- name: process-workday
type: call
call: workday.process-record
with:
id: "{{source_id}}"
description: "{{summary}}"
- name: create-okta
type: call
call: okta.create-record
with:
reference: "{{process-workday.id}}"
summary: "{{summary}}"
priority: "{{severity}}"
- name: notify-team
type: call
call: msteams.send-channel-message
with:
team_id: "$secrets.teams_hr_team_id"
channel_id: "$secrets.teams_hr_channel_id"
text: "Workday Termination to Okta Deprovisioning: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://honda.workday.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: records
path: "/workers"
operations:
- name: process-record
method: POST
- type: http
namespace: okta
baseUri: "https://honda.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: records
path: "/users"
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Enriches a company record with firmographic data from ZoomInfo.
naftiko: "0.5"
info:
label: "ZoomInfo Company Enrichment Lookup"
description: "Enriches a company record with firmographic data from ZoomInfo."
tags:
- sales
- zoominfo
- data-enrichment
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: enrich-company
description: "Given a domain, return the ZoomInfo company profile."
inputParameters:
- name: domain
in: body
type: string
description: "Company website domain."
call: zoominfo.enrich-company
with:
companyWebsite: "{{domain}}"
outputParameters:
- name: result_id
type: string
mapping: "$.id"
- name: result_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.example.com/v1"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: enrich
path: "/enrich/company"
inputParameters:
- name: companyWebsite
in: query
operations:
- name: enrich-company
method: GET