Palantir Capabilities
Naftiko 0.5 capability definitions for Palantir - 139 capabilities showing integration workflows and service orchestrations.
Given a document URL or Confluence page ID, retrieves the content and generates an executive summary using Anthropic Claude, then posts it to a Teams channel.
naftiko: "0.5"
info:
label: "AI-Assisted Document Summarization"
description: "Given a document URL or Confluence page ID, retrieves the content and generates an executive summary using Anthropic Claude, then posts it to a Teams channel."
tags:
- ai
- automation
- anthropic
- confluence
- microsoft-teams
- summarization
capability:
exposes:
- type: mcp
namespace: ai-assist
port: 8080
tools:
- name: summarize-document
description: "Given a Confluence page ID, retrieve the page content, generate a concise executive summary via Anthropic Claude, and post the summary to a Teams channel."
inputParameters:
- name: confluence_page_id
in: body
type: string
description: "The Confluence page ID to summarize."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel ID where the summary should be posted."
steps:
- name: get-page
type: call
call: confluence.get-page
with:
page_id: "{{confluence_page_id}}"
- name: generate-summary
type: call
call: anthropic.create-message
with:
model: "claude-3-5-sonnet-20241022"
prompt: "Summarize the following document in 3-5 bullet points for an executive audience:\n\n{{get-page.body}}"
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Summary of '{{get-page.title}}':\n{{generate-summary.content}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new ServiceNow incident is created, generates an AI-powered triage recommendation using Anthropic Claude and appends it as a work note on the incident.
naftiko: "0.5"
info:
label: "AI-Assisted Incident Triage"
description: "When a new ServiceNow incident is created, generates an AI-powered triage recommendation using Anthropic Claude and appends it as a work note on the incident."
tags:
- itsm
- ai
- servicenow
- anthropic
- incident-response
- automation
capability:
exposes:
- type: mcp
namespace: ai-triage
port: 8080
tools:
- name: triage-incident
description: "Given a ServiceNow incident number and description, generate an AI triage recommendation with likely cause, priority suggestion, and routing advice, then append it to the incident as a work note."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number to triage (e.g., 'INC0045678')."
- name: incident_description
in: body
type: string
description: "The full incident description text to analyze."
steps:
- name: generate-triage
type: call
call: anthropic.create-message
with:
model: "claude-3-5-sonnet-20241022"
prompt: "You are an IT operations expert. Analyze this incident and provide: 1) Likely cause, 2) Recommended priority (P1-P4), 3) Best assignment group. Incident: {{incident_description}}"
- name: add-work-note
type: call
call: servicenow.update-incident
with:
number: "{{incident_number}}"
work_notes: "AI Triage Recommendation:\n{{generate-triage.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: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: update-incident
method: PATCH
Updates an AIP agent configuration by validating the new prompt template in Foundry, deploying the updated config, running a test suite, and notifying the team via Slack with test results.
naftiko: "0.5"
info:
label: "AIP Agent Configuration Update Orchestrator"
description: "Updates an AIP agent configuration by validating the new prompt template in Foundry, deploying the updated config, running a test suite, and notifying the team via Slack with test results."
tags:
- data-analytics
- aip
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: aip-config
port: 8080
tools:
- name: update-agent-config
description: "Orchestrate AIP agent config update: validate template, deploy, test, and notify."
inputParameters:
- name: agent_rid
in: body
type: string
description: "The AIP agent resource identifier."
- name: prompt_template
in: body
type: string
description: "The new prompt template content."
steps:
- name: validate-template
type: call
call: "foundry.validate-prompt-template"
with:
agent_rid: "{{agent_rid}}"
template: "{{prompt_template}}"
- name: deploy-config
type: call
call: "foundry.update-agent-config"
with:
agent_rid: "{{agent_rid}}"
template: "{{prompt_template}}"
- name: run-tests
type: call
call: "foundry.run-agent-tests"
with:
agent_rid: "{{agent_rid}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "aip-agents"
text: "Agent {{agent_rid}} config updated. Tests: {{run-tests.passed}}/{{run-tests.total}} passed."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: agents
path: "/aip/agents/{{agent_rid}}"
inputParameters:
- name: agent_rid
in: path
operations:
- name: validate-prompt-template
method: POST
- name: update-agent-config
method: PUT
- name: run-agent-tests
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Deploys an AIP agent by validating configuration, running tests, and notifying the team via Slack.
naftiko: "0.5"
info:
label: "AIP Agent Deployment Orchestrator"
description: "Deploys an AIP agent by validating configuration, running tests, and notifying the team via Slack."
tags:
- ai
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: aip-agent-deployment
port: 8080
tools:
- name: aip-agent-deployment
description: "Deploys an AIP agent by validating configuration."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "AIP Agent Deployment processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors Palantir AIP agent executions, tracks success rates, and posts operational metrics to Slack.
naftiko: "0.5"
info:
label: "AIP Agent Execution Monitor"
description: "Monitors Palantir AIP agent executions, tracks success rates, and posts operational metrics to Slack."
tags:
- ai
- aip
- palantir
- monitoring
- slack
capability:
exposes:
- type: mcp
namespace: aip-monitor
port: 8080
tools:
- name: monitor-aip-agents
description: "Query AIP agent execution history and post operational metrics."
inputParameters:
- name: agent_name
in: body
type: string
description: "AIP agent name."
- name: hours
in: body
type: string
description: "Hours to look back."
steps:
- name: get-executions
type: call
call: "foundry.get-agent-executions"
with:
agentName: "{{agent_name}}"
lookback: "{{hours}}"
- name: post-metrics
type: call
call: "slack.post-message"
with:
channel: "aip-ops"
text: "AIP Agent Monitor: {{agent_name}} | Executions: {{get-executions.total}} | Success: {{get-executions.success_rate}}% | Avg latency: {{get-executions.avg_latency_ms}}ms"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: agents
path: "/aip/agents/{{agentName}}/executions"
inputParameters:
- name: agentName
in: path
- name: lookback
in: query
operations:
- name: get-agent-executions
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the operational status of a Palantir AIP agent.
naftiko: "0.5"
info:
label: "AIP Agent Status Lookup"
description: "Retrieves the operational status of a Palantir AIP agent."
tags:
- ai
- foundry
capability:
exposes:
- type: mcp
namespace: aip-status
port: 8080
tools:
- name: get-agent-status
description: "Look up AIP agent operational status."
inputParameters:
- name: agent_id
in: body
type: string
description: "AIP agent identifier."
call: "foundry.get-agent-status"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: status
type: string
mapping: "$.agent.status"
- name: last_run
type: string
mapping: "$.agent.lastExecution"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: agents
path: "/aip/agents/{{agent_id}}"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-agent-status
method: GET
Retrieves the definition and execution history of an AIP Logic function, returning function name, last execution time, and success rate.
naftiko: "0.5"
info:
label: "AIP Logic Function Lookup"
description: "Retrieves the definition and execution history of an AIP Logic function, returning function name, last execution time, and success rate."
tags:
- data-analytics
- aip
- foundry
capability:
exposes:
- type: mcp
namespace: aip-platform
port: 8080
tools:
- name: get-logic-function
description: "Look up an AIP Logic function definition and execution stats."
inputParameters:
- name: function_rid
in: body
type: string
description: "The Logic function resource identifier."
call: "foundry.get-logic-function"
with:
function_rid: "{{function_rid}}"
outputParameters:
- name: function_name
type: string
mapping: "$.name"
- name: last_execution
type: string
mapping: "$.lastExecution.timestamp"
- name: success_rate_pct
type: number
mapping: "$.metrics.successRate"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: logic-functions
path: "/functions/{{function_rid}}"
inputParameters:
- name: function_rid
in: path
operations:
- name: get-logic-function
method: GET
Evaluates AIP model outputs, compares against benchmarks in Foundry, and publishes evaluation report to Confluence.
naftiko: "0.5"
info:
label: "AIP Model Evaluation Orchestrator"
description: "Evaluates AIP model outputs, compares against benchmarks in Foundry, and publishes evaluation report to Confluence."
tags:
- ai
- foundry
- confluence
capability:
exposes:
- type: mcp
namespace: aip-model-evaluation
port: 8080
tools:
- name: aip-model-evaluation
description: "Evaluates AIP model outputs."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "AIP Model Evaluation"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Reviews AIP prompt templates for compliance, logs reviews in ServiceNow, and publishes guidelines to Confluence.
naftiko: "0.5"
info:
label: "AIP Prompt Template Review Orchestrator"
description: "Reviews AIP prompt templates for compliance, logs reviews in ServiceNow, and publishes guidelines to Confluence."
tags:
- ai
- foundry
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: aip-prompt-template-revie
port: 8080
tools:
- name: aip-prompt-template-review
description: "Reviews AIP prompt templates for compliance."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "AIP Prompt Template Review for {{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "AIP Prompt Template Review"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Pulls AWS cost and usage reports, maps costs to Foundry projects using tag-based allocation, stores the results in a Foundry dataset, and sends a weekly cost summary to Slack.
naftiko: "0.5"
info:
label: "AWS Cost Allocation to Foundry Orchestrator"
description: "Pulls AWS cost and usage reports, maps costs to Foundry projects using tag-based allocation, stores the results in a Foundry dataset, and sends a weekly cost summary to Slack."
tags:
- data-analytics
- aws
- foundry
- finance
- slack
capability:
exposes:
- type: mcp
namespace: cloud-cost
port: 8080
tools:
- name: allocate-aws-costs
description: "Orchestrate AWS cost allocation: pull costs, map to projects, store in Foundry, and summarize."
inputParameters:
- name: billing_period
in: body
type: string
description: "Billing period in YYYY-MM format."
steps:
- name: get-cost-report
type: call
call: "aws-ce.get-cost-and-usage"
with:
period: "{{billing_period}}"
- name: map-to-projects
type: call
call: "foundry.run-cost-allocation"
with:
cost_data: "{{get-cost-report.results}}"
- name: store-allocations
type: call
call: "foundry.write-dataset"
with:
dataset_rid: "aws-cost-allocations"
data: "{{map-to-projects.allocations}}"
- name: post-summary
type: call
call: "slack.post-message"
with:
channel: "cloud-costs"
text: "AWS costs for {{billing_period}}: ${{get-cost-report.total_cost}}. Top project: {{map-to-projects.top_project}} (${{map-to-projects.top_project_cost}})."
consumes:
- type: http
namespace: aws-ce
baseUri: "https://ce.us-east-1.amazonaws.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.aws_auth_header"
placement: header
resources:
- name: cost-usage
path: "/"
operations:
- name: get-cost-and-usage
method: POST
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: transforms
path: "/transforms/cost-allocation/execute"
operations:
- name: run-cost-allocation
method: POST
- name: datasets
path: "/datasets/{{dataset_rid}}/records"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: write-dataset
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When AWS Cost Anomaly Detection raises an alert, annotates Datadog, opens a ServiceNow incident, and posts a cost alert to the FinOps Microsoft Teams channel.
naftiko: "0.5"
info:
label: "AWS Cost Anomaly Responder"
description: "When AWS Cost Anomaly Detection raises an alert, annotates Datadog, opens a ServiceNow incident, and posts a cost alert to the FinOps Microsoft Teams channel."
tags:
- finops
- cloud
- datadog
- servicenow
- microsoft-teams
- aws
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an AWS cost anomaly ID, affected service, and estimated overage in USD, create a Datadog event annotation, open a ServiceNow incident, and post a FinOps Teams alert."
inputParameters:
- name: anomaly_id
in: body
type: string
description: "The AWS Cost Anomaly Detection anomaly ID."
- name: service
in: body
type: string
description: "The AWS service generating the cost anomaly (e.g., 'EC2', 'S3')."
- name: estimated_overage_usd
in: body
type: number
description: "The estimated overage amount in US dollars."
steps:
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: "AWS Cost Anomaly: {{service}}"
text: "Anomaly {{anomaly_id}} — estimated overage: ${{estimated_overage_usd}}"
alert_type: "warning"
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: "AWS Cost Anomaly — {{service}} — ${{estimated_overage_usd}} overage"
category: "cloud_cost"
urgency: "2"
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: "finops-alerts"
text: "AWS Cost Anomaly: {{service}} | Overage: ${{estimated_overage_usd}} | SNOW: {{create-incident.number}} | Datadog: {{annotate-datadog.url}}"
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: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Searches Confluence for pages matching a query and returns the top results with titles, excerpts, and URLs for agent-assisted knowledge retrieval.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Search"
description: "Searches Confluence for pages matching a query and returns the top results with titles, excerpts, and URLs for agent-assisted knowledge retrieval."
tags:
- knowledge-management
- confluence
- lookup
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-confluence
description: "Given a search query and optional Confluence space key, search Confluence for matching pages and return titles, excerpts, and URLs."
inputParameters:
- name: query
in: body
type: string
description: "The search query to find relevant Confluence pages."
- name: space_key
in: body
type: string
description: "Optional Confluence space key to scope the search (e.g., 'ENG', 'IT')."
call: confluence.search-content
with:
cql: "text ~ \"{{query}}\" AND space = \"{{space_key}}\""
outputParameters:
- name: results
type: array
mapping: "$.results"
consumes:
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: search
path: "/content/search"
inputParameters:
- name: cql
in: query
operations:
- name: search-content
method: GET
Checks customer deployment health in Foundry, validates SLOs via Datadog, and publishes reports to Confluence.
naftiko: "0.5"
info:
label: "Customer Deployment Health Check Orchestrator"
description: "Checks customer deployment health in Foundry, validates SLOs via Datadog, and publishes reports to Confluence."
tags:
- operations
- foundry
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: customer-deployment-healt
port: 8080
tools:
- name: customer-deployment-health-check
description: "Checks customer deployment health in Foundry."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: check-metrics
type: call
call: "datadog.get-monitors"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Customer Deployment Health Check"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor"
operations:
- name: get-monitors
method: GET
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
When a new customer signs a contract in Salesforce, provisions a Foundry project, sets up data connections, creates an onboarding checklist in Jira, and notifies the customer success team via Slack.
naftiko: "0.5"
info:
label: "Customer Onboarding Data Pipeline Orchestrator"
description: "When a new customer signs a contract in Salesforce, provisions a Foundry project, sets up data connections, creates an onboarding checklist in Jira, and notifies the customer success team via Slack."
tags:
- data-analytics
- salesforce
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: customer-onboarding
port: 8080
tools:
- name: onboard-customer-data
description: "Orchestrate customer data onboarding: provision Foundry project, set up connections, create checklist, and notify team."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity identifier."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: provision-project
type: call
call: "foundry.create-project"
with:
name: "{{get-opportunity.account_name}}-data"
description: "Data project for {{get-opportunity.account_name}}"
- name: create-jira-checklist
type: call
call: "jira.create-issue"
with:
project: "ONBOARD"
issue_type: "Epic"
summary: "Data onboarding: {{get-opportunity.account_name}}"
description: "Foundry project: {{provision-project.project_rid}}"
- name: notify-cs-team
type: call
call: "slack.post-message"
with:
channel: "customer-success"
text: "New customer data onboarding started: {{get-opportunity.account_name}}. Foundry project: {{provision-project.project_rid}}. Jira epic: {{create-jira-checklist.key}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: projects
path: "/projects"
operations:
- name: create-project
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Calculates customer health scores from Foundry data, updates Salesforce records, and alerts CSMs via Slack.
naftiko: "0.5"
info:
label: "Customer Success Health Score Orchestrator"
description: "Calculates customer health scores from Foundry data, updates Salesforce records, and alerts CSMs via Slack."
tags:
- sales
- foundry
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: customer-success-health-s
port: 8080
tools:
- name: customer-success-health-score
description: "Calculates customer health scores from Foundry data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: update-sf
type: call
call: "salesforce.update-record"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Customer Success Health Score processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: objects
path: "/sobjects"
operations:
- name: update-record
method: PATCH
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a Datadog monitor fires, creates a ServiceNow incident, opens a Jira bug, and posts a real-time alert to the engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Datadog Monitor Alert Handler"
description: "When a Datadog monitor fires, creates a ServiceNow incident, opens a Jira bug, and posts a real-time alert to the engineering Microsoft Teams channel."
tags:
- observability
- datadog
- servicenow
- jira
- incident-response
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: handle-monitor-alert
description: "Given a Datadog monitor ID, monitor name, and alert severity, create a ServiceNow incident and Jira bug, then post a Teams alert with all cross-system links."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that fired the alert."
- name: monitor_name
in: body
type: string
description: "The human-readable name of the Datadog monitor."
- name: severity
in: body
type: string
description: "Alert severity level: 'critical', 'warning', or 'info'."
- name: affected_host
in: body
type: string
description: "The hostname or service impacted by the alert."
steps:
- name: create-snow-incident
type: call
call: servicenow.create-incident
with:
short_description: "Datadog Alert: {{monitor_name}} on {{affected_host}}"
category: "monitoring"
urgency: "{{severity}}"
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: "OPS"
issuetype: "Bug"
summary: "[Datadog] {{monitor_name}} — {{affected_host}}"
description: "Monitor {{monitor_id}} fired at {{severity}}. SNOW: {{create-snow-incident.number}}"
- name: post-alert
type: call
call: msteams.send-message
with:
channel_id: "engineering-alerts"
text: "Datadog Alert [{{severity}}]: {{monitor_name}} | Host: {{affected_host}} | SNOW: {{create-snow-incident.number}} | Jira: {{create-jira-bug.key}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.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.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches current SLO compliance status from Datadog for a service and posts a weekly report to the engineering leadership Teams channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Fetches current SLO compliance status from Datadog for a service and posts a weekly report to the engineering leadership Teams channel."
tags:
- observability
- datadog
- slo
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: "Given a Datadog SLO ID and reporting period, fetch current compliance percentage and error budget remaining, then post a formatted report to Teams."
inputParameters:
- name: slo_id
in: body
type: string
description: "The Datadog SLO ID to report on."
- name: timeframe
in: body
type: string
description: "The SLO reporting timeframe: '7d', '30d', or '90d'."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID for the leadership report."
steps:
- name: get-slo-status
type: call
call: datadog.get-slo
with:
slo_id: "{{slo_id}}"
timeframe: "{{timeframe}}"
- name: post-report
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "SLO Report ({{timeframe}}): {{get-slo-status.name}} | Compliance: {{get-slo-status.sli_value}}% | Error budget remaining: {{get-slo-status.error_budget_remaining}}%"
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: slos
path: "/slo/{{slo_id}}"
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee termination is processed in Workday, creates a ServiceNow offboarding ticket, deactivates accounts via Okta, and notifies the IT team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding Workflow"
description: "When an employee termination is processed in Workday, creates a ServiceNow offboarding ticket, deactivates accounts via Okta, and notifies the IT team in Microsoft Teams."
tags:
- hr
- offboarding
- workday
- servicenow
- okta
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, create a ServiceNow offboarding ticket, deactivate the Okta user, and alert IT via Teams."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID of the departing employee."
- name: termination_date
in: body
type: string
description: "The employee's last working date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: workday-off.get-worker
with:
worker_id: "{{worker_id}}"
- name: create-offboard-ticket
type: call
call: servicenow-off.create-incident
with:
short_description: "Offboarding: {{get-employee.full_name}} — last day {{termination_date}}"
category: "hr_offboarding"
assigned_group: "IT_Security"
- name: deactivate-okta
type: call
call: okta.deactivate-user
with:
email: "{{get-employee.email}}"
- name: notify-it
type: call
call: msteams-off.send-message
with:
channel_id: "it-ops-channel"
text: "Offboarding initiated for {{get-employee.full_name}} (last day: {{termination_date}}). SNOW: {{create-offboard-ticket.number}}. Okta deactivated: {{deactivate-okta.status}}."
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: "/palantir/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-off
baseUri: "https://palantir.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: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_key"
placement: header
resources:
- name: users
path: "/users/{{email}}/lifecycle/deactivate"
inputParameters:
- name: email
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: msteams-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Provisions Foundry access for new hires by creating Okta accounts, assigning Foundry projects, and notifying via Slack.
naftiko: "0.5"
info:
label: "Employee Onboarding Foundry Access Orchestrator"
description: "Provisions Foundry access for new hires by creating Okta accounts, assigning Foundry projects, and notifying via Slack."
tags:
- hr
- foundry
- okta
- slack
capability:
exposes:
- type: mcp
namespace: employee-onboarding-found
port: 8080
tools:
- name: employee-onboarding-foundry-access
description: "Provisions Foundry access for new hires by creating Okta accounts."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Employee Onboarding Foundry Access processed for {{entity_id}}"
- name: provision-access
type: call
call: "okta.assign-user"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: assign-user
method: POST
Retrieves execution history for a Foundry Ontology action type, returning recent execution count, success rate, and average execution duration.
naftiko: "0.5"
info:
label: "Foundry Action Type Execution Lookup"
description: "Retrieves execution history for a Foundry Ontology action type, returning recent execution count, success rate, and average execution duration."
tags:
- data-analytics
- foundry
- ontology
capability:
exposes:
- type: mcp
namespace: ontology-actions
port: 8080
tools:
- name: get-action-execution-history
description: "Look up execution history for an Ontology action type. Returns count, success rate, and duration."
inputParameters:
- name: action_type
in: body
type: string
description: "The Ontology action type API name."
call: "foundry.get-action-history"
with:
action_type: "{{action_type}}"
outputParameters:
- name: execution_count_7d
type: number
mapping: "$.executionCount7d"
- name: success_rate_pct
type: number
mapping: "$.successRate"
- name: avg_duration_ms
type: number
mapping: "$.avgDurationMs"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: actions
path: "/ontologies/default/actionTypes/{{action_type}}/executions"
inputParameters:
- name: action_type
in: path
operations:
- name: get-action-history
method: GET
Triggers a model training job in Foundry, monitors completion, validates metrics, and notifies the ML team via Slack.
naftiko: "0.5"
info:
label: "Foundry AI Model Training Orchestrator"
description: "Triggers a model training job in Foundry, monitors completion, validates metrics, and notifies the ML team via Slack."
tags:
- data-platform
- foundry
- palantir
- machine-learning
- slack
capability:
exposes:
- type: mcp
namespace: ml-training
port: 8080
tools:
- name: orchestrate-model-training
description: "Given a model RID and training dataset, trigger training, validate results, and notify the team."
inputParameters:
- name: model_rid
in: body
type: string
description: "Foundry model RID."
- name: training_dataset
in: body
type: string
description: "Training dataset path."
steps:
- name: trigger-training
type: call
call: "foundry.start-training"
with:
modelRid: "{{model_rid}}"
datasetPath: "{{training_dataset}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "ml-ops"
text: "Model training started: {{model_rid}} | Dataset: {{training_dataset}} | Job: {{trigger-training.job_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: training
path: "/models/{{modelRid}}/train"
inputParameters:
- name: modelRid
in: path
operations:
- name: start-training
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves subscription configuration for Foundry alerting rules, returning subscribed users, delivery method, and escalation settings.
naftiko: "0.5"
info:
label: "Foundry Alert Subscription Config Lookup"
description: "Retrieves subscription configuration for Foundry alerting rules, returning subscribed users, delivery method, and escalation settings."
tags:
- data-analytics
- foundry
- alerts
capability:
exposes:
- type: mcp
namespace: foundry-alerts
port: 8080
tools:
- name: get-alert-subscription
description: "Look up an alert subscription configuration. Returns subscribers and delivery settings."
inputParameters:
- name: alert_rid
in: body
type: string
description: "The alert rule resource identifier."
call: "foundry.get-alert-config"
with:
rid: "{{alert_rid}}"
outputParameters:
- name: subscriber_count
type: number
mapping: "$.subscriberCount"
- name: delivery_method
type: string
mapping: "$.deliveryMethod"
- name: escalation_enabled
type: boolean
mapping: "$.escalationEnabled"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: alerts
path: "/alerts/{{rid}}/subscriptions"
inputParameters:
- name: rid
in: path
operations:
- name: get-alert-config
method: GET
Identifies deprecated API usage in Foundry, notifies consumers via Slack, and creates Jira migration tickets.
naftiko: "0.5"
info:
label: "Foundry API Deprecation Orchestrator"
description: "Identifies deprecated API usage in Foundry, notifies consumers via Slack, and creates Jira migration tickets."
tags:
- data-platform
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: foundry-api-deprecation
port: 8080
tools:
- name: foundry-api-deprecation
description: "Identifies deprecated API usage in Foundry."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry API Deprecation"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry API Deprecation processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves details for a Foundry third-party application token including scopes, expiry, and last used time.
naftiko: "0.5"
info:
label: "Foundry API Token Lookup"
description: "Retrieves details for a Foundry third-party application token including scopes, expiry, and last used time."
tags:
- data-platform
- foundry
- palantir
- api-management
capability:
exposes:
- type: mcp
namespace: foundry-tokens
port: 8080
tools:
- name: get-token-details
description: "Given a token ID, return its name, scopes, expiry, and last used timestamp."
inputParameters:
- name: token_id
in: body
type: string
description: "Foundry API token ID."
call: "foundry.get-token"
with:
tokenId: "{{token_id}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: scopes
type: string
mapping: "$.scopes"
- name: expiry
type: string
mapping: "$.expiresAt"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: tokens
path: "/tokens/{{tokenId}}"
inputParameters:
- name: tokenId
in: path
operations:
- name: get-token
method: GET
Reviews and merges a Foundry dataset branch, validates data quality, and notifies the data team via Slack.
naftiko: "0.5"
info:
label: "Foundry Branch Merge Workflow"
description: "Reviews and merges a Foundry dataset branch, validates data quality, and notifies the data team via Slack."
tags:
- data-platform
- foundry
- palantir
- data-quality
- slack
capability:
exposes:
- type: mcp
namespace: branch-merge
port: 8080
tools:
- name: merge-dataset-branch
description: "Given a dataset and branch, validate data quality then merge and notify."
inputParameters:
- name: dataset_rid
in: body
type: string
description: "Foundry dataset RID."
- name: branch_name
in: body
type: string
description: "Branch name to merge."
steps:
- name: merge-branch
type: call
call: "foundry.merge-branch"
with:
datasetRid: "{{dataset_rid}}"
branchName: "{{branch_name}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "data-engineering"
text: "Branch merged: {{branch_name}} into master for dataset {{dataset_rid}} | Status: {{merge-branch.status}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: branches
path: "/datasets/{{datasetRid}}/branches/{{branchName}}/merge"
inputParameters:
- name: datasetRid
in: path
- name: branchName
in: path
operations:
- name: merge-branch
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the latest build status for a Foundry code repository.
naftiko: "0.5"
info:
label: "Foundry Code Repository Build Status Lookup"
description: "Retrieves the latest build status for a Foundry code repository."
tags:
- cicd
- foundry
capability:
exposes:
- type: mcp
namespace: repo-builds
port: 8080
tools:
- name: get-build-status
description: "Look up Foundry code repository build status."
inputParameters:
- name: repo_rid
in: body
type: string
description: "Foundry code repository RID."
call: "foundry.get-build-status"
with:
rid: "{{repo_rid}}"
outputParameters:
- name: status
type: string
mapping: "$.build.status"
- name: commit
type: string
mapping: "$.build.commitHash"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: repos
path: "/codeRepositories/{{rid}}/builds"
inputParameters:
- name: rid
in: path
operations:
- name: get-build-status
method: GET
Retrieves recent commits from a Foundry Code Repository, returning commit hash, author, message, and timestamp.
naftiko: "0.5"
info:
label: "Foundry Code Repository Commit Lookup"
description: "Retrieves recent commits from a Foundry Code Repository, returning commit hash, author, message, and timestamp."
tags:
- data-analytics
- foundry
- engineering
capability:
exposes:
- type: mcp
namespace: foundry-dev
port: 8080
tools:
- name: get-recent-commits
description: "Look up recent commits in a Foundry code repository. Returns commit details."
inputParameters:
- name: repo_rid
in: body
type: string
description: "The Foundry code repository resource identifier."
call: "foundry.list-commits"
with:
repo_rid: "{{repo_rid}}"
outputParameters:
- name: commits
type: array
mapping: "$.data"
items:
- name: commit_hash
type: string
mapping: "$.hash"
- name: author
type: string
mapping: "$.author"
- name: message
type: string
mapping: "$.message"
- name: timestamp
type: string
mapping: "$.timestamp"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: code-repos
path: "/repositories/{{repo_rid}}/commits"
inputParameters:
- name: repo_rid
in: path
operations:
- name: list-commits
method: GET
Exports the results of a Contour analysis board as a Foundry dataset, returning the output dataset RID, row count, and column schema.
naftiko: "0.5"
info:
label: "Foundry Contour Analysis Export"
description: "Exports the results of a Contour analysis board as a Foundry dataset, returning the output dataset RID, row count, and column schema."
tags:
- data-analytics
- foundry
- contour
capability:
exposes:
- type: mcp
namespace: foundry-analysis
port: 8080
tools:
- name: export-contour-analysis
description: "Export a Contour analysis board to a Foundry dataset. Returns output dataset details."
inputParameters:
- name: analysis_rid
in: body
type: string
description: "The Contour analysis resource identifier."
- name: output_dataset_rid
in: body
type: string
description: "The target Foundry dataset RID for export."
call: "foundry.export-contour"
with:
analysis_rid: "{{analysis_rid}}"
target_rid: "{{output_dataset_rid}}"
outputParameters:
- name: row_count
type: number
mapping: "$.rowCount"
- name: column_count
type: number
mapping: "$.columnCount"
- name: export_status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: contour
path: "/contour/analyses/{{analysis_rid}}/export"
inputParameters:
- name: analysis_rid
in: path
operations:
- name: export-contour
method: POST
Allocates Foundry compute costs to teams, publishes reports to Confluence, and notifies finance via email.
naftiko: "0.5"
info:
label: "Foundry Cost Allocation Orchestrator"
description: "Allocates Foundry compute costs to teams, publishes reports to Confluence, and notifies finance via email."
tags:
- finops
- foundry
- confluence
- email
capability:
exposes:
- type: mcp
namespace: foundry-cost-allocation
port: 8080
tools:
- name: foundry-cost-allocation
description: "Allocates Foundry compute costs to teams."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Foundry Cost Allocation"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@palantir.com"
subject: "Foundry Cost Allocation"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Sets up cross-project data sharing in Foundry by creating a data sharing request, validating governance policies, applying data masking rules, and granting read access to the requesting project.
naftiko: "0.5"
info:
label: "Foundry Cross-Project Data Sharing Orchestrator"
description: "Sets up cross-project data sharing in Foundry by creating a data sharing request, validating governance policies, applying data masking rules, and granting read access to the requesting project."
tags:
- data-analytics
- foundry
- governance
- data-sharing
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: setup-data-sharing
description: "Orchestrate cross-project data sharing: validate governance, apply masking, and grant access."
inputParameters:
- name: source_dataset_rid
in: body
type: string
description: "The source dataset resource identifier."
- name: target_project_rid
in: body
type: string
description: "The requesting project resource identifier."
- name: requester_email
in: body
type: string
description: "Email of the user requesting access."
steps:
- name: check-governance
type: call
call: "foundry.check-governance-policy"
with:
dataset_rid: "{{source_dataset_rid}}"
target_project: "{{target_project_rid}}"
- name: apply-masking
type: call
call: "foundry.create-masked-view"
with:
dataset_rid: "{{source_dataset_rid}}"
masking_policy: "{{check-governance.required_masking}}"
- name: grant-access
type: call
call: "foundry.grant-dataset-access"
with:
dataset_rid: "{{apply-masking.masked_dataset_rid}}"
project_rid: "{{target_project_rid}}"
- name: notify-requester
type: call
call: "slack.post-message"
with:
channel: "{{requester_email}}"
text: "Data sharing approved for dataset {{source_dataset_rid}}. Masked view available in your project."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: governance
path: "/governance/policies/check"
operations:
- name: check-governance-policy
method: POST
- name: datasets
path: "/datasets/{{dataset_rid}}/views"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: create-masked-view
method: POST
- name: grant-dataset-access
method: PUT
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Enriches a customer profile in Foundry by pulling CRM data from Salesforce, support history from ServiceNow, product usage from Snowflake, and merging into a unified customer 360 Ontology object.
naftiko: "0.5"
info:
label: "Foundry Customer 360 Enrichment Orchestrator"
description: "Enriches a customer profile in Foundry by pulling CRM data from Salesforce, support history from ServiceNow, product usage from Snowflake, and merging into a unified customer 360 Ontology object."
tags:
- data-analytics
- foundry
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: customer-360
port: 8080
tools:
- name: enrich-customer-profile
description: "Orchestrate customer 360 enrichment: pull CRM, support, and usage data, then merge into Ontology."
inputParameters:
- name: customer_id
in: body
type: string
description: "The customer identifier."
steps:
- name: get-crm-data
type: call
call: "salesforce.get-account"
with:
account_id: "{{customer_id}}"
- name: get-support-history
type: call
call: "servicenow.get-customer-tickets"
with:
customer_id: "{{customer_id}}"
- name: get-product-usage
type: call
call: "snowflake.query-product-usage"
with:
customer_id: "{{customer_id}}"
- name: merge-to-ontology
type: call
call: "foundry.upsert-ontology-object"
with:
object_type: "Customer"
primary_key: "{{customer_id}}"
properties:
account_name: "{{get-crm-data.Name}}"
open_tickets: "{{get-support-history.open_count}}"
monthly_active_users: "{{get-product-usage.mau}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.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: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: tickets
path: "/table/incident"
operations:
- name: get-customer-tickets
method: GET
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-product-usage
method: POST
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: ontology
path: "/ontologies/default/objectTypes/Customer/objects"
operations:
- name: upsert-ontology-object
method: PUT
Searches the Foundry data catalog for datasets matching a keyword query, returning dataset names, RIDs, descriptions, and last modified dates.
naftiko: "0.5"
info:
label: "Foundry Data Catalog Search Lookup"
description: "Searches the Foundry data catalog for datasets matching a keyword query, returning dataset names, RIDs, descriptions, and last modified dates."
tags:
- data-analytics
- foundry
- data-catalog
capability:
exposes:
- type: mcp
namespace: data-discovery
port: 8080
tools:
- name: search-data-catalog
description: "Search the Foundry data catalog by keyword. Returns matching datasets with metadata."
inputParameters:
- name: query
in: body
type: string
description: "The search keyword or phrase."
call: "foundry.search-catalog"
with:
query: "{{query}}"
outputParameters:
- name: results
type: array
mapping: "$.data"
items:
- name: dataset_name
type: string
mapping: "$.name"
- name: dataset_rid
type: string
mapping: "$.rid"
- name: description
type: string
mapping: "$.description"
- name: last_modified
type: string
mapping: "$.lastModified"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: catalog
path: "/catalog/search"
operations:
- name: search-catalog
method: POST
Checks the health of Foundry data connections, identifies failed syncs, and creates Jira tickets for broken connectors.
naftiko: "0.5"
info:
label: "Foundry Data Connection Health Check"
description: "Checks the health of Foundry data connections, identifies failed syncs, and creates Jira tickets for broken connectors."
tags:
- data-platform
- foundry
- palantir
- data-integration
- jira
- slack
capability:
exposes:
- type: mcp
namespace: connection-health
port: 8080
tools:
- name: check-connection-health
description: "Query Foundry data connections for failed syncs and create Jira tickets for remediation."
inputParameters:
- name: source_type
in: body
type: string
description: "Data source type filter, e.g. jdbc, s3, rest."
steps:
- name: get-connections
type: call
call: "foundry.get-connections"
with:
sourceType: "{{source_type}}"
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Data connection failures: {{get-connections.failed_count}} {{source_type}} connectors"
description: "Failed connections: {{get-connections.failed_list}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "data-engineering"
text: "Connection Health: {{get-connections.failed_count}}/{{get-connections.total}} {{source_type}} connections failed. Jira: {{create-jira.key}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: connections
path: "/data-connections"
inputParameters:
- name: sourceType
in: query
operations:
- name: get-connections
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves sync status for a Foundry data connection.
naftiko: "0.5"
info:
label: "Foundry Data Connection Sync Status Lookup"
description: "Retrieves sync status for a Foundry data connection."
tags:
- data-platform
- foundry
capability:
exposes:
- type: mcp
namespace: sync-status
port: 8080
tools:
- name: get-sync-status
description: "Look up data connection sync status."
inputParameters:
- name: connection_rid
in: body
type: string
description: "Foundry data connection RID."
call: "foundry.get-sync-status"
with:
rid: "{{connection_rid}}"
outputParameters:
- name: last_sync
type: string
mapping: "$.sync.lastSuccessfulSync"
- name: status
type: string
mapping: "$.sync.status"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: connections
path: "/dataConnections/{{rid}}/sync"
inputParameters:
- name: rid
in: path
operations:
- name: get-sync-status
method: GET
Validates data export requests against governance policies, logs in ServiceNow, and notifies requesters.
naftiko: "0.5"
info:
label: "Foundry Data Export Compliance Orchestrator"
description: "Validates data export requests against governance policies, logs in ServiceNow, and notifies requesters."
tags:
- compliance
- foundry
- servicenow
- email
capability:
exposes:
- type: mcp
namespace: foundry-data-export-compl
port: 8080
tools:
- name: foundry-data-export-compliance
description: "Validates data export requests against governance policies."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Foundry Data Export Compliance for {{entity_id}}"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@palantir.com"
subject: "Foundry Data Export Compliance"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Exports a Foundry dataset to an AWS S3 bucket, validates the export, and notifies the data team via Slack.
naftiko: "0.5"
info:
label: "Foundry Data Export to S3"
description: "Exports a Foundry dataset to an AWS S3 bucket, validates the export, and notifies the data team via Slack."
tags:
- data-platform
- foundry
- palantir
- aws
- slack
capability:
exposes:
- type: mcp
namespace: data-export
port: 8080
tools:
- name: export-to-s3
description: "Given a dataset path and S3 destination, trigger an export and confirm via Slack."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path."
- name: s3_bucket
in: body
type: string
description: "Target S3 bucket name."
- name: s3_prefix
in: body
type: string
description: "S3 key prefix."
steps:
- name: trigger-export
type: call
call: "foundry.export-dataset"
with:
datasetPath: "{{dataset_path}}"
destination: "s3://{{s3_bucket}}/{{s3_prefix}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "data-ops"
text: "Data export started: {{dataset_path}} -> s3://{{s3_bucket}}/{{s3_prefix}} | Job: {{trigger-export.job_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: exports
path: "/datasets/export"
operations:
- name: export-dataset
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Checks data freshness for critical Foundry datasets, flags stale data, and creates Jira tickets for data engineering.
naftiko: "0.5"
info:
label: "Foundry Data Freshness Check"
description: "Checks data freshness for critical Foundry datasets, flags stale data, and creates Jira tickets for data engineering."
tags:
- data-platform
- foundry
- palantir
- data-quality
- jira
- slack
capability:
exposes:
- type: mcp
namespace: data-freshness
port: 8080
tools:
- name: check-data-freshness
description: "Given a dataset path and max age in hours, check if data is fresh and alert if stale."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path."
- name: max_age_hours
in: body
type: string
description: "Maximum acceptable data age in hours."
steps:
- name: get-metadata
type: call
call: "foundry.get-dataset"
with:
datasetPath: "{{dataset_path}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Stale data: {{dataset_path}} last updated {{get-metadata.last_modified}}"
description: "Dataset: {{dataset_path}}\nLast modified: {{get-metadata.last_modified}}\nMax age: {{max_age_hours}}h"
- name: alert-team
type: call
call: "slack.post-message"
with:
channel: "data-engineering"
text: "Data Freshness Alert: {{dataset_path}} is stale (last updated: {{get-metadata.last_modified}}). Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{datasetPath}}"
inputParameters:
- name: datasetPath
in: path
operations:
- name: get-dataset
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates a weekly data health report by querying Foundry dataset freshness and quality checks, aggregating metrics in Snowflake, and publishing the summary to Confluence for stakeholder review.
naftiko: "0.5"
info:
label: "Foundry Data Health Report Orchestrator"
description: "Generates a weekly data health report by querying Foundry dataset freshness and quality checks, aggregating metrics in Snowflake, and publishing the summary to Confluence for stakeholder review."
tags:
- data-analytics
- foundry
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: data-health
port: 8080
tools:
- name: generate-data-health-report
description: "Orchestrate weekly data health reporting: check freshness, aggregate metrics, and publish to Confluence."
inputParameters:
- name: project_rid
in: body
type: string
description: "The Foundry project resource identifier."
steps:
- name: check-dataset-freshness
type: call
call: "foundry.check-freshness"
with:
project_rid: "{{project_rid}}"
- name: aggregate-quality-metrics
type: call
call: "snowflake.query-quality-metrics"
with:
project_rid: "{{project_rid}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space: "DATA"
title: "Data Health Report - {{project_rid}}"
body: "Datasets checked: {{check-dataset-freshness.total_datasets}}. Fresh: {{check-dataset-freshness.fresh_count}}. Stale: {{check-dataset-freshness.stale_count}}. Quality score: {{aggregate-quality-metrics.avg_quality_score}}."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: health
path: "/projects/{{project_rid}}/health"
inputParameters:
- name: project_rid
in: path
operations:
- name: check-freshness
method: GET
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-quality-metrics
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Retrieves the health status of a configured data integration source in Foundry, returning connection state, last successful sync, and record throughput.
naftiko: "0.5"
info:
label: "Foundry Data Integration Source Status Lookup"
description: "Retrieves the health status of a configured data integration source in Foundry, returning connection state, last successful sync, and record throughput."
tags:
- data-analytics
- foundry
- data-pipeline
capability:
exposes:
- type: mcp
namespace: data-integration
port: 8080
tools:
- name: get-source-status
description: "Look up a data integration source status. Returns connection health, sync time, and throughput."
inputParameters:
- name: source_rid
in: body
type: string
description: "The data source resource identifier."
call: "foundry.get-source-health"
with:
rid: "{{source_rid}}"
outputParameters:
- name: connection_state
type: string
mapping: "$.connectionState"
- name: last_successful_sync
type: string
mapping: "$.lastSuccessfulSync"
- name: records_per_minute
type: number
mapping: "$.throughput.recordsPerMinute"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: sources
path: "/dataIntegration/sources/{{rid}}/health"
inputParameters:
- name: rid
in: path
operations:
- name: get-source-health
method: GET
Analyzes impact of dataset changes on downstream consumers, creates Jira notifications, and alerts via Slack.
naftiko: "0.5"
info:
label: "Foundry Data Lineage Impact Analysis Orchestrator"
description: "Analyzes impact of dataset changes on downstream consumers, creates Jira notifications, and alerts via Slack."
tags:
- data-platform
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: foundry-data-lineage-impa
port: 8080
tools:
- name: foundry-data-lineage-impact-analysis
description: "Analyzes impact of dataset changes on downstream consumers."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry Data Lineage Impact Analysis"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Data Lineage Impact Analysis processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves upstream and downstream data lineage for a Foundry dataset, returning source and consumer datasets.
naftiko: "0.5"
info:
label: "Foundry Data Lineage Lookup"
description: "Retrieves upstream and downstream data lineage for a Foundry dataset, returning source and consumer datasets."
tags:
- data-platform
- foundry
- palantir
- data-lineage
capability:
exposes:
- type: mcp
namespace: foundry-lineage
port: 8080
tools:
- name: get-data-lineage
description: "Given a dataset RID, return its upstream sources and downstream consumers."
inputParameters:
- name: dataset_rid
in: body
type: string
description: "Foundry dataset RID."
call: "foundry.get-lineage"
with:
datasetRid: "{{dataset_rid}}"
outputParameters:
- name: upstream_count
type: string
mapping: "$.upstream.length"
- name: downstream_count
type: string
mapping: "$.downstream.length"
- name: primary_source
type: string
mapping: "$.upstream[0].name"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: lineage
path: "/datasets/{{datasetRid}}/lineage"
inputParameters:
- name: datasetRid
in: path
operations:
- name: get-lineage
method: GET
Checks data quality metrics for a Foundry dataset, flags anomalies, and posts alerts to Slack.
naftiko: "0.5"
info:
label: "Foundry Data Quality Monitor"
description: "Checks data quality metrics for a Foundry dataset, flags anomalies, and posts alerts to Slack."
tags:
- data-platform
- foundry
- palantir
- data-quality
- slack
capability:
exposes:
- type: mcp
namespace: dq-monitor
port: 8080
tools:
- name: check-data-quality
description: "Given a dataset path, check data quality metrics and post alerts for any anomalies."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path."
- name: slack_channel
in: body
type: string
description: "Slack channel for alerts."
steps:
- name: get-dataset
type: call
call: "foundry.get-dataset-stats"
with:
datasetPath: "{{dataset_path}}"
- name: post-alert
type: call
call: "slack.post-message"
with:
channel: "{{slack_channel}}"
text: "Data Quality Check: {{dataset_path}} | Rows: {{get-dataset.row_count}} | Null rate: {{get-dataset.null_rate}} | Schema changes: {{get-dataset.schema_changes}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{datasetPath}}/stats"
inputParameters:
- name: datasetPath
in: path
operations:
- name: get-dataset-stats
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Audits who has accessed a sensitive Foundry dataset, creates a compliance report, and alerts the data governance team.
naftiko: "0.5"
info:
label: "Foundry Dataset Access Audit"
description: "Audits who has accessed a sensitive Foundry dataset, creates a compliance report, and alerts the data governance team."
tags:
- data-platform
- foundry
- palantir
- compliance
- slack
capability:
exposes:
- type: mcp
namespace: access-audit
port: 8080
tools:
- name: audit-dataset-access
description: "Given a dataset path, pull access logs, and post an audit summary to Slack."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path to audit."
steps:
- name: get-access-logs
type: call
call: "foundry.get-audit-logs"
with:
resourcePath: "{{dataset_path}}"
- name: post-audit
type: call
call: "slack.post-message"
with:
channel: "data-governance"
text: "Access Audit: {{dataset_path}} | Total accesses: {{get-access-logs.total}} | Unique users: {{get-access-logs.unique_users}} | Last access: {{get-access-logs.last_access}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: audit
path: "/audit/logs"
inputParameters:
- name: resourcePath
in: query
operations:
- name: get-audit-logs
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves data expectation check results for a Foundry dataset, returning pass/fail status, checked expectations count, and failed expectation details.
naftiko: "0.5"
info:
label: "Foundry Dataset Expectation Check Lookup"
description: "Retrieves data expectation check results for a Foundry dataset, returning pass/fail status, checked expectations count, and failed expectation details."
tags:
- data-analytics
- foundry
- data-quality
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: get-expectation-results
description: "Look up data expectation check results for a dataset. Returns pass/fail and failed expectations."
inputParameters:
- name: dataset_rid
in: body
type: string
description: "The Foundry dataset resource identifier."
call: "foundry.get-expectations"
with:
dataset_rid: "{{dataset_rid}}"
outputParameters:
- name: overall_status
type: string
mapping: "$.overallStatus"
- name: total_checks
type: number
mapping: "$.totalChecks"
- name: failed_checks
type: number
mapping: "$.failedChecks"
- name: failures
type: array
mapping: "$.failures"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: expectations
path: "/datasets/{{dataset_rid}}/expectations/results"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: get-expectations
method: GET
Retrieves metadata for a Palantir Foundry dataset by path, returning schema, row count, and last modified timestamp.
naftiko: "0.5"
info:
label: "Foundry Dataset Lookup"
description: "Retrieves metadata for a Palantir Foundry dataset by path, returning schema, row count, and last modified timestamp."
tags:
- data-platform
- foundry
- palantir
- lookup
capability:
exposes:
- type: mcp
namespace: foundry-data
port: 8080
tools:
- name: get-dataset-metadata
description: "Given a Foundry dataset path, return its schema, row count, and last modified time."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset resource path."
call: "foundry.get-dataset"
with:
datasetPath: "{{dataset_path}}"
outputParameters:
- name: rid
type: string
mapping: "$.rid"
- name: row_count
type: string
mapping: "$.stats.rowCount"
- name: last_modified
type: string
mapping: "$.lastModified"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{datasetPath}}"
inputParameters:
- name: datasetPath
in: path
operations:
- name: get-dataset
method: GET
Audits dataset quality in Foundry, creates Jira tickets for issues, and notifies data stewards via Slack.
naftiko: "0.5"
info:
label: "Foundry Dataset Quality Audit Orchestrator"
description: "Audits dataset quality in Foundry, creates Jira tickets for issues, and notifies data stewards via Slack."
tags:
- data-platform
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: foundry-dataset-quality-a
port: 8080
tools:
- name: foundry-dataset-quality-audit
description: "Audits dataset quality in Foundry."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry Dataset Quality Audit"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Dataset Quality Audit processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the current row count and size in bytes for a Foundry dataset, useful for monitoring data pipeline output volumes.
naftiko: "0.5"
info:
label: "Foundry Dataset Row Count Lookup"
description: "Returns the current row count and size in bytes for a Foundry dataset, useful for monitoring data pipeline output volumes."
tags:
- data-analytics
- foundry
- monitoring
capability:
exposes:
- type: mcp
namespace: foundry-data
port: 8080
tools:
- name: get-dataset-row-count
description: "Look up the row count and size of a Foundry dataset by resource identifier."
inputParameters:
- name: dataset_rid
in: body
type: string
description: "The Foundry dataset resource identifier."
call: "foundry.get-dataset-stats"
with:
dataset_rid: "{{dataset_rid}}"
outputParameters:
- name: row_count
type: number
mapping: "$.rowCount"
- name: size_bytes
type: number
mapping: "$.sizeBytes"
- name: last_updated
type: string
mapping: "$.lastTransaction.timestamp"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{dataset_rid}}/stats"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: get-dataset-stats
method: GET
Detects schema changes in Foundry datasets, creates a Jira ticket for review, and notifies downstream consumers via Slack.
naftiko: "0.5"
info:
label: "Foundry Dataset Schema Change Detector"
description: "Detects schema changes in Foundry datasets, creates a Jira ticket for review, and notifies downstream consumers via Slack."
tags:
- data-platform
- foundry
- palantir
- data-governance
- jira
- slack
capability:
exposes:
- type: mcp
namespace: schema-change
port: 8080
tools:
- name: detect-schema-changes
description: "Given a dataset path, compare current schema to previous version and alert on changes."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path."
steps:
- name: get-schema
type: call
call: "foundry.get-schema"
with:
datasetPath: "{{dataset_path}}"
- name: create-review
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Task"
summary: "Schema change detected: {{dataset_path}}"
description: "Columns added: {{get-schema.added_columns}}\nColumns removed: {{get-schema.removed_columns}}\nType changes: {{get-schema.type_changes}}"
- name: notify-consumers
type: call
call: "slack.post-message"
with:
channel: "data-platform"
text: "Schema change: {{dataset_path}} | Added: {{get-schema.added_columns}} | Removed: {{get-schema.removed_columns}} | Jira: {{create-review.key}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: schemas
path: "/datasets/{{datasetPath}}/schema"
inputParameters:
- name: datasetPath
in: path
operations:
- name: get-schema
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Runs DR tests for Foundry deployments, validates recovery metrics, and publishes results to Confluence.
naftiko: "0.5"
info:
label: "Foundry Disaster Recovery Test Orchestrator"
description: "Runs DR tests for Foundry deployments, validates recovery metrics, and publishes results to Confluence."
tags:
- infrastructure
- foundry
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: foundry-disaster-recovery
port: 8080
tools:
- name: foundry-disaster-recovery-test
description: "Runs DR tests for Foundry deployments."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Foundry Disaster Recovery Test for {{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Foundry Disaster Recovery Test"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Identifies unused Foundry resources in a project by checking last access dates, archives stale datasets, revokes unused user permissions, and generates a cleanup report in Confluence.
naftiko: "0.5"
info:
label: "Foundry Environment Resource Cleanup Orchestrator"
description: "Identifies unused Foundry resources in a project by checking last access dates, archives stale datasets, revokes unused user permissions, and generates a cleanup report in Confluence."
tags:
- data-analytics
- foundry
- governance
- confluence
capability:
exposes:
- type: mcp
namespace: foundry-governance
port: 8080
tools:
- name: cleanup-stale-resources
description: "Orchestrate resource cleanup: identify stale resources, archive datasets, revoke permissions, and report."
inputParameters:
- name: project_rid
in: body
type: string
description: "The Foundry project resource identifier."
- name: stale_days_threshold
in: body
type: number
description: "Days of inactivity before a resource is considered stale."
steps:
- name: identify-stale
type: call
call: "foundry.find-stale-resources"
with:
project_rid: "{{project_rid}}"
days: "{{stale_days_threshold}}"
- name: archive-datasets
type: call
call: "foundry.archive-resources"
with:
resource_rids: "{{identify-stale.stale_dataset_rids}}"
- name: revoke-permissions
type: call
call: "foundry.revoke-unused-permissions"
with:
project_rid: "{{project_rid}}"
user_rids: "{{identify-stale.inactive_user_rids}}"
- name: generate-report
type: call
call: "confluence.create-page"
with:
space: "GOVERNANCE"
title: "Resource Cleanup Report - {{project_rid}}"
body: "Archived {{archive-datasets.count}} datasets. Revoked {{revoke-permissions.count}} permissions. Total freed: {{archive-datasets.freed_gb}} GB."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: resources
path: "/projects/{{project_rid}}/resources"
inputParameters:
- name: project_rid
in: path
operations:
- name: find-stale-resources
method: GET
- name: archive-resources
method: POST
- name: revoke-unused-permissions
method: DELETE
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Validates a Foundry dataset against governance policies including PII classification and retention rules, posts compliance findings.
naftiko: "0.5"
info:
label: "Foundry Governance Policy Check"
description: "Validates a Foundry dataset against governance policies including PII classification and retention rules, posts compliance findings."
tags:
- data-platform
- foundry
- palantir
- data-governance
- slack
capability:
exposes:
- type: mcp
namespace: governance-check
port: 8080
tools:
- name: check-governance-policy
description: "Given a dataset path, validate against governance policies and post findings."
inputParameters:
- name: dataset_path
in: body
type: string
description: "Foundry dataset path."
steps:
- name: get-classifications
type: call
call: "foundry.get-markings"
with:
datasetPath: "{{dataset_path}}"
- name: post-findings
type: call
call: "slack.post-message"
with:
channel: "data-governance"
text: "Governance Check: {{dataset_path}} | Classifications: {{get-classifications.markings}} | PII detected: {{get-classifications.pii_columns}} | Retention: {{get-classifications.retention_policy}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: markings
path: "/datasets/{{datasetPath}}/markings"
inputParameters:
- name: datasetPath
in: path
operations:
- name: get-markings
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Triggers a historical data backfill for a Foundry incremental pipeline by setting the backfill window, submitting the build, monitoring progress, and verifying output row counts.
naftiko: "0.5"
info:
label: "Foundry Incremental Pipeline Backfill Orchestrator"
description: "Triggers a historical data backfill for a Foundry incremental pipeline by setting the backfill window, submitting the build, monitoring progress, and verifying output row counts."
tags:
- data-analytics
- foundry
- data-pipeline
capability:
exposes:
- type: mcp
namespace: pipeline-backfill
port: 8080
tools:
- name: run-pipeline-backfill
description: "Orchestrate an incremental pipeline backfill: set window, submit build, monitor, and verify."
inputParameters:
- name: pipeline_rid
in: body
type: string
description: "The Foundry pipeline resource identifier."
- name: start_date
in: body
type: string
description: "Backfill start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Backfill end date in YYYY-MM-DD format."
steps:
- name: configure-backfill
type: call
call: "foundry.set-backfill-window"
with:
pipeline_rid: "{{pipeline_rid}}"
start: "{{start_date}}"
end: "{{end_date}}"
- name: submit-build
type: call
call: "foundry.trigger-build"
with:
pipeline_rid: "{{pipeline_rid}}"
mode: "backfill"
- name: monitor-build
type: call
call: "foundry.get-build-status"
with:
build_rid: "{{submit-build.build_rid}}"
- name: verify-output
type: call
call: "foundry.get-dataset-stats"
with:
dataset_rid: "{{configure-backfill.output_dataset_rid}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: pipelines
path: "/pipelines/{{pipeline_rid}}"
inputParameters:
- name: pipeline_rid
in: path
operations:
- name: set-backfill-window
method: PUT
- name: trigger-build
method: POST
- name: builds
path: "/builds/{{build_rid}}"
inputParameters:
- name: build_rid
in: path
operations:
- name: get-build-status
method: GET
- name: datasets
path: "/datasets/{{dataset_rid}}/stats"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: get-dataset-stats
method: GET
Monitors Foundry compute utilization via Datadog, triggers scaling, and notifies platform team via Slack.
naftiko: "0.5"
info:
label: "Foundry Infrastructure Scaling Orchestrator"
description: "Monitors Foundry compute utilization via Datadog, triggers scaling, and notifies platform team via Slack."
tags:
- infrastructure
- foundry
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: foundry-infrastructure-sc
port: 8080
tools:
- name: foundry-infrastructure-scaling
description: "Monitors Foundry compute utilization via Datadog."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: check-metrics
type: call
call: "datadog.get-monitors"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Infrastructure Scaling processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor"
operations:
- name: get-monitors
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the current job queue depth for a Foundry compute cluster.
naftiko: "0.5"
info:
label: "Foundry Job Queue Depth Lookup"
description: "Retrieves the current job queue depth for a Foundry compute cluster."
tags:
- infrastructure
- foundry
capability:
exposes:
- type: mcp
namespace: job-queue
port: 8080
tools:
- name: get-queue-depth
description: "Look up Foundry job queue depth."
inputParameters:
- name: cluster_id
in: body
type: string
description: "Foundry compute cluster ID."
call: "foundry.get-queue-depth"
with:
cluster_id: "{{cluster_id}}"
outputParameters:
- name: pending_jobs
type: number
mapping: "$.queue.pending"
- name: running_jobs
type: number
mapping: "$.queue.running"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: compute
path: "/compute/clusters/{{cluster_id}}/queue"
inputParameters:
- name: cluster_id
in: path
operations:
- name: get-queue-depth
method: GET
Retrieves details about a Foundry Marketplace application including version, author, and installation status.
naftiko: "0.5"
info:
label: "Foundry Marketplace App Lookup"
description: "Retrieves details about a Foundry Marketplace application including version, author, and installation status."
tags:
- data-platform
- foundry
- palantir
- marketplace
capability:
exposes:
- type: mcp
namespace: foundry-marketplace
port: 8080
tools:
- name: get-marketplace-app
description: "Given an app name, return its version, author, and installation status."
inputParameters:
- name: app_name
in: body
type: string
description: "Marketplace application name."
call: "foundry.get-app"
with:
name: "{{app_name}}"
outputParameters:
- name: version
type: string
mapping: "$.version"
- name: author
type: string
mapping: "$.author"
- name: installed
type: string
mapping: "$.installationStatus"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: apps
path: "/marketplace/apps"
inputParameters:
- name: name
in: query
operations:
- name: get-app
method: GET
Reviews marketplace app submissions, validates security, and creates Jira approval tickets.
naftiko: "0.5"
info:
label: "Foundry Marketplace App Review Orchestrator"
description: "Reviews marketplace app submissions, validates security, and creates Jira approval tickets."
tags:
- data-platform
- foundry
- jira
capability:
exposes:
- type: mcp
namespace: foundry-marketplace-app-r
port: 8080
tools:
- name: foundry-marketplace-app-review
description: "Reviews marketplace app submissions."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry Marketplace App Review"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves metadata for a Foundry media set, returning file count, total size, and supported media types for document and image storage.
naftiko: "0.5"
info:
label: "Foundry Media Set Lookup"
description: "Retrieves metadata for a Foundry media set, returning file count, total size, and supported media types for document and image storage."
tags:
- data-analytics
- foundry
- media
capability:
exposes:
- type: mcp
namespace: foundry-media
port: 8080
tools:
- name: get-media-set-info
description: "Look up a Foundry media set by RID. Returns file count, total size, and media types."
inputParameters:
- name: media_set_rid
in: body
type: string
description: "The Foundry media set resource identifier."
call: "foundry.get-media-set"
with:
rid: "{{media_set_rid}}"
outputParameters:
- name: file_count
type: number
mapping: "$.fileCount"
- name: total_size_bytes
type: number
mapping: "$.totalSizeBytes"
- name: media_types
type: array
mapping: "$.supportedMediaTypes"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: media-sets
path: "/mediaSets/{{rid}}"
inputParameters:
- name: rid
in: path
operations:
- name: get-media-set
method: GET
Retrieves the deployment status of a machine learning model in Palantir Foundry, returning version, health, and inference endpoint.
naftiko: "0.5"
info:
label: "Foundry Model Deployment Status Lookup"
description: "Retrieves the deployment status of a machine learning model in Palantir Foundry, returning version, health, and inference endpoint."
tags:
- data-platform
- foundry
- palantir
- machine-learning
capability:
exposes:
- type: mcp
namespace: foundry-ml
port: 8080
tools:
- name: get-model-status
description: "Given a model RID, return deployment status, version, and health metrics."
inputParameters:
- name: model_rid
in: body
type: string
description: "Foundry model RID."
call: "foundry.get-model"
with:
modelRid: "{{model_rid}}"
outputParameters:
- name: version
type: string
mapping: "$.version"
- name: status
type: string
mapping: "$.deploymentStatus"
- name: endpoint
type: string
mapping: "$.inferenceEndpoint"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: models
path: "/models/{{modelRid}}"
inputParameters:
- name: modelRid
in: path
operations:
- name: get-model
method: GET
Monitors ML model prediction drift in Foundry, triggers retraining when drift exceeds threshold, and alerts the ML team.
naftiko: "0.5"
info:
label: "Foundry Model Drift Detector"
description: "Monitors ML model prediction drift in Foundry, triggers retraining when drift exceeds threshold, and alerts the ML team."
tags:
- data-platform
- foundry
- palantir
- machine-learning
- slack
capability:
exposes:
- type: mcp
namespace: model-drift
port: 8080
tools:
- name: detect-model-drift
description: "Given a model RID, check prediction drift metrics and alert if threshold exceeded."
inputParameters:
- name: model_rid
in: body
type: string
description: "Foundry model RID."
- name: drift_threshold
in: body
type: string
description: "Maximum acceptable drift score."
steps:
- name: get-drift-metrics
type: call
call: "foundry.get-model-metrics"
with:
modelRid: "{{model_rid}}"
- name: alert-team
type: call
call: "slack.post-message"
with:
channel: "ml-ops"
text: "Model Drift Alert: {{model_rid}} | Drift score: {{get-drift-metrics.drift_score}} | Threshold: {{drift_threshold}} | Retraining recommended."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: metrics
path: "/models/{{modelRid}}/metrics"
inputParameters:
- name: modelRid
in: path
operations:
- name: get-model-metrics
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Runs batch inference on a trained Foundry ML model by pulling input features from a dataset, invoking the model endpoint, storing predictions back in Foundry, and logging metrics to Datadog.
naftiko: "0.5"
info:
label: "Foundry Model Inference Orchestrator"
description: "Runs batch inference on a trained Foundry ML model by pulling input features from a dataset, invoking the model endpoint, storing predictions back in Foundry, and logging metrics to Datadog."
tags:
- data-analytics
- foundry
- machine-learning
- datadog
capability:
exposes:
- type: mcp
namespace: ml-inference
port: 8080
tools:
- name: run-batch-inference
description: "Orchestrate batch inference: pull features, invoke model, store predictions, and log metrics."
inputParameters:
- name: model_rid
in: body
type: string
description: "The Foundry model resource identifier."
- name: input_dataset_rid
in: body
type: string
description: "The input features dataset RID."
- name: output_dataset_rid
in: body
type: string
description: "The predictions output dataset RID."
steps:
- name: get-input-data
type: call
call: "foundry.read-dataset"
with:
dataset_rid: "{{input_dataset_rid}}"
- name: invoke-model
type: call
call: "foundry.invoke-model"
with:
model_rid: "{{model_rid}}"
input: "{{get-input-data.data}}"
- name: store-predictions
type: call
call: "foundry.write-dataset"
with:
dataset_rid: "{{output_dataset_rid}}"
data: "{{invoke-model.predictions}}"
- name: log-metrics
type: call
call: "datadog.submit-metrics"
with:
metric_name: "foundry.model.inference.records"
value: "{{invoke-model.prediction_count}}"
tags:
- "model:{{model_rid}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{dataset_rid}}/records"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: read-dataset
method: GET
- name: write-dataset
method: POST
- name: models
path: "/models/{{model_rid}}/invoke"
inputParameters:
- name: model_rid
in: path
operations:
- name: invoke-model
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: metrics
path: "/series"
operations:
- name: submit-metrics
method: POST
Triggers model retraining in Foundry, validates performance, and updates deployment via Slack notification.
naftiko: "0.5"
info:
label: "Foundry Model Retraining Orchestrator"
description: "Triggers model retraining in Foundry, validates performance, and updates deployment via Slack notification."
tags:
- ml
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: foundry-model-retraining
port: 8080
tools:
- name: foundry-model-retraining
description: "Triggers model retraining in Foundry."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Model Retraining processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves group details from Foundry Multipass identity service, returning group name, member count, and group description.
naftiko: "0.5"
info:
label: "Foundry Multipass Group Lookup"
description: "Retrieves group details from Foundry Multipass identity service, returning group name, member count, and group description."
tags:
- security
- foundry
- identity
capability:
exposes:
- type: mcp
namespace: identity-mgmt
port: 8080
tools:
- name: get-multipass-group
description: "Look up a Multipass group by ID. Returns group details and member count."
inputParameters:
- name: group_id
in: body
type: string
description: "The Multipass group identifier."
call: "foundry.get-group"
with:
group_id: "{{group_id}}"
outputParameters:
- name: group_name
type: string
mapping: "$.name"
- name: member_count
type: number
mapping: "$.memberCount"
- name: description
type: string
mapping: "$.description"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/multipass/api"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: groups
path: "/groups/{{group_id}}"
inputParameters:
- name: group_id
in: path
operations:
- name: get-group
method: GET
Retrieves configuration for a Foundry notification channel.
naftiko: "0.5"
info:
label: "Foundry Notification Channel Lookup"
description: "Retrieves configuration for a Foundry notification channel."
tags:
- operations
- foundry
capability:
exposes:
- type: mcp
namespace: notifications
port: 8080
tools:
- name: get-channel-config
description: "Look up Foundry notification channel config."
inputParameters:
- name: channel_rid
in: body
type: string
description: "Notification channel RID."
call: "foundry.get-channel"
with:
rid: "{{channel_rid}}"
outputParameters:
- name: name
type: string
mapping: "$.channel.name"
- name: type
type: string
mapping: "$.channel.type"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: notifications
path: "/notifications/channels/{{rid}}"
inputParameters:
- name: rid
in: path
operations:
- name: get-channel
method: GET
Performs aggregation queries against a Foundry Ontology object set, returning count, sum, average, and groupBy results for specified properties.
naftiko: "0.5"
info:
label: "Foundry Object Set Aggregation Lookup"
description: "Performs aggregation queries against a Foundry Ontology object set, returning count, sum, average, and groupBy results for specified properties."
tags:
- data-analytics
- foundry
- ontology
capability:
exposes:
- type: mcp
namespace: ontology-analytics
port: 8080
tools:
- name: aggregate-object-set
description: "Run aggregation on an Ontology object set. Returns count, sum, avg for specified properties."
inputParameters:
- name: object_type
in: body
type: string
description: "The Ontology object type API name."
- name: aggregation
in: body
type: string
description: "Aggregation type: count, sum, avg, min, max."
- name: property
in: body
type: string
description: "The property to aggregate on."
call: "foundry.aggregate-objects"
with:
object_type: "{{object_type}}"
aggregation: "{{aggregation}}"
property: "{{property}}"
outputParameters:
- name: result
type: number
mapping: "$.aggregationResult"
- name: object_count
type: number
mapping: "$.totalObjects"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: ontology
path: "/ontologies/default/objectTypes/{{object_type}}/objects/aggregate"
inputParameters:
- name: object_type
in: path
operations:
- name: aggregate-objects
method: POST
Retrieves the schema definition of an Ontology object type, returning property names, types, and link definitions.
naftiko: "0.5"
info:
label: "Foundry Object Type Definition Lookup"
description: "Retrieves the schema definition of an Ontology object type, returning property names, types, and link definitions."
tags:
- data-analytics
- foundry
- ontology
capability:
exposes:
- type: mcp
namespace: ontology-mgmt
port: 8080
tools:
- name: get-object-type-definition
description: "Look up an Ontology object type schema. Returns properties and links."
inputParameters:
- name: object_type_api_name
in: body
type: string
description: "The API name of the Ontology object type."
call: "foundry.get-object-type"
with:
api_name: "{{object_type_api_name}}"
outputParameters:
- name: display_name
type: string
mapping: "$.displayName"
- name: properties
type: array
mapping: "$.properties"
- name: links
type: array
mapping: "$.links"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: ontology
path: "/ontologies/default/objectTypes/{{api_name}}"
inputParameters:
- name: api_name
in: path
operations:
- name: get-object-type
method: GET
Executes an ontology action in Palantir Foundry, validates the result, and posts confirmation to Slack.
naftiko: "0.5"
info:
label: "Foundry Ontology Action Executor"
description: "Executes an ontology action in Palantir Foundry, validates the result, and posts confirmation to Slack."
tags:
- data-platform
- foundry
- palantir
- ontology
- slack
capability:
exposes:
- type: mcp
namespace: ontology-action
port: 8080
tools:
- name: execute-ontology-action
description: "Given an action type and parameters, execute the Foundry ontology action and confirm via Slack."
inputParameters:
- name: action_type
in: body
type: string
description: "Foundry ontology action type."
- name: object_type
in: body
type: string
description: "Target object type."
- name: primary_key
in: body
type: string
description: "Primary key of the target object."
steps:
- name: execute-action
type: call
call: "foundry.apply-action"
with:
actionType: "{{action_type}}"
objectType: "{{object_type}}"
primaryKey: "{{primary_key}}"
- name: confirm
type: call
call: "slack.post-message"
with:
channel: "data-ops"
text: "Ontology action executed: {{action_type}} on {{object_type}}/{{primary_key}} | Status: {{execute-action.status}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: actions
path: "/ontologies/default/actions/{{actionType}}/apply"
inputParameters:
- name: actionType
in: path
operations:
- name: apply-action
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves recent events from a Foundry Ontology event stream, returning event type, timestamp, affected object IDs, and payload summary.
naftiko: "0.5"
info:
label: "Foundry Ontology Event Stream Lookup"
description: "Retrieves recent events from a Foundry Ontology event stream, returning event type, timestamp, affected object IDs, and payload summary."
tags:
- data-analytics
- foundry
- ontology
- events
capability:
exposes:
- type: mcp
namespace: ontology-events
port: 8080
tools:
- name: get-event-stream
description: "Look up recent events from an Ontology event stream. Returns event details and payloads."
inputParameters:
- name: stream_rid
in: body
type: string
description: "The event stream resource identifier."
- name: limit
in: body
type: number
description: "Number of recent events to retrieve."
call: "foundry.get-events"
with:
stream_rid: "{{stream_rid}}"
limit: "{{limit}}"
outputParameters:
- name: events
type: array
mapping: "$.data"
items:
- name: event_type
type: string
mapping: "$.eventType"
- name: timestamp
type: string
mapping: "$.timestamp"
- name: object_id
type: string
mapping: "$.objectId"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: events
path: "/ontologies/default/eventStreams/{{stream_rid}}/events"
inputParameters:
- name: stream_rid
in: path
operations:
- name: get-events
method: GET
Analyzes linked objects in the Foundry ontology for a given entity, generates a relationship summary, and posts to Slack.
naftiko: "0.5"
info:
label: "Foundry Ontology Link Analysis"
description: "Analyzes linked objects in the Foundry ontology for a given entity, generates a relationship summary, and posts to Slack."
tags:
- data-platform
- foundry
- palantir
- ontology
- slack
capability:
exposes:
- type: mcp
namespace: link-analysis
port: 8080
tools:
- name: analyze-links
description: "Given an object type and primary key, analyze linked objects and post a summary."
inputParameters:
- name: object_type
in: body
type: string
description: "Ontology object type."
- name: primary_key
in: body
type: string
description: "Primary key of the entity."
steps:
- name: get-links
type: call
call: "foundry.get-links"
with:
objectType: "{{object_type}}"
primaryKey: "{{primary_key}}"
- name: post-analysis
type: call
call: "slack.post-message"
with:
channel: "analytics"
text: "Link Analysis: {{object_type}}/{{primary_key}} | Total links: {{get-links.total}} | Link types: {{get-links.link_types}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: links
path: "/ontologies/default/objects/{{objectType}}/{{primaryKey}}/links"
inputParameters:
- name: objectType
in: path
- name: primaryKey
in: path
operations:
- name: get-links
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the object count for a Foundry ontology type.
naftiko: "0.5"
info:
label: "Foundry Ontology Object Count Lookup"
description: "Retrieves the object count for a Foundry ontology type."
tags:
- data-platform
- foundry
capability:
exposes:
- type: mcp
namespace: ontology-metrics
port: 8080
tools:
- name: get-object-count
description: "Look up ontology object count by type."
inputParameters:
- name: object_type
in: body
type: string
description: "Foundry ontology object type."
call: "foundry.get-ontology-count"
with:
type: "{{object_type}}"
outputParameters:
- name: count
type: number
mapping: "$.totalCount"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: ontology
path: "/ontologies/{{ontology_rid}}/objectTypes/{{type}}/objects"
inputParameters:
- name: type
in: path
operations:
- name: get-ontology-count
method: GET
Retrieves an ontology object from Palantir Foundry by type and primary key, returning properties and linked objects.
naftiko: "0.5"
info:
label: "Foundry Ontology Object Lookup"
description: "Retrieves an ontology object from Palantir Foundry by type and primary key, returning properties and linked objects."
tags:
- data-platform
- foundry
- palantir
- ontology
capability:
exposes:
- type: mcp
namespace: foundry-ontology
port: 8080
tools:
- name: get-ontology-object
description: "Given an object type and primary key, return the object's properties and linked object count."
inputParameters:
- name: object_type
in: body
type: string
description: "Foundry ontology object type."
- name: primary_key
in: body
type: string
description: "Primary key of the object."
call: "foundry.get-object"
with:
objectType: "{{object_type}}"
primaryKey: "{{primary_key}}"
outputParameters:
- name: rid
type: string
mapping: "$.rid"
- name: properties
type: string
mapping: "$.properties"
- name: link_count
type: string
mapping: "$.linkCount"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: objects
path: "/ontologies/default/objects/{{objectType}}/{{primaryKey}}"
inputParameters:
- name: objectType
in: path
- name: primaryKey
in: path
operations:
- name: get-object
method: GET
Migrates ontology schemas by validating changes, creating ServiceNow change requests, and notifying teams.
naftiko: "0.5"
info:
label: "Foundry Ontology Schema Migration Orchestrator"
description: "Migrates ontology schemas by validating changes, creating ServiceNow change requests, and notifying teams."
tags:
- data-platform
- foundry
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: foundry-ontology-schema-m
port: 8080
tools:
- name: foundry-ontology-schema-migration
description: "Migrates ontology schemas by validating changes."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Foundry Ontology Schema Migration for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Ontology Schema Migration processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Searches the Palantir Foundry ontology for objects matching a query, returning matching objects with properties.
naftiko: "0.5"
info:
label: "Foundry Ontology Search"
description: "Searches the Palantir Foundry ontology for objects matching a query, returning matching objects with properties."
tags:
- data-platform
- foundry
- palantir
- ontology
- lookup
capability:
exposes:
- type: mcp
namespace: ontology-search
port: 8080
tools:
- name: search-ontology
description: "Given an object type and search query, return matching ontology objects."
inputParameters:
- name: object_type
in: body
type: string
description: "Ontology object type."
- name: query
in: body
type: string
description: "Search query string."
call: "foundry.search-objects"
with:
objectType: "{{object_type}}"
q: "{{query}}"
outputParameters:
- name: total_count
type: string
mapping: "$.totalCount"
- name: first_result
type: string
mapping: "$.data[0].properties"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: objects
path: "/ontologies/default/objects/{{objectType}}/search"
inputParameters:
- name: objectType
in: path
- name: q
in: query
operations:
- name: search-objects
method: GET
Exports Ontology object data from Foundry, transforms it for analytics consumption, loads it into Snowflake, and verifies row counts match between source and destination.
naftiko: "0.5"
info:
label: "Foundry Ontology Sync to Snowflake Orchestrator"
description: "Exports Ontology object data from Foundry, transforms it for analytics consumption, loads it into Snowflake, and verifies row counts match between source and destination."
tags:
- data-analytics
- foundry
- snowflake
- data-pipeline
capability:
exposes:
- type: mcp
namespace: data-sync
port: 8080
tools:
- name: sync-ontology-to-snowflake
description: "Orchestrate Ontology-to-Snowflake data sync: export objects, transform, load, and verify."
inputParameters:
- name: object_type
in: body
type: string
description: "The Ontology object type API name."
- name: target_table
in: body
type: string
description: "The Snowflake target table name."
steps:
- name: export-objects
type: call
call: "foundry.export-ontology-objects"
with:
object_type: "{{object_type}}"
- name: load-to-snowflake
type: call
call: "snowflake.load-data"
with:
table: "{{target_table}}"
data: "{{export-objects.data}}"
- name: verify-counts
type: call
call: "snowflake.query-row-count"
with:
table: "{{target_table}}"
- name: log-sync-result
type: call
call: "foundry.log-sync-event"
with:
object_type: "{{object_type}}"
source_count: "{{export-objects.row_count}}"
target_count: "{{verify-counts.row_count}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: ontology-export
path: "/ontologies/default/objectTypes/{{object_type}}/objects"
inputParameters:
- name: object_type
in: path
operations:
- name: export-ontology-objects
method: GET
- name: sync-logs
path: "/datasets/sync-logs/records"
operations:
- name: log-sync-event
method: POST
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: load-data
method: POST
- name: query-row-count
method: POST
When a Foundry pipeline build fails, retrieves the build error details, creates a Jira ticket for the data engineering team, and sends a Slack alert with the failure summary.
naftiko: "0.5"
info:
label: "Foundry Pipeline Build to Jira Orchestrator"
description: "When a Foundry pipeline build fails, retrieves the build error details, creates a Jira ticket for the data engineering team, and sends a Slack alert with the failure summary."
tags:
- data-analytics
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-ops
port: 8080
tools:
- name: handle-build-failure
description: "Orchestrate pipeline build failure response: get error details, create Jira ticket, and send Slack alert."
inputParameters:
- name: build_rid
in: body
type: string
description: "The Foundry pipeline build resource identifier."
steps:
- name: get-build-details
type: call
call: "foundry.get-build"
with:
build_rid: "{{build_rid}}"
- name: create-jira-ticket
type: call
call: "jira.create-issue"
with:
project: "DATA"
issue_type: "Bug"
summary: "Pipeline build failure: {{get-build-details.pipeline_name}}"
description: "Error: {{get-build-details.error_message}}. Build: {{build_rid}}"
- name: send-slack-alert
type: call
call: "slack.post-message"
with:
channel: "data-eng-alerts"
text: "Pipeline build failed: {{get-build-details.pipeline_name}}. Jira: {{create-jira-ticket.key}}. Error: {{get-build-details.error_message}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: builds
path: "/builds/{{build_rid}}"
inputParameters:
- name: build_rid
in: path
operations:
- name: get-build
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Remediates pipeline failures by analyzing logs, creating Jira tickets, and notifying engineers via Slack.
naftiko: "0.5"
info:
label: "Foundry Pipeline Failure Remediation Orchestrator"
description: "Remediates pipeline failures by analyzing logs, creating Jira tickets, and notifying engineers via Slack."
tags:
- data-platform
- foundry
- jira
- slack
capability:
exposes:
- type: mcp
namespace: foundry-pipeline-failure-
port: 8080
tools:
- name: foundry-pipeline-failure-remediation
description: "Remediates pipeline failures by analyzing logs."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry Pipeline Failure Remediation"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Pipeline Failure Remediation processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a Foundry pipeline build fails, creates a Jira bug ticket with build context and notifies the data engineering team via Slack.
naftiko: "0.5"
info:
label: "Foundry Pipeline Failure to Jira"
description: "When a Foundry pipeline build fails, creates a Jira bug ticket with build context and notifies the data engineering team via Slack."
tags:
- data-platform
- foundry
- palantir
- jira
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-failure
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a failed pipeline RID, fetch build details, create a Jira ticket, and alert the team."
inputParameters:
- name: pipeline_rid
in: body
type: string
description: "Foundry pipeline RID."
- name: build_id
in: body
type: string
description: "Failed build ID."
steps:
- name: get-build
type: call
call: "foundry.get-build"
with:
pipelineRid: "{{pipeline_rid}}"
buildId: "{{build_id}}"
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Pipeline failure: {{get-build.pipeline_name}}"
description: "Build: {{build_id}}\nStatus: {{get-build.status}}\nError: {{get-build.error_message}}\nDuration: {{get-build.duration_seconds}}s"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "data-engineering"
text: "Pipeline failure: {{get-build.pipeline_name}} | Build: {{build_id}} | Jira: {{create-jira.key}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: builds
path: "/builds/{{pipelineRid}}/{{buildId}}"
inputParameters:
- name: pipelineRid
in: path
- name: buildId
in: path
operations:
- name: get-build
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors data pipeline SLA compliance by checking Foundry transform completion times, comparing against defined thresholds, creating ServiceNow tickets for breaches, and posting a daily summary to Slack.
naftiko: "0.5"
info:
label: "Foundry Pipeline SLA Monitoring Orchestrator"
description: "Monitors data pipeline SLA compliance by checking Foundry transform completion times, comparing against defined thresholds, creating ServiceNow tickets for breaches, and posting a daily summary to Slack."
tags:
- data-analytics
- foundry
- servicenow
- slack
- monitoring
capability:
exposes:
- type: mcp
namespace: pipeline-sla
port: 8080
tools:
- name: monitor-pipeline-slas
description: "Orchestrate pipeline SLA monitoring: check completion times, flag breaches, create tickets, and post summary."
inputParameters:
- name: project_rid
in: body
type: string
description: "The Foundry project resource identifier."
steps:
- name: check-pipeline-times
type: call
call: "foundry.get-pipeline-completion-times"
with:
project_rid: "{{project_rid}}"
- name: identify-breaches
type: call
call: "foundry.check-sla-thresholds"
with:
completion_data: "{{check-pipeline-times.pipelines}}"
- name: create-breach-tickets
type: call
call: "servicenow.create-incident"
with:
short_description: "Pipeline SLA breach in project {{project_rid}}"
description: "{{identify-breaches.breach_count}} pipelines breached SLA. Worst: {{identify-breaches.worst_pipeline}} ({{identify-breaches.worst_delay_minutes}} min late)."
category: "data_pipeline"
- name: post-summary
type: call
call: "slack.post-message"
with:
channel: "data-ops"
text: "Pipeline SLA report: {{check-pipeline-times.total_pipelines}} monitored, {{identify-breaches.breach_count}} breaches. On-time rate: {{identify-breaches.on_time_pct}}%."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: pipelines
path: "/projects/{{project_rid}}/pipelines/completionTimes"
inputParameters:
- name: project_rid
in: path
operations:
- name: get-pipeline-completion-times
method: GET
- name: sla
path: "/pipelines/sla/check"
operations:
- name: check-sla-thresholds
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the status of a Foundry data pipeline build by RID, returning build state, duration, and output datasets.
naftiko: "0.5"
info:
label: "Foundry Pipeline Status Lookup"
description: "Retrieves the status of a Foundry data pipeline build by RID, returning build state, duration, and output datasets."
tags:
- data-platform
- foundry
- palantir
- pipeline
capability:
exposes:
- type: mcp
namespace: foundry-pipeline
port: 8080
tools:
- name: get-pipeline-status
description: "Given a pipeline RID, return the latest build status, duration, and output dataset count."
inputParameters:
- name: pipeline_rid
in: body
type: string
description: "Foundry pipeline resource identifier."
call: "foundry.get-build"
with:
pipelineRid: "{{pipeline_rid}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: duration_seconds
type: string
mapping: "$.durationSeconds"
- name: output_count
type: string
mapping: "$.outputDatasets.length"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: builds
path: "/builds/{{pipelineRid}}/latest"
inputParameters:
- name: pipelineRid
in: path
operations:
- name: get-build
method: GET
Retrieves a Foundry project by name, returning owner, description, and resource count.
naftiko: "0.5"
info:
label: "Foundry Project Lookup"
description: "Retrieves a Foundry project by name, returning owner, description, and resource count."
tags:
- data-platform
- foundry
- palantir
- lookup
capability:
exposes:
- type: mcp
namespace: foundry-project
port: 8080
tools:
- name: get-project
description: "Given a project name, return its owner, description, and number of resources."
inputParameters:
- name: project_name
in: body
type: string
description: "Foundry project name."
call: "foundry.get-project"
with:
name: "{{project_name}}"
outputParameters:
- name: rid
type: string
mapping: "$.rid"
- name: owner
type: string
mapping: "$.owner"
- name: resource_count
type: string
mapping: "$.resourceCount"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: projects
path: "/projects"
inputParameters:
- name: name
in: query
operations:
- name: get-project
method: GET
Triggers a refresh of underlying datasets for a Palantir Quiver dashboard and posts completion status to Slack.
naftiko: "0.5"
info:
label: "Foundry Quiver Dashboard Refresh"
description: "Triggers a refresh of underlying datasets for a Palantir Quiver dashboard and posts completion status to Slack."
tags:
- data-platform
- foundry
- palantir
- analytics
- slack
capability:
exposes:
- type: mcp
namespace: quiver-refresh
port: 8080
tools:
- name: refresh-dashboard
description: "Given a dashboard RID, trigger a refresh of all underlying datasets and notify upon completion."
inputParameters:
- name: dashboard_rid
in: body
type: string
description: "Quiver dashboard RID."
steps:
- name: trigger-refresh
type: call
call: "foundry.refresh-dashboard"
with:
dashboardRid: "{{dashboard_rid}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "analytics"
text: "Dashboard refresh triggered: {{dashboard_rid}} | Status: {{trigger-refresh.status}} | Datasets: {{trigger-refresh.dataset_count}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: dashboards
path: "/quiver/dashboards/{{dashboardRid}}/refresh"
inputParameters:
- name: dashboardRid
in: path
operations:
- name: refresh-dashboard
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves performance metrics for individual widgets in a Quiver dashboard, returning render time, query count, and data freshness for each widget.
naftiko: "0.5"
info:
label: "Foundry Quiver Widget Performance Lookup"
description: "Retrieves performance metrics for individual widgets in a Quiver dashboard, returning render time, query count, and data freshness for each widget."
tags:
- data-analytics
- foundry
- quiver
- performance
capability:
exposes:
- type: mcp
namespace: quiver-monitoring
port: 8080
tools:
- name: get-widget-performance
description: "Look up Quiver widget performance by dashboard RID. Returns render times and query counts per widget."
inputParameters:
- name: dashboard_rid
in: body
type: string
description: "The Quiver dashboard resource identifier."
call: "foundry.get-quiver-widget-metrics"
with:
rid: "{{dashboard_rid}}"
outputParameters:
- name: widgets
type: array
mapping: "$.widgets"
items:
- name: widget_name
type: string
mapping: "$.name"
- name: avg_render_ms
type: number
mapping: "$.avgRenderMs"
- name: query_count
type: number
mapping: "$.queryCount"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: quiver
path: "/quiver/dashboards/{{rid}}/widgets/metrics"
inputParameters:
- name: rid
in: path
operations:
- name: get-quiver-widget-metrics
method: GET
Generates a Foundry compute and storage utilization report, identifies expensive pipelines, and posts to Slack for FinOps review.
naftiko: "0.5"
info:
label: "Foundry Resource Utilization Report"
description: "Generates a Foundry compute and storage utilization report, identifies expensive pipelines, and posts to Slack for FinOps review."
tags:
- data-platform
- foundry
- palantir
- finops
- slack
capability:
exposes:
- type: mcp
namespace: resource-util
port: 8080
tools:
- name: generate-utilization-report
description: "Aggregate compute and storage usage from Foundry and post a FinOps report."
inputParameters:
- name: period
in: body
type: string
description: "Reporting period, e.g. last-7d, last-30d."
steps:
- name: get-usage
type: call
call: "foundry.get-usage"
with:
period: "{{period}}"
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "data-finops"
text: "Foundry Utilization ({{period}}): Compute hours: {{get-usage.compute_hours}} | Storage GB: {{get-usage.storage_gb}} | Top pipeline: {{get-usage.top_pipeline}} ({{get-usage.top_cost}})"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: usage
path: "/usage/summary"
inputParameters:
- name: period
in: query
operations:
- name: get-usage
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves schedule details for a Foundry pipeline, returning cron expression, next run time, and enabled status.
naftiko: "0.5"
info:
label: "Foundry Schedule Lookup"
description: "Retrieves schedule details for a Foundry pipeline, returning cron expression, next run time, and enabled status."
tags:
- data-platform
- foundry
- palantir
- scheduling
capability:
exposes:
- type: mcp
namespace: foundry-schedule
port: 8080
tools:
- name: get-schedule
description: "Given a schedule RID, return the cron expression, next run time, and enabled status."
inputParameters:
- name: schedule_rid
in: body
type: string
description: "Foundry schedule RID."
call: "foundry.get-schedule"
with:
scheduleRid: "{{schedule_rid}}"
outputParameters:
- name: cron
type: string
mapping: "$.cronExpression"
- name: next_run
type: string
mapping: "$.nextRunTime"
- name: enabled
type: string
mapping: "$.enabled"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: schedules
path: "/schedules/{{scheduleRid}}"
inputParameters:
- name: scheduleRid
in: path
operations:
- name: get-schedule
method: GET
Audits security markings across Foundry datasets, logs findings in ServiceNow, and notifies compliance.
naftiko: "0.5"
info:
label: "Foundry Security Marking Audit Orchestrator"
description: "Audits security markings across Foundry datasets, logs findings in ServiceNow, and notifies compliance."
tags:
- security
- foundry
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: foundry-security-marking-
port: 8080
tools:
- name: foundry-security-marking-audit
description: "Audits security markings across Foundry datasets."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Foundry Security Marking Audit for {{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Foundry Security Marking Audit processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves security markings and classification labels for a Foundry resource.
naftiko: "0.5"
info:
label: "Foundry Security Marking Lookup"
description: "Retrieves security markings and classification labels for a Foundry resource."
tags:
- data-platform
- foundry
- palantir
- security
capability:
exposes:
- type: mcp
namespace: foundry-markings
port: 8080
tools:
- name: get-security-markings
description: "Given a resource RID, return the security markings and classification labels."
inputParameters:
- name: resource_rid
in: body
type: string
description: "Foundry resource RID."
call: "foundry.get-markings"
with:
resourceRid: "{{resource_rid}}"
outputParameters:
- name: marking_ids
type: string
mapping: "$.markingIds"
- name: classification
type: string
mapping: "$.classification"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: markings
path: "/resources/{{resourceRid}}/markings"
inputParameters:
- name: resourceRid
in: path
operations:
- name: get-markings
method: GET
Generates SLA compliance reports from Datadog and Foundry metrics, publishes to Confluence.
naftiko: "0.5"
info:
label: "Foundry SLA Compliance Report Orchestrator"
description: "Generates SLA compliance reports from Datadog and Foundry metrics, publishes to Confluence."
tags:
- operations
- foundry
- datadog
- confluence
capability:
exposes:
- type: mcp
namespace: foundry-sla-compliance-re
port: 8080
tools:
- name: foundry-sla-compliance-report
description: "Generates SLA compliance reports from Datadog and Foundry metrics."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: check-metrics
type: call
call: "datadog.get-monitors"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Foundry SLA Compliance Report"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor"
operations:
- name: get-monitors
method: GET
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves metadata for a Foundry Slate application, returning app name, connected datasets, and last published timestamp.
naftiko: "0.5"
info:
label: "Foundry Slate App Lookup"
description: "Retrieves metadata for a Foundry Slate application, returning app name, connected datasets, and last published timestamp."
tags:
- data-analytics
- foundry
- slate
capability:
exposes:
- type: mcp
namespace: foundry-apps
port: 8080
tools:
- name: get-slate-app
description: "Look up a Slate application by RID. Returns app details and connected datasets."
inputParameters:
- name: app_rid
in: body
type: string
description: "The Slate application resource identifier."
call: "foundry.get-slate-app"
with:
rid: "{{app_rid}}"
outputParameters:
- name: app_name
type: string
mapping: "$.name"
- name: connected_datasets
type: number
mapping: "$.connectedDatasetCount"
- name: last_published
type: string
mapping: "$.lastPublished"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: slate
path: "/slate/applications/{{rid}}"
inputParameters:
- name: rid
in: path
operations:
- name: get-slate-app
method: GET
Monitors Foundry-Snowflake sync health, validates row counts, and creates Jira tickets for mismatches.
naftiko: "0.5"
info:
label: "Foundry Snowflake Sync Health Orchestrator"
description: "Monitors Foundry-Snowflake sync health, validates row counts, and creates Jira tickets for mismatches."
tags:
- data-platform
- foundry
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: foundry-snowflake-sync-he
port: 8080
tools:
- name: foundry-snowflake-sync-health
description: "Monitors Foundry-Snowflake sync health."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: query-snowflake
type: call
call: "snowflake.run-query"
with:
entity_id: "{{entity_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project: "PLAT"
summary: "Foundry Snowflake Sync Health"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Monitors Foundry-to-Snowflake data sync jobs, detects failures, and alerts the data platform team via Slack.
naftiko: "0.5"
info:
label: "Foundry Snowflake Sync Monitor"
description: "Monitors Foundry-to-Snowflake data sync jobs, detects failures, and alerts the data platform team via Slack."
tags:
- data-platform
- foundry
- palantir
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: snowflake-sync
port: 8080
tools:
- name: monitor-snowflake-sync
description: "Check Foundry data sync status to Snowflake and alert on failures."
inputParameters:
- name: sync_name
in: body
type: string
description: "Name of the Foundry-Snowflake sync."
steps:
- name: get-sync-status
type: call
call: "foundry.get-sync"
with:
syncName: "{{sync_name}}"
- name: check-snowflake
type: call
call: "snowflake.query"
with:
sql: "SELECT COUNT(*) as row_count FROM {{sync_name}}"
- name: post-status
type: call
call: "slack.post-message"
with:
channel: "data-platform"
text: "Sync Monitor: {{sync_name}} | Foundry status: {{get-sync-status.status}} | Snowflake rows: {{check-snowflake.row_count}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: syncs
path: "/data-connections/syncs/{{syncName}}"
inputParameters:
- name: syncName
in: path
operations:
- name: get-sync
method: GET
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves Spark job compute resource usage for a Foundry pipeline build, returning executor count, peak memory utilization, and total compute hours consumed.
naftiko: "0.5"
info:
label: "Foundry Spark Job Resource Usage Lookup"
description: "Retrieves Spark job compute resource usage for a Foundry pipeline build, returning executor count, peak memory utilization, and total compute hours consumed."
tags:
- data-analytics
- foundry
- performance
- spark
capability:
exposes:
- type: mcp
namespace: compute-monitoring
port: 8080
tools:
- name: get-spark-resource-usage
description: "Look up Spark resource usage for a build. Returns executors, memory, and compute hours."
inputParameters:
- name: build_rid
in: body
type: string
description: "The Foundry build resource identifier."
call: "foundry.get-spark-metrics"
with:
build_rid: "{{build_rid}}"
outputParameters:
- name: executor_count
type: number
mapping: "$.executorCount"
- name: peak_memory_gb
type: number
mapping: "$.peakMemoryGb"
- name: compute_hours
type: number
mapping: "$.computeHours"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: builds
path: "/builds/{{build_rid}}/spark/metrics"
inputParameters:
- name: build_rid
in: path
operations:
- name: get-spark-metrics
method: GET
Retrieves the configuration and alert status of a Foundry time series monitor, returning monitored metric, threshold values, and current alert state.
naftiko: "0.5"
info:
label: "Foundry Time Series Monitor Lookup"
description: "Retrieves the configuration and alert status of a Foundry time series monitor, returning monitored metric, threshold values, and current alert state."
tags:
- data-analytics
- foundry
- monitoring
capability:
exposes:
- type: mcp
namespace: foundry-monitoring
port: 8080
tools:
- name: get-time-series-monitor
description: "Look up a Foundry time series monitor. Returns metric, thresholds, and alert state."
inputParameters:
- name: monitor_rid
in: body
type: string
description: "The time series monitor resource identifier."
call: "foundry.get-ts-monitor"
with:
rid: "{{monitor_rid}}"
outputParameters:
- name: metric_name
type: string
mapping: "$.metricName"
- name: upper_threshold
type: number
mapping: "$.upperThreshold"
- name: lower_threshold
type: number
mapping: "$.lowerThreshold"
- name: alert_state
type: string
mapping: "$.currentAlertState"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: monitors
path: "/timeSeries/monitors/{{rid}}"
inputParameters:
- name: rid
in: path
operations:
- name: get-ts-monitor
method: GET
Retrieves the upstream and downstream dependency graph for a Foundry transform, returning parent datasets, child datasets, and total depth of the dependency chain.
naftiko: "0.5"
info:
label: "Foundry Transform Dependency Graph Lookup"
description: "Retrieves the upstream and downstream dependency graph for a Foundry transform, returning parent datasets, child datasets, and total depth of the dependency chain."
tags:
- data-analytics
- foundry
- data-pipeline
capability:
exposes:
- type: mcp
namespace: foundry-lineage
port: 8080
tools:
- name: get-transform-dependencies
description: "Look up the dependency graph for a Foundry transform. Returns upstream and downstream datasets."
inputParameters:
- name: transform_rid
in: body
type: string
description: "The Foundry transform resource identifier."
call: "foundry.get-dependency-graph"
with:
rid: "{{transform_rid}}"
outputParameters:
- name: upstream_datasets
type: array
mapping: "$.upstream"
- name: downstream_datasets
type: array
mapping: "$.downstream"
- name: chain_depth
type: number
mapping: "$.maxDepth"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: transforms
path: "/transforms/{{rid}}/dependencies"
inputParameters:
- name: rid
in: path
operations:
- name: get-dependency-graph
method: GET
Retrieves execution time metrics for a Foundry transform.
naftiko: "0.5"
info:
label: "Foundry Transform Execution Time Lookup"
description: "Retrieves execution time metrics for a Foundry transform."
tags:
- data-platform
- foundry
capability:
exposes:
- type: mcp
namespace: transform-metrics
port: 8080
tools:
- name: get-transform-time
description: "Look up Foundry transform execution time."
inputParameters:
- name: transform_rid
in: body
type: string
description: "Foundry transform RID."
call: "foundry.get-transform-metrics"
with:
rid: "{{transform_rid}}"
outputParameters:
- name: last_execution_ms
type: number
mapping: "$.metrics.lastExecutionMs"
- name: status
type: string
mapping: "$.metrics.status"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: transforms
path: "/transforms/{{rid}}/metrics"
inputParameters:
- name: rid
in: path
operations:
- name: get-transform-metrics
method: GET
Aggregates Foundry transform build health metrics, identifies failing pipelines, and distributes a health report via Slack.
naftiko: "0.5"
info:
label: "Foundry Transform Health Report"
description: "Aggregates Foundry transform build health metrics, identifies failing pipelines, and distributes a health report via Slack."
tags:
- data-platform
- foundry
- palantir
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: transform-health
port: 8080
tools:
- name: generate-transform-health
description: "Query recent Foundry builds, aggregate success/failure rates, and post a health report."
inputParameters:
- name: hours
in: body
type: string
description: "Hours to look back."
steps:
- name: get-builds
type: call
call: "foundry.query-builds"
with:
lookback_hours: "{{hours}}"
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "data-engineering"
text: "Transform Health ({{hours}}h): Total: {{get-builds.total}} | Success: {{get-builds.success_count}} | Failed: {{get-builds.failure_count}} | Rate: {{get-builds.success_rate}}%"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: builds
path: "/builds"
inputParameters:
- name: lookback_hours
in: query
operations:
- name: query-builds
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves code quality check results for a Foundry TypeScript transform, returning lint error count, warning count, and overall pass/fail status.
naftiko: "0.5"
info:
label: "Foundry TypeScript Transform Linting Lookup"
description: "Retrieves code quality check results for a Foundry TypeScript transform, returning lint error count, warning count, and overall pass/fail status."
tags:
- data-analytics
- foundry
- engineering
- code-quality
capability:
exposes:
- type: mcp
namespace: foundry-code-quality
port: 8080
tools:
- name: get-transform-lint-results
description: "Look up lint check results for a TypeScript transform. Returns errors, warnings, and status."
inputParameters:
- name: transform_rid
in: body
type: string
description: "The Foundry transform resource identifier."
call: "foundry.get-lint-results"
with:
rid: "{{transform_rid}}"
outputParameters:
- name: error_count
type: number
mapping: "$.errors"
- name: warning_count
type: number
mapping: "$.warnings"
- name: status
type: string
mapping: "$.overallStatus"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: transforms
path: "/transforms/{{rid}}/checks/lint"
inputParameters:
- name: rid
in: path
operations:
- name: get-lint-results
method: GET
Reviews Foundry user permissions, validates against Okta groups, and creates ServiceNow tickets for anomalies.
naftiko: "0.5"
info:
label: "Foundry User Access Review Orchestrator"
description: "Reviews Foundry user permissions, validates against Okta groups, and creates ServiceNow tickets for anomalies."
tags:
- security
- foundry
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: foundry-user-access-revie
port: 8080
tools:
- name: foundry-user-access-review
description: "Reviews Foundry user permissions."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Foundry User Access Review for {{entity_id}}"
- name: provision-access
type: call
call: "okta.assign-user"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: assign-user
method: POST
Onboards a new user to Palantir Foundry by creating their account, assigning project access, granting Okta groups, and notifying their manager.
naftiko: "0.5"
info:
label: "Foundry User Onboarding Workflow"
description: "Onboards a new user to Palantir Foundry by creating their account, assigning project access, granting Okta groups, and notifying their manager."
tags:
- data-platform
- foundry
- palantir
- okta
- slack
- onboarding
capability:
exposes:
- type: mcp
namespace: foundry-onboard
port: 8080
tools:
- name: onboard-foundry-user
description: "Given user details, create Foundry account, assign projects, and notify via Slack."
inputParameters:
- name: email
in: body
type: string
description: "User email address."
- name: team
in: body
type: string
description: "Team name for project assignment."
steps:
- name: create-user
type: call
call: "foundry.create-user"
with:
email: "{{email}}"
group: "{{team}}-analysts"
- name: add-okta-group
type: call
call: "okta.add-group-member"
with:
user_id: "{{email}}"
group_id: "foundry-{{team}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "{{team}}"
text: "New Foundry user onboarded: {{email}} | Team: {{team}} | Projects assigned."
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: group-members
path: "/groups/{{group_id}}/users/{{user_id}}"
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: add-group-member
method: PUT
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves user permissions for a Foundry resource, returning role assignments and access level.
naftiko: "0.5"
info:
label: "Foundry User Permissions Lookup"
description: "Retrieves user permissions for a Foundry resource, returning role assignments and access level."
tags:
- data-platform
- foundry
- palantir
- access-management
capability:
exposes:
- type: mcp
namespace: foundry-perms
port: 8080
tools:
- name: get-user-permissions
description: "Given a user ID and resource RID, return the user's role and access level."
inputParameters:
- name: user_id
in: body
type: string
description: "Foundry user ID."
- name: resource_rid
in: body
type: string
description: "Resource RID to check permissions for."
call: "foundry.get-permissions"
with:
userId: "{{user_id}}"
resourceRid: "{{resource_rid}}"
outputParameters:
- name: role
type: string
mapping: "$.role"
- name: access_level
type: string
mapping: "$.accessLevel"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: permissions
path: "/permissions/{{resourceRid}}/users/{{userId}}"
inputParameters:
- name: userId
in: path
- name: resourceRid
in: path
operations:
- name: get-permissions
method: GET
Retrieves recent webhook event deliveries from Foundry by webhook ID, returning status and payload summary.
naftiko: "0.5"
info:
label: "Foundry Webhook Event Lookup"
description: "Retrieves recent webhook event deliveries from Foundry by webhook ID, returning status and payload summary."
tags:
- data-platform
- foundry
- palantir
- webhook
capability:
exposes:
- type: mcp
namespace: foundry-webhook
port: 8080
tools:
- name: get-webhook-events
description: "Given a webhook ID, return recent delivery statuses and payloads."
inputParameters:
- name: webhook_id
in: body
type: string
description: "Foundry webhook ID."
call: "foundry.get-webhook-events"
with:
webhookId: "{{webhook_id}}"
outputParameters:
- name: total_deliveries
type: string
mapping: "$.totalCount"
- name: last_status
type: string
mapping: "$.events[0].status"
- name: last_timestamp
type: string
mapping: "$.events[0].timestamp"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: webhooks
path: "/webhooks/{{webhookId}}/events"
inputParameters:
- name: webhookId
in: path
operations:
- name: get-webhook-events
method: GET
Generates weekly platform usage reports from Foundry metrics, publishes to Confluence, and distributes via email.
naftiko: "0.5"
info:
label: "Foundry Weekly Platform Report Orchestrator"
description: "Generates weekly platform usage reports from Foundry metrics, publishes to Confluence, and distributes via email."
tags:
- operations
- foundry
- confluence
- email
capability:
exposes:
- type: mcp
namespace: foundry-weekly-platform-r
port: 8080
tools:
- name: foundry-weekly-platform-report
description: "Generates weekly platform usage reports from Foundry metrics."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Foundry Weekly Platform Report"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@palantir.com"
subject: "Foundry Weekly Platform Report"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Retrieves usage analytics for a Foundry Workshop application, returning daily active users, page views, and average session duration over the last 30 days.
naftiko: "0.5"
info:
label: "Foundry Workshop App Usage Lookup"
description: "Retrieves usage analytics for a Foundry Workshop application, returning daily active users, page views, and average session duration over the last 30 days."
tags:
- data-analytics
- foundry
- workshop
- usage
capability:
exposes:
- type: mcp
namespace: foundry-analytics
port: 8080
tools:
- name: get-workshop-usage
description: "Look up Workshop app usage metrics. Returns DAU, page views, and session duration."
inputParameters:
- name: app_rid
in: body
type: string
description: "The Workshop application resource identifier."
call: "foundry.get-app-usage"
with:
app_rid: "{{app_rid}}"
outputParameters:
- name: daily_active_users
type: number
mapping: "$.metrics.dau"
- name: page_views_30d
type: number
mapping: "$.metrics.pageViews30d"
- name: avg_session_minutes
type: number
mapping: "$.metrics.avgSessionMinutes"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: usage
path: "/applications/{{app_rid}}/usage"
inputParameters:
- name: app_rid
in: path
operations:
- name: get-app-usage
method: GET
Retrieves metadata for a Foundry Workshop module.
naftiko: "0.5"
info:
label: "Foundry Workshop Module Lookup"
description: "Retrieves metadata for a Foundry Workshop module."
tags:
- analytics
- foundry
capability:
exposes:
- type: mcp
namespace: workshop-info
port: 8080
tools:
- name: get-module-info
description: "Look up Workshop module metadata."
inputParameters:
- name: module_rid
in: body
type: string
description: "Workshop module RID."
call: "foundry.get-module"
with:
rid: "{{module_rid}}"
outputParameters:
- name: title
type: string
mapping: "$.module.title"
- name: last_modified
type: string
mapping: "$.module.lastModified"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: workshop
path: "/workshop/modules/{{rid}}"
inputParameters:
- name: rid
in: path
operations:
- name: get-module
method: GET
Pulls code scanning alerts from GitHub repositories, ingests findings into a Foundry dataset for trend analysis, and creates Jira tickets for critical vulnerabilities.
naftiko: "0.5"
info:
label: "GitHub Code Scanning to Foundry Orchestrator"
description: "Pulls code scanning alerts from GitHub repositories, ingests findings into a Foundry dataset for trend analysis, and creates Jira tickets for critical vulnerabilities."
tags:
- security
- data-analytics
- github
- foundry
- jira
capability:
exposes:
- type: mcp
namespace: devsecops
port: 8080
tools:
- name: ingest-code-scanning-alerts
description: "Orchestrate code scanning alert ingestion: pull alerts, store in Foundry, and create tickets for criticals."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository (org/repo)."
steps:
- name: get-alerts
type: call
call: "github.get-code-scanning-alerts"
with:
repo: "{{repo_name}}"
- name: ingest-to-foundry
type: call
call: "foundry.write-dataset"
with:
dataset_rid: "code-scanning-alerts"
data: "{{get-alerts.alerts}}"
- name: create-critical-tickets
type: call
call: "jira.create-issue"
with:
project: "SEC"
issue_type: "Bug"
summary: "Critical code scan: {{repo_name}} - {{get-alerts.critical_count}} findings"
priority: "Critical"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: code-scanning
path: "/repos/{{repo}}/code-scanning/alerts"
inputParameters:
- name: repo
in: path
operations:
- name: get-code-scanning-alerts
method: GET
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets/{{dataset_rid}}/records"
inputParameters:
- name: dataset_rid
in: path
operations:
- name: write-dataset
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves the latest release for a Palantir Foundry plugin on GitHub.
naftiko: "0.5"
info:
label: "GitHub Foundry Plugin Release Lookup"
description: "Retrieves the latest release for a Palantir Foundry plugin on GitHub."
tags:
- cicd
- github
capability:
exposes:
- type: mcp
namespace: plugin-releases
port: 8080
tools:
- name: get-latest-release
description: "Look up latest Foundry plugin release."
inputParameters:
- name: repo_name
in: body
type: string
description: "GitHub repository name."
call: "github.get-release"
with:
repo: "{{repo_name}}"
outputParameters:
- name: tag
type: string
mapping: "$.tag_name"
- name: published_at
type: string
mapping: "$.published_at"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: releases
path: "/repos/palantir/{{repo}}/releases/latest"
inputParameters:
- name: repo
in: path
operations:
- name: get-release
method: GET
When a pull request is opened or updated on a protected branch in GitHub, creates a Jira review task and notifies the reviewer in Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Pull Request Review Notifier"
description: "When a pull request is opened or updated on a protected branch in GitHub, creates a Jira review task and notifies the reviewer in Microsoft Teams."
tags:
- devops
- github
- jira
- microsoft-teams
- code-review
capability:
exposes:
- type: mcp
namespace: devops-pr
port: 8080
tools:
- name: notify-pr-review
description: "Given a GitHub pull request URL, repo, and reviewer Teams UPN, create a Jira review task and send a Teams notification to the assigned reviewer."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository name in 'org/repo' format."
- name: pr_number
in: body
type: integer
description: "The GitHub pull request number."
- name: reviewer_upn
in: body
type: string
description: "The Microsoft Teams UPN of the reviewer to notify."
steps:
- name: get-pr
type: call
call: github.get-pr
with:
repo: "{{repo}}"
pr_number: "{{pr_number}}"
- name: create-review-task
type: call
call: jira.create-issue
with:
project_key: "ENG"
issuetype: "Task"
summary: "PR Review: {{get-pr.title}}"
description: "Review required for {{repo}}#{{pr_number}}: {{get-pr.html_url}}"
- name: notify-reviewer
type: call
call: msteams.send-message
with:
channel_id: "{{reviewer_upn}}"
text: "PR review requested: {{get-pr.title}} in {{repo}}. Jira: {{create-review-task.key}}. Link: {{get-pr.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pull-requests
path: "/repos/{{repo}}/pulls/{{pr_number}}"
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: get-pr
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.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.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a GitHub release is published, creates a Datadog deployment marker, transitions the Jira release issue to Done, and posts a deployment notice in Teams.
naftiko: "0.5"
info:
label: "GitHub Release Deployment Tracker"
description: "When a GitHub release is published, creates a Datadog deployment marker, transitions the Jira release issue to Done, and posts a deployment notice in Teams."
tags:
- devops
- github
- datadog
- jira
- deployment
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: deployment-ops
port: 8080
tools:
- name: track-release-deployment
description: "Given a GitHub repository, release tag, and linked Jira release key, create a Datadog deployment marker, close the Jira release, and post a deployment announcement in Teams."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in 'org/repo' format."
- name: release_tag
in: body
type: string
description: "The GitHub release tag (e.g., 'v2.4.1')."
- name: jira_release_key
in: body
type: string
description: "The Jira issue key for the release ticket (e.g., 'PLAT-200')."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID where the deployment notice should be posted."
steps:
- name: get-release
type: call
call: github.get-release
with:
repo: "{{repo}}"
tag: "{{release_tag}}"
- name: create-dd-marker
type: call
call: datadog.create-event
with:
title: "Deployment: {{repo}} {{release_tag}}"
text: "{{get-release.body}}"
alert_type: "info"
- name: close-jira-release
type: call
call: jira.transition-issue
with:
issue_key: "{{jira_release_key}}"
transition_id: "31"
- name: announce-deployment
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Deployed: {{repo}} {{release_tag}} | Jira: {{jira_release_key}} closed | Datadog: {{create-dd-marker.url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: releases
path: "/repos/{{repo}}/releases/tags/{{tag}}"
inputParameters:
- name: repo
in: path
- name: tag
in: path
operations:
- name: get-release
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: transitions
path: "/issue/{{issue_key}}/transitions"
inputParameters:
- name: issue_key
in: path
operations:
- name: transition-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Dependabot or code scanning alert is raised in GitHub, creates a Jira security task and notifies the security team in Microsoft Teams.
naftiko: "0.5"
info:
label: "GitHub Repository Security Scan Alert"
description: "When a Dependabot or code scanning alert is raised in GitHub, creates a Jira security task and notifies the security team in Microsoft Teams."
tags:
- security
- devops
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: handle-security-alert
description: "Given a GitHub repository, alert number, and severity, create a Jira security task and post a Teams notification to the security channel."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in 'org/repo' format."
- name: alert_number
in: body
type: integer
description: "The GitHub security alert number."
- name: severity
in: body
type: string
description: "Alert severity: 'critical', 'high', 'medium', or 'low'."
steps:
- name: get-alert
type: call
call: github.get-security-alert
with:
repo: "{{repo}}"
alert_number: "{{alert_number}}"
- name: create-security-task
type: call
call: jira.create-issue
with:
project_key: "SEC"
issuetype: "Task"
summary: "[{{severity}}] Security alert in {{repo}} — {{get-alert.rule_id}}"
description: "GitHub alert {{alert_number}} in {{repo}}. Severity: {{severity}}. Rule: {{get-alert.rule_description}}. URL: {{get-alert.html_url}}"
- name: notify-security-team
type: call
call: msteams.send-message
with:
channel_id: "security-alerts"
text: "Security Alert [{{severity}}]: {{repo}} | Rule: {{get-alert.rule_id}} | Jira: {{create-security-task.key}} | GitHub: {{get-alert.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: code-scanning-alerts
path: "/repos/{{repo}}/code-scanning/alerts/{{alert_number}}"
inputParameters:
- name: repo
in: path
- name: alert_number
in: path
operations:
- name: get-security-alert
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.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.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Assigns Gotham cases based on workload, updates case records, and notifies assignees via Slack.
naftiko: "0.5"
info:
label: "Gotham Case Assignment Orchestrator"
description: "Assigns Gotham cases based on workload, updates case records, and notifies assignees via Slack."
tags:
- investigations
- gotham
- slack
capability:
exposes:
- type: mcp
namespace: gotham-case-assignment
port: 8080
tools:
- name: gotham-case-assignment
description: "Assigns Gotham cases based on workload."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: search-gotham
type: call
call: "gotham.search-objects"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Gotham Case Assignment processed for {{entity_id}}"
consumes:
- type: http
namespace: gotham
baseUri: "https://palantir.palantirfoundry.com/gotham/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: objects
path: "/objects"
operations:
- name: search-objects
method: GET
- name: create-investigation
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves investigation case status from Palantir Gotham.
naftiko: "0.5"
info:
label: "Gotham Case Status Lookup"
description: "Retrieves investigation case status from Palantir Gotham."
tags:
- investigations
- gotham
capability:
exposes:
- type: mcp
namespace: case-status
port: 8080
tools:
- name: get-case-status
description: "Look up Gotham investigation case status."
inputParameters:
- name: case_id
in: body
type: string
description: "Gotham case identifier."
call: "gotham.get-case"
with:
case_id: "{{case_id}}"
outputParameters:
- name: status
type: string
mapping: "$.case.status"
- name: assigned_to
type: string
mapping: "$.case.assignedTo"
consumes:
- type: http
namespace: gotham
baseUri: "https://palantir.palantirfoundry.com/gotham/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: cases
path: "/cases/{{case_id}}"
inputParameters:
- name: case_id
in: path
operations:
- name: get-case
method: GET
Performs entity resolution in Gotham by searching for matching person or organization entities, returning matched entity IDs, confidence scores, and linked properties.
naftiko: "0.5"
info:
label: "Gotham Entity Resolution Lookup"
description: "Performs entity resolution in Gotham by searching for matching person or organization entities, returning matched entity IDs, confidence scores, and linked properties."
tags:
- data-analytics
- gotham
- entity-resolution
capability:
exposes:
- type: mcp
namespace: gotham-analytics
port: 8080
tools:
- name: resolve-entity
description: "Search Gotham for matching entities by name and attributes. Returns entity matches with confidence scores."
inputParameters:
- name: entity_name
in: body
type: string
description: "The entity name to resolve."
- name: entity_type
in: body
type: string
description: "Entity type: person or organization."
call: "gotham.resolve-entity"
with:
name: "{{entity_name}}"
type: "{{entity_type}}"
outputParameters:
- name: matches
type: array
mapping: "$.results"
items:
- name: entity_id
type: string
mapping: "$.entityId"
- name: confidence
type: number
mapping: "$.confidenceScore"
- name: display_name
type: string
mapping: "$.displayName"
consumes:
- type: http
namespace: gotham
baseUri: "https://palantir.gotham.com/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: entities
path: "/entities/resolve"
operations:
- name: resolve-entity
method: POST
Enriches Gotham investigations with Foundry data, updates case records, and notifies analysts.
naftiko: "0.5"
info:
label: "Gotham Investigation Enrichment Orchestrator"
description: "Enriches Gotham investigations with Foundry data, updates case records, and notifies analysts."
tags:
- investigations
- gotham
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: gotham-investigation-enri
port: 8080
tools:
- name: gotham-investigation-enrichment
description: "Enriches Gotham investigations with Foundry data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: search-gotham
type: call
call: "gotham.search-objects"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Gotham Investigation Enrichment processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: gotham
baseUri: "https://palantir.palantirfoundry.com/gotham/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: objects
path: "/objects"
operations:
- name: search-objects
method: GET
- name: create-investigation
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves an investigation from Palantir Gotham by ID, returning status, assigned analyst, and entity count.
naftiko: "0.5"
info:
label: "Gotham Investigation Lookup"
description: "Retrieves an investigation from Palantir Gotham by ID, returning status, assigned analyst, and entity count."
tags:
- intelligence
- gotham
- palantir
- lookup
capability:
exposes:
- type: mcp
namespace: gotham-investigation
port: 8080
tools:
- name: get-investigation
description: "Given an investigation ID, return its status, assigned analyst, and linked entity count."
inputParameters:
- name: investigation_id
in: body
type: string
description: "Gotham investigation ID."
call: "gotham.get-investigation"
with:
id: "{{investigation_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: analyst
type: string
mapping: "$.assignedAnalyst"
- name: entity_count
type: string
mapping: "$.entityCount"
consumes:
- type: http
namespace: gotham
baseUri: "https://palantir.palantirgotham.com/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: investigations
path: "/investigations/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-investigation
method: GET
Assesses threats using Gotham and Foundry data, creates investigation cases, and alerts analysts via Slack.
naftiko: "0.5"
info:
label: "Gotham Threat Assessment Orchestrator"
description: "Assesses threats using Gotham and Foundry data, creates investigation cases, and alerts analysts via Slack."
tags:
- investigations
- gotham
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: gotham-threat-assessment
port: 8080
tools:
- name: gotham-threat-assessment
description: "Assesses threats using Gotham and Foundry data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: search-gotham
type: call
call: "gotham.search-objects"
with:
entity_id: "{{entity_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#platform-ops"
text: "Gotham Threat Assessment processed for {{entity_id}}"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: gotham
baseUri: "https://palantir.palantirfoundry.com/gotham/api/v1"
authentication:
type: bearer
token: "$secrets.gotham_token"
resources:
- name: objects
path: "/objects"
operations:
- name: search-objects
method: GET
- name: create-investigation
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Submits a change request to ServiceNow Change Management and blocks a Jira release issue from moving to Done until the change is approved.
naftiko: "0.5"
info:
label: "Jira Change Management Approval Gate"
description: "Submits a change request to ServiceNow Change Management and blocks a Jira release issue from moving to Done until the change is approved."
tags:
- itsm
- change-management
- servicenow
- jira
- approval
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-change-request
description: "Given a Jira release issue key and change description, submit a ServiceNow change request and transition the Jira issue to 'Awaiting Approval' status."
inputParameters:
- name: jira_issue_key
in: body
type: string
description: "The Jira release issue key requiring change approval (e.g., 'PLAT-789')."
- name: change_description
in: body
type: string
description: "Description of the change being requested, including scope and rollback plan."
- name: planned_start
in: body
type: string
description: "Planned change start datetime in ISO 8601 format."
steps:
- name: create-change-request
type: call
call: servicenow.create-change
with:
short_description: "Change for {{jira_issue_key}}: {{change_description}}"
planned_start: "{{planned_start}}"
category: "software"
- name: update-jira-status
type: call
call: jira.transition-issue
with:
issue_key: "{{jira_issue_key}}"
transition_id: "41"
comment: "Change request submitted: {{create-change-request.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: transitions
path: "/issue/{{issue_key}}/transitions"
inputParameters:
- name: issue_key
in: path
operations:
- name: transition-issue
method: POST
Fetches open Jira issues for a given sprint and project, then posts a status summary to a Microsoft Teams channel. Use for automated sprint stand-up reporting.
naftiko: "0.5"
info:
label: "Jira Sprint Status Digest"
description: "Fetches open Jira issues for a given sprint and project, then posts a status summary to a Microsoft Teams channel. Use for automated sprint stand-up reporting."
tags:
- devops
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-reporting
port: 8080
tools:
- name: digest-sprint-status
description: "Given a Jira project key and sprint ID, fetch all open issues and post a formatted digest to a Teams channel."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key (e.g., 'PLAT')."
- name: sprint_id
in: body
type: integer
description: "The Jira sprint ID number."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel ID where the sprint digest should be posted."
steps:
- name: get-issues
type: call
call: jira.search-issues
with:
jql: "project={{project_key}} AND sprint={{sprint_id}} AND status != Done"
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Sprint {{sprint_id}} digest for {{project_key}}: {{get-issues.total}} open issues. Blockers: {{get-issues.blockers}}."
consumes:
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/search"
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches LinkedIn company page follower statistics and posts a weekly growth digest to the marketing Microsoft Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Company Follower Growth Digest"
description: "Fetches LinkedIn company page follower statistics and posts a weekly growth digest to the marketing Microsoft Teams channel."
tags:
- marketing
- linkedin
- reporting
- microsoft-teams
- social
capability:
exposes:
- type: mcp
namespace: marketing-reporting
port: 8080
tools:
- name: digest-linkedin-followers
description: "Retrieve LinkedIn company page follower count and growth metrics for the past 30 days, then post a formatted digest to the marketing Teams channel."
inputParameters:
- name: organization_id
in: body
type: string
description: "The LinkedIn organization ID for Palantir's company page."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID where the follower growth digest should be posted."
steps:
- name: get-follower-stats
type: call
call: linkedin.get-follower-stats
with:
organization_id: "{{organization_id}}"
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "LinkedIn Follower Digest: {{get-follower-stats.follower_count}} total followers | +{{get-follower-stats.gained_30d}} new this month | Organic growth rate: {{get-follower-stats.growth_rate}}%"
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-stats
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a new hire is created in Workday, provisions a ServiceNow onboarding ticket, sends a Microsoft Teams welcome message, and creates a Jira onboarding task for IT setup.
naftiko: "0.5"
info:
label: "New Hire Onboarding Orchestrator"
description: "When a new hire is created in Workday, provisions a ServiceNow onboarding ticket, sends a Microsoft Teams welcome message, and creates a Jira onboarding task for IT setup."
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-teams
- jira
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 creating a ServiceNow ticket, sending a Teams welcome card, and opening a Jira IT setup task."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The new hire's start date in YYYY-MM-DD format."
- name: team_channel
in: body
type: string
description: "The Microsoft Teams channel ID where the welcome message should be posted."
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: "{{worker_id}}"
- name: create-snow-ticket
type: call
call: servicenow.create-incident
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
- name: send-welcome
type: call
call: msteams.send-message
with:
channel_id: "{{team_channel}}"
text: "Welcome to Palantir, {{get-employee.full_name}}! Your IT onboarding ticket is {{create-snow-ticket.number}}. Start date: {{start_date}}."
- name: create-jira-task
type: call
call: jira.create-issue
with:
project_key: "IT"
issuetype: "Task"
summary: "IT Setup — {{get-employee.full_name}} starting {{start_date}}"
description: "Provision laptop, accounts, and access for new hire. ServiceNow: {{create-snow-ticket.number}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/palantir/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Lists Okta users who do not have MFA enrolled and reports them in a ServiceNow security task for remediation follow-up.
naftiko: "0.5"
info:
label: "Okta MFA Enforcement Audit"
description: "Lists Okta users who do not have MFA enrolled and reports them in a ServiceNow security task for remediation follow-up."
tags:
- security
- identity
- okta
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-mfa-enrollment
description: "List all active Okta users who lack MFA enrollment and create a ServiceNow security task listing the non-compliant accounts."
inputParameters:
- name: okta_group_id
in: body
type: string
description: "The Okta group ID to scope the MFA enrollment audit."
steps:
- name: list-users-without-mfa
type: call
call: okta.list-users
with:
group_id: "{{okta_group_id}}"
mfa_enrolled: "false"
- name: create-security-task
type: call
call: servicenow.create-incident
with:
short_description: "MFA Enrollment Audit — {{list-users-without-mfa.count}} non-compliant users"
category: "security_compliance"
description: "Users without MFA: {{list-users-without-mfa.emails}}"
consumes:
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_key"
placement: header
resources:
- name: users
path: "/groups/{{group_id}}/users"
inputParameters:
- name: group_id
in: path
- name: mfa_enrolled
in: query
operations:
- name: list-users
method: GET
- type: http
namespace: servicenow
baseUri: "https://palantir.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
Retrieves all Okta users assigned to a specific application group and cross-references with Workday active headcount to flag access anomalies.
naftiko: "0.5"
info:
label: "Okta User Access Review"
description: "Retrieves all Okta users assigned to a specific application group and cross-references with Workday active headcount to flag access anomalies."
tags:
- identity
- security
- okta
- workday
- access-review
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: review-app-access
description: "Given an Okta application ID, list all assigned users and identify any who are no longer active in Workday, returning them as anomalies requiring revocation."
inputParameters:
- name: okta_app_id
in: body
type: string
description: "The Okta application client ID to audit user assignments for."
steps:
- name: get-okta-users
type: call
call: okta.list-app-users
with:
app_id: "{{okta_app_id}}"
- name: get-workday-workers
type: call
call: workday.list-workers
with:
status: "active"
consumes:
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_key"
placement: header
resources:
- name: app-users
path: "/apps/{{app_id}}/users"
inputParameters:
- name: app_id
in: path
operations:
- name: list-app-users
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/palantir/workers"
inputParameters:
- name: status
in: query
operations:
- name: list-workers
method: GET
When a new employee is added in Workday, creates an Okta account, assigns application groups based on role, provisions Foundry access, and sends a welcome email with credentials.
naftiko: "0.5"
info:
label: "Okta User Provisioning Orchestrator"
description: "When a new employee is added in Workday, creates an Okta account, assigns application groups based on role, provisions Foundry access, and sends a welcome email with credentials."
tags:
- hr
- security
- workday
- okta
- foundry
capability:
exposes:
- type: mcp
namespace: identity-provisioning
port: 8080
tools:
- name: provision-new-user
description: "Orchestrate new user provisioning: create Okta account, assign groups, provision Foundry, and send welcome."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: create-okta-user
type: call
call: "okta.create-user"
with:
login: "{{get-worker.email}}"
firstName: "{{get-worker.first_name}}"
lastName: "{{get-worker.last_name}}"
- name: provision-foundry
type: call
call: "foundry.create-user"
with:
email: "{{get-worker.email}}"
role: "{{get-worker.job_title}}"
- name: send-welcome
type: call
call: "slack.post-message"
with:
channel: "{{get-worker.email}}"
text: "Welcome to Palantir, {{get-worker.first_name}}! Your Okta and Foundry accounts are ready. Log in at foundry.palantir.com."
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: "/palantir/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/multipass/api"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Enriches ontology links with external data, validates in Foundry, and publishes findings to Confluence.
naftiko: "0.5"
info:
label: "Ontology Link Analysis Enrichment Orchestrator"
description: "Enriches ontology links with external data, validates in Foundry, and publishes findings to Confluence."
tags:
- data-platform
- foundry
- confluence
capability:
exposes:
- type: mcp
namespace: ontology-link-analysis-en
port: 8080
tools:
- name: ontology-link-analysis-enrichment
description: "Enriches ontology links with external data."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space_key: "PLAT"
title: "Ontology Link Analysis Enrichment"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: confluence
baseUri: "https://palantir.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
When a P1 incident is raised in ServiceNow, creates a Datadog event annotation, posts an alert in Microsoft Teams, and opens a Jira incident bug for engineering tracking.
naftiko: "0.5"
info:
label: "P1 Incident Response Chain"
description: "When a P1 incident is raised in ServiceNow, creates a Datadog event annotation, posts an alert in Microsoft Teams, and opens a Jira incident bug for engineering tracking."
tags:
- itsm
- incident-response
- servicenow
- datadog
- microsoft-teams
- jira
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: handle-p1-incident
description: "Given a P1 ServiceNow incident number and affected service, create a Datadog event, open a Jira bug, and alert the engineering team in Teams."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number for the P1 event."
- name: affected_service
in: body
type: string
description: "The name of the affected service or platform."
- name: impact_summary
in: body
type: string
description: "A brief description of the impact on users or operations."
steps:
- name: annotate-datadog
type: call
call: datadog.create-event
with:
title: "P1 Incident: {{affected_service}}"
text: "SNOW {{incident_number}} — {{impact_summary}}"
alert_type: "error"
- name: create-jira-bug
type: call
call: jira.create-issue
with:
project_key: "ENG"
issuetype: "Bug"
summary: "[P1] {{affected_service}} — {{incident_number}}"
description: "ServiceNow: {{incident_number}}\nImpact: {{impact_summary}}\nDatadog event: {{annotate-datadog.id}}"
priority: "Highest"
- name: alert-teams
type: call
call: msteams.send-message
with:
channel_id: "engineering-incidents"
text: "P1 INCIDENT: {{affected_service}} | SNOW: {{incident_number}} | Jira: {{create-jira-bug.key}} | Datadog: {{annotate-datadog.url}}"
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: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.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.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Refreshes Quiver dashboards in Foundry, validates data freshness, and notifies stakeholders via email.
naftiko: "0.5"
info:
label: "Quiver Dashboard Refresh and Validate Orchestrator"
description: "Refreshes Quiver dashboards in Foundry, validates data freshness, and notifies stakeholders via email."
tags:
- analytics
- foundry
- email
capability:
exposes:
- type: mcp
namespace: quiver-dashboard-refresh-
port: 8080
tools:
- name: quiver-dashboard-refresh-and-validate
description: "Refreshes Quiver dashboards in Foundry."
inputParameters:
- name: entity_id
in: body
type: string
description: "Primary entity identifier."
steps:
- name: query-foundry
type: call
call: "foundry.get-dataset"
with:
entity_id: "{{entity_id}}"
- name: send-email
type: call
call: "email.send-message"
with:
to: "team@palantir.com"
subject: "Quiver Dashboard Refresh and Validate"
consumes:
- type: http
namespace: foundry
baseUri: "https://palantir.palantirfoundry.com/api/v1"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: get-dataset
method: GET
- name: create-dataset
method: POST
- name: run-transform
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Retrieves open opportunities and recent activity for a Salesforce account and posts an account health summary to the owning rep's Teams channel.
naftiko: "0.5"
info:
label: "Salesforce Account Health Digest"
description: "Retrieves open opportunities and recent activity for a Salesforce account and posts an account health summary to the owning rep's Teams channel."
tags:
- sales
- crm
- salesforce
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: digest-account-health
description: "Given a Salesforce account ID and the owning rep's Teams UPN, fetch open opportunities and recent activity, then post an account health digest to the rep's channel."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID to report on."
- name: rep_teams_upn
in: body
type: string
description: "The Teams UPN of the account owner to receive the digest."
steps:
- name: get-account
type: call
call: salesforce.get-account
with:
account_id: "{{account_id}}"
- name: get-opportunities
type: call
call: salesforce-opps.query-opportunities
with:
account_id: "{{account_id}}"
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: "{{rep_teams_upn}}"
text: "Account Health: {{get-account.Name}} | Open Opps: {{get-opportunities.count}} | Total Pipeline: ${{get-opportunities.total_amount}} | Last Activity: {{get-account.LastActivityDate}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.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://palantir.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: query-opportunities
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Salesforce for contracts expiring within 60 days and posts a renewal digest to the responsible account executives in Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Contract Renewal Alert"
description: "Queries Salesforce for contracts expiring within 60 days and posts a renewal digest to the responsible account executives in Microsoft Teams."
tags:
- sales
- crm
- salesforce
- contracts
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: contract-mgmt
port: 8080
tools:
- name: alert-expiring-contracts
description: "Query Salesforce for contracts expiring in the next 60 days and post a renewal alert digest to the sales leadership Teams channel."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to look for expiring contracts (default: 60)."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID for the renewal alert digest."
steps:
- name: query-expiring
type: call
call: salesforce.query-contracts
with:
days_ahead: "{{days_ahead}}"
- name: post-renewal-alert
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Contract Renewal Alert: {{query-expiring.count}} contracts expiring in {{days_ahead}} days. Total value at risk: ${{query-expiring.total_value}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contracts
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-contracts
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Syncs Salesforce opportunity data into Foundry for pipeline analytics, computes win probability scores using a Foundry ML model, and updates the Salesforce opportunity with the predicted score.
naftiko: "0.5"
info:
label: "Salesforce Deal Analytics Pipeline Orchestrator"
description: "Syncs Salesforce opportunity data into Foundry for pipeline analytics, computes win probability scores using a Foundry ML model, and updates the Salesforce opportunity with the predicted score."
tags:
- data-analytics
- salesforce
- foundry
- machine-learning
capability:
exposes:
- type: mcp
namespace: sales-analytics
port: 8080
tools:
- name: analyze-deal-pipeline
description: "Orchestrate deal analytics: sync from Salesforce, score with ML model, and write predictions back."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity identifier."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: predict-win-probability
type: call
call: "foundry.invoke-model"
with:
model_rid: "deal-scoring-model"
input:
amount: "{{get-opportunity.Amount}}"
stage: "{{get-opportunity.StageName}}"
days_in_stage: "{{get-opportunity.DaysInStage}}"
- name: update-salesforce
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
win_probability: "{{predict-win-probability.score}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- name: update-opportunity
method: PATCH
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: models
path: "/models/{{model_rid}}/invoke"
inputParameters:
- name: model_rid
in: path
operations:
- name: invoke-model
method: POST
Given a new Salesforce lead, fetches the LinkedIn profile to enrich job title and company details, then updates the Salesforce record.
naftiko: "0.5"
info:
label: "Salesforce Lead Enrichment from LinkedIn"
description: "Given a new Salesforce lead, fetches the LinkedIn profile to enrich job title and company details, then updates the Salesforce record."
tags:
- sales
- crm
- salesforce
- linkedin
- lead-enrichment
capability:
exposes:
- type: mcp
namespace: sales-enrichment
port: 8080
tools:
- name: enrich-lead
description: "Given a Salesforce lead ID and the lead's LinkedIn member URN, fetch LinkedIn profile data and update the Salesforce lead with enriched title, company, and industry fields."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce lead record ID to enrich."
- name: linkedin_urn
in: body
type: string
description: "The LinkedIn member URN (e.g., 'urn:li:person:abc123') for the lead."
steps:
- name: get-linkedin-profile
type: call
call: linkedin.get-profile
with:
member_urn: "{{linkedin_urn}}"
- name: update-lead
type: call
call: salesforce.update-lead
with:
lead_id: "{{lead_id}}"
title: "{{get-linkedin-profile.headline}}"
company: "{{get-linkedin-profile.company}}"
industry: "{{get-linkedin-profile.industry}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: profiles
path: "/people/{{member_urn}}"
inputParameters:
- name: member_urn
in: path
operations:
- name: get-profile
method: GET
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Retrieves an open Salesforce opportunity and syncs its stage and close date back to an internal Jira tracking issue for pipeline visibility.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Sync"
description: "Retrieves an open Salesforce opportunity and syncs its stage and close date back to an internal Jira tracking issue for pipeline visibility."
tags:
- sales
- crm
- salesforce
- jira
- opportunity
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: sync-opportunity
description: "Given a Salesforce opportunity ID and a linked Jira issue key, fetch the opportunity stage and close date from Salesforce and update the Jira issue fields to keep pipeline data in sync."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID (18-character Salesforce ID)."
- name: jira_issue_key
in: body
type: string
description: "The Jira issue key linked to this opportunity (e.g., 'SALES-456')."
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: "{{opportunity_id}}"
- name: update-jira
type: call
call: jira.update-issue
with:
issue_key: "{{jira_issue_key}}"
stage: "{{get-opportunity.StageName}}"
close_date: "{{get-opportunity.CloseDate}}"
amount: "{{get-opportunity.Amount}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://palantir.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: update-issue
method: PUT
When a security alert fires from Datadog, enriches the alert with threat intelligence from Foundry, creates a ServiceNow security incident, and pages the on-call security engineer via PagerDuty.
naftiko: "0.5"
info:
label: "Security Incident Triage Orchestrator"
description: "When a security alert fires from Datadog, enriches the alert with threat intelligence from Foundry, creates a ServiceNow security incident, and pages the on-call security engineer via PagerDuty."
tags:
- security
- data-analytics
- datadog
- foundry
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: triage-security-incident
description: "Orchestrate security incident triage: enrich alert, create incident, and page on-call engineer."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Datadog security alert identifier."
steps:
- name: get-alert-details
type: call
call: "datadog.get-alert"
with:
alert_id: "{{alert_id}}"
- name: enrich-with-threat-intel
type: call
call: "foundry.query-threat-intelligence"
with:
indicators: "{{get-alert-details.indicators}}"
- name: create-security-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Security alert: {{get-alert-details.title}}"
category: "security"
urgency: "{{get-alert-details.severity}}"
description: "Threat intel match: {{enrich-with-threat-intel.match_count}} indicators. Risk score: {{enrich-with-threat-intel.risk_score}}."
- name: page-oncall
type: call
call: "pagerduty.create-incident"
with:
service_id: "security-engineering"
title: "Security alert: {{get-alert-details.title}}"
urgency: "high"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: alerts
path: "/security_monitoring/signals/{{alert_id}}"
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: threat-intel
path: "/ontologies/default/objectTypes/ThreatIndicator/objects"
operations:
- name: query-threat-intelligence
method: POST
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Retrieves a ServiceNow incident by ticket number and returns its current status, priority, and assignment details. Use when an agent needs to check incident state before escalation.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by ticket number and returns its current status, priority, and assignment details. Use when an agent needs to check incident state before escalation."
tags:
- itsm
- servicenow
- lookup
- incident-response
capability:
exposes:
- type: mcp
namespace: itsm-lookup
port: 8080
tools:
- name: get-incident
description: "Given a ServiceNow incident number, return the incident's status, priority, assigned group, and short description."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., 'INC0012345')."
call: servicenow.get-incident
with:
number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
- name: short_description
type: string
mapping: "$.result.short_description"
consumes:
- type: http
namespace: servicenow
baseUri: "https://palantir.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Queries Snowflake for failed or stalled pipeline tasks in the past 24 hours and posts a digest to the data engineering Teams channel.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Check"
description: "Queries Snowflake for failed or stalled pipeline tasks in the past 24 hours and posts a digest to the data engineering Teams channel."
tags:
- data
- analytics
- snowflake
- monitoring
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: "Query Snowflake for task failures in the last 24 hours within a given database schema, then post a health digest to a Teams channel."
inputParameters:
- name: database
in: body
type: string
description: "The Snowflake database name to inspect (e.g., 'ANALYTICS_DB')."
- name: schema
in: body
type: string
description: "The Snowflake schema name to scope the task failure query."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel ID where the health digest should be posted."
steps:
- name: query-task-failures
type: call
call: snowflake.query-task-history
with:
database: "{{database}}"
schema: "{{schema}}"
- name: post-digest
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Pipeline health for {{database}}.{{schema}}: {{query-task-failures.failed_count}} failures in last 24h. First failure: {{query-task-failures.first_error}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: task-history
path: "/databases/{{database}}/schemas/{{schema}}/tasks"
inputParameters:
- name: database
in: path
- name: schema
in: path
operations:
- name: query-task-history
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves row count from Snowflake for a Foundry-synced dataset.
naftiko: "0.5"
info:
label: "Snowflake Foundry Sync Row Count Lookup"
description: "Retrieves row count from Snowflake for a Foundry-synced dataset."
tags:
- data-platform
- snowflake
capability:
exposes:
- type: mcp
namespace: sync-data
port: 8080
tools:
- name: get-row-count
description: "Look up Snowflake row count for Foundry dataset."
inputParameters:
- name: table_name
in: body
type: string
description: "Snowflake table name."
call: "snowflake.run-query"
with:
table_name: "{{table_name}}"
outputParameters:
- name: row_count
type: number
mapping: "$.data[0][0]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Monitors Snowflake query history for long-running queries exceeding a threshold and creates a Datadog event and Jira data-engineering task.
naftiko: "0.5"
info:
label: "Snowflake Query Performance Alert"
description: "Monitors Snowflake query history for long-running queries exceeding a threshold and creates a Datadog event and Jira data-engineering task."
tags:
- data
- analytics
- snowflake
- datadog
- jira
- monitoring
capability:
exposes:
- type: mcp
namespace: data-monitoring
port: 8080
tools:
- name: alert-slow-queries
description: "Given a Snowflake warehouse name and execution time threshold in seconds, find queries exceeding the threshold and create a Datadog event plus Jira task for the data engineering team."
inputParameters:
- name: warehouse_name
in: body
type: string
description: "The Snowflake virtual warehouse to monitor (e.g., 'ANALYTICS_WH')."
- name: threshold_seconds
in: body
type: integer
description: "Execution time threshold in seconds; queries exceeding this are flagged."
steps:
- name: get-slow-queries
type: call
call: snowflake.query-history
with:
warehouse_name: "{{warehouse_name}}"
threshold_seconds: "{{threshold_seconds}}"
- name: create-datadog-event
type: call
call: datadog.create-event
with:
title: "Slow queries detected in {{warehouse_name}}"
text: "{{get-slow-queries.count}} queries exceeded {{threshold_seconds}}s. Worst: {{get-slow-queries.worst_query_id}} ({{get-slow-queries.worst_duration}}s)"
alert_type: "warning"
- name: create-jira-task
type: call
call: jira.create-issue
with:
project_key: "DATA"
issuetype: "Task"
summary: "Slow query investigation: {{warehouse_name}}"
description: "{{get-slow-queries.count}} queries exceeded {{threshold_seconds}}s threshold. Datadog: {{create-datadog-event.url}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://palantir.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: query-history
path: "/databases/SNOWFLAKE/schemas/ACCOUNT_USAGE/query-history"
inputParameters:
- name: warehouse_name
in: query
- name: threshold_seconds
in: query
operations:
- name: query-history
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: jira
baseUri: "https://palantir.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Checks the status of a Terraform Cloud workspace run and, if it has errored, creates a Jira infrastructure bug and alerts the platform team in Teams.
naftiko: "0.5"
info:
label: "Terraform Cloud Run Status Monitor"
description: "Checks the status of a Terraform Cloud workspace run and, if it has errored, creates a Jira infrastructure bug and alerts the platform team in Teams."
tags:
- cloud
- infra
- terraform
- jira
- microsoft-teams
- devops
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: monitor-terraform-run
description: "Given a Terraform Cloud workspace name and run ID, check the run status. If errored, open a Jira infra bug and alert the platform team in Teams."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Terraform Cloud workspace name."
- name: run_id
in: body
type: string
description: "The Terraform Cloud run ID to check."
steps:
- name: get-run-status
type: call
call: terraform.get-run
with:
run_id: "{{run_id}}"
- name: create-infra-bug
type: call
call: jira.create-issue
with:
project_key: "INFRA"
issuetype: "Bug"
summary: "Terraform run failed: {{workspace_name}} — {{run_id}}"
description: "Status: {{get-run-status.status}}. Message: {{get-run-status.status_timestamps}}. Workspace: {{workspace_name}}"
- name: alert-platform
type: call
call: msteams.send-message
with:
channel_id: "platform-ops"
text: "Terraform run FAILED: {{workspace_name}} | Run: {{run_id}} | Jira: {{create-infra-bug.key}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-run
method: GET
- type: http
namespace: jira
baseUri: "https://palantir.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.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Provisions new Foundry infrastructure environments by triggering Terraform Cloud runs, monitoring plan and apply phases, tagging resources in Foundry, and notifying the platform team via Slack.
naftiko: "0.5"
info:
label: "Terraform Foundry Infrastructure Provisioning Orchestrator"
description: "Provisions new Foundry infrastructure environments by triggering Terraform Cloud runs, monitoring plan and apply phases, tagging resources in Foundry, and notifying the platform team via Slack."
tags:
- data-analytics
- infrastructure
- terraform
- foundry
- slack
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-foundry-infra
description: "Orchestrate Foundry infrastructure provisioning via Terraform: plan, apply, tag, and notify."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Terraform Cloud workspace name."
- name: environment
in: body
type: string
description: "Target environment: dev, staging, or production."
steps:
- name: trigger-plan
type: call
call: "terraform.create-run"
with:
workspace: "{{workspace_name}}"
auto_apply: false
- name: get-plan-status
type: call
call: "terraform.get-run"
with:
run_id: "{{trigger-plan.run_id}}"
- name: tag-resources
type: call
call: "foundry.tag-infrastructure"
with:
environment: "{{environment}}"
run_id: "{{trigger-plan.run_id}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "platform-infra"
text: "Foundry infra provisioning for {{environment}}: Terraform run {{trigger-plan.run_id}} status {{get-plan-status.status}}. Resources: {{get-plan-status.resource_count}} planned."
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
- name: get-run
method: GET
- type: http
namespace: foundry
baseUri: "https://palantir.foundry.com/api/v2"
authentication:
type: bearer
token: "$secrets.foundry_token"
resources:
- name: infrastructure
path: "/infrastructure/tags"
operations:
- name: tag-infrastructure
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves Terraform workspace state for Foundry infrastructure.
naftiko: "0.5"
info:
label: "Terraform Foundry Workspace Lookup"
description: "Retrieves Terraform workspace state for Foundry infrastructure."
tags:
- infrastructure
- terraform
capability:
exposes:
- type: mcp
namespace: tf-state
port: 8080
tools:
- name: get-tf-workspace
description: "Look up Terraform workspace for Foundry infra."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Terraform workspace ID."
call: "terraform.get-state"
with:
workspace_id: "{{workspace_id}}"
outputParameters:
- name: state_version
type: string
mapping: "$.data.attributes.serial"
- name: resources
type: number
mapping: "$.data.attributes.resource-count"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/workspaces/{{workspace_id}}/current-state-version"
inputParameters:
- name: workspace_id
in: path
operations:
- name: get-state
method: GET
Retrieves worker profile details from Workday by employee ID. Use when an agent needs to resolve personnel metadata before performing downstream provisioning or analytics tasks.
naftiko: "0.5"
info:
label: "Workday Employee Lookup"
description: "Retrieves worker profile details from Workday by employee ID. Use when an agent needs to resolve personnel metadata before performing downstream provisioning or analytics tasks."
tags:
- hr
- workday
- lookup
capability:
exposes:
- type: mcp
namespace: hr-lookup
port: 8080
tools:
- name: get-worker
description: "Given a Workday employee ID, return the worker's full name, job title, department, cost center, and work email."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID (e.g., 'WD-00123') for the employee to look up."
call: workday.get-worker
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.workerData.person.preferredName.fullName"
- name: email
type: string
mapping: "$.worker.workerData.workContactInformation.emailAddresses[0].emailAddress"
- name: job_title
type: string
mapping: "$.worker.workerData.employmentData.positionData.jobTitle"
- name: department
type: string
mapping: "$.worker.workerData.employmentData.positionData.department"
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: "/palantir/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Exports a current headcount snapshot from Workday by department and posts the summary to the HR Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot"
description: "Exports a current headcount snapshot from Workday by department and posts the summary to the HR Microsoft Teams channel."
tags:
- hr
- workforce-planning
- workday
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Retrieve current active headcount from Workday grouped by department and post a formatted summary to the HR Teams channel."
inputParameters:
- name: as_of_date
in: body
type: string
description: "The date for the headcount snapshot in YYYY-MM-DD format."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID where the headcount summary should be posted."
steps:
- name: export-headcount
type: call
call: workday.list-workers
with:
status: "active"
as_of_date: "{{as_of_date}}"
- name: post-summary
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
text: "Headcount snapshot as of {{as_of_date}}: {{export-headcount.total}} active employees across {{export-headcount.department_count}} departments."
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: "/palantir/workers"
inputParameters:
- name: status
in: query
- name: as_of_date
in: query
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When an employee's role changes in Workday, updates their Okta group memberships to reflect the new access profile and notifies IT via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Role Change Provisioning"
description: "When an employee's role changes in Workday, updates their Okta group memberships to reflect the new access profile and notifies IT via Microsoft Teams."
tags:
- hr
- identity
- workday
- okta
- microsoft-teams
- access-management
capability:
exposes:
- type: mcp
namespace: hr-access-mgmt
port: 8080
tools:
- name: sync-role-access
description: "Given a Workday worker ID, old role, and new role, update Okta group memberships to match the new job profile and notify IT of the access changes in Teams."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the employee whose role changed."
- name: old_role
in: body
type: string
description: "The previous job role/title being vacated."
- name: new_role
in: body
type: string
description: "The new job role/title being assumed."
- name: old_okta_group
in: body
type: string
description: "The Okta group ID corresponding to the old role."
- name: new_okta_group
in: body
type: string
description: "The Okta group ID corresponding to the new role."
steps:
- name: get-employee
type: call
call: workday.get-worker
with:
worker_id: "{{worker_id}}"
- name: remove-old-group
type: call
call: okta.remove-user-from-group
with:
group_id: "{{old_okta_group}}"
user_email: "{{get-employee.email}}"
- name: add-new-group
type: call
call: okta.add-user-to-group
with:
group_id: "{{new_okta_group}}"
user_email: "{{get-employee.email}}"
- name: notify-it
type: call
call: msteams.send-message
with:
channel_id: "it-ops-channel"
text: "Role change for {{get-employee.full_name}}: {{old_role}} -> {{new_role}}. Okta groups updated."
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: "/palantir/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://palantir.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_key"
placement: header
resources:
- name: group-members-remove
path: "/groups/{{group_id}}/users/{{user_email}}"
inputParameters:
- name: group_id
in: path
- name: user_email
in: path
operations:
- name: remove-user-from-group
method: DELETE
- name: group-members-add
path: "/groups/{{group_id}}/users/{{user_email}}"
inputParameters:
- name: group_id
in: path
- name: user_email
in: path
operations:
- name: add-user-to-group
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msteams_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST