WXO Builder MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WXO Builder MCP Server list my agents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WXO Builder MCP Server
Version 1.0.4 · Author Markus van Kempen · Date 2026-02-20
MCP server for IBM Watson Orchestrate (WXO). Manage tools, agents, connections, flows, and execute tools from Cursor, VS Code Copilot, Claude Desktop, Antigravity, Windsurf, or the WxO Builder extension.
markusvankempen.github.io · WxO Builder extension · CONTRIBUTING · CHANGELOG · PUBLISHING · LICENSE
Architecture & Data Flow
This package has a dual role:
MCP protocol: It acts as an MCP server — your AI environment (Cursor, Claude Desktop, VS Code Copilot, Antigravity, Windsurf, etc.) is the MCP client that connects to it and calls tools.
Watson Orchestrate: It acts as an HTTP client — it makes REST requests to your Watson Orchestrate instance. Watson Orchestrate never connects back to this process.
┌─────────────────────────────────┐ MCP protocol ┌──────────────────────────┐ HTTP (REST API) ┌─────────────────────────┐
│ MCP Client │ ◄──────────────────► │ WXO Builder MCP Server │ ───────────────────► │ Watson Orchestrate │
│ (Cursor, Claude Desktop, │ tool calls │ (this package) │ /v1/orchestrate/* │ instance │
│ Copilot, Antigravity, etc.) │ │ │ │ (your WO cloud/hosted) │
└─────────────────────────────────┘ └──────────────────────────┘ └─────────────────────────┘The MCP server exposes tools that proxy operations to Watson Orchestrate. When you invoke a tool (e.g. list_skills, invoke_agent), the server forwards the request to the Watson Orchestrate API and returns the result.
Related MCP server: Taskade MCP Server
Related: WxO Builder Extension + MCP Server – a perfect combo
The WxO Builder extension and this MCP Server work together to create and administer Watson Orchestrate directly from your IDE. Use the extension for visual editing and the MCP server for AI-powered workflows (Cursor, Claude Desktop, etc.).
Link | |
WxO Builder extension | |
Open VSX | |
Author | |
MCP Registry | |
Source Code |
The extension provides visual tool creation, drag-and-drop agent editing, and local/remote testing. The MCP server exposes the same Watson Orchestrate capabilities to AI assistants in Cursor, Claude Desktop, Antigravity, Windsurf, and VS Code Copilot.
Directory listing copy (cursor.directory, etc.)
Cursor Deep Link (use this so the install dialog shows "WxO Builder MCP Server"):
cursor://anysphere.cursor-deeplink/mcp/install?name=WxO%20Builder%20MCP%20Server&config=eyJXeE8gQnVpbGRlciBNQ1AgU2VydmVyIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiQG1hcmt1c3ZhbmtlbXBlbi93eG8tYnVpbGRlci1tY3Atc2VydmVyIl0sImVudiI6eyJXT19BUElfS0VZIjoieW91ci1hcGkta2V5IiwiV09fSU5TVEFOQ0VfVVJMIjoiaHR0cHM6Ly95b3VyLWluc3RhbmNlLm9yY2hlc3RyYXRlLmlibS5jb20ifX19Config JSON for Cursor deeplink generator:
{
"WxO Builder MCP Server": {
"command": "npx",
"args": ["-y", "wxo-builder-mcp-server"],
"env": {
"WO_API_KEY": "your-api-key",
"WO_INSTANCE_URL": "https://your-instance.orchestrate.ibm.com",
"WO_AGENT_IDs": "agent-id-1,agent-id-2"
}
}
}When WO_AGENT_IDs (comma-separated list) or WO_AGENT_ID is set, agent-based tools use the first ID as default when the user does not specify an agent.
Short description (≤100 chars):
Manage Watson Orchestrate tools, agents, connections. Pair with WxO Builder extension.
Longer description:
Manage IBM Watson Orchestrate (WXO) tools, agents, connections, and flows from Cursor, Copilot, or Claude. Best used with the WxO Builder VS Code extension for a full IDE experience: visual tool creation, drag-and-drop agents, and local/remote testing.
Distribution options:
npm – Install
wxo-builder-mcp-server(recommended)MCP Registry – registry.modelcontextprotocol.io/?q=wxo-builder-mcp-server
Standalone repo – github.com/markusvankempen/wxo-builder-mcp-server for cloning just the MCP server
Devkit – This package is also part of the watsonx-orchestrate-devkit at
packages/wxo-builder-mcp-server(shared with the WxO Builder extension)
Install from npm
npm install wxo-builder-mcp-serverOne-click install in Cursor
Add to Cursor — Click to install (shows "WxO Builder MCP Server"). Then set WO_API_KEY and WO_INSTANCE_URL in Cursor MCP settings.
Quick Start
Set environment variables (or use
.env):
WO_API_KEY=<your_ibm_cloud_api_key>
WO_INSTANCE_URL=https://<your-instance-id>.orchestrate.ibm.com
# Optional: default agent(s) when user omits agent_id/agent_name (first is used)
WO_AGENT_IDs=agent-id-1,agent-id-2
# Or single agent (backwards compatible):
# WO_AGENT_ID=<your-agent-id>When WO_AGENT_IDs (comma-separated) or WO_AGENT_ID is set, tools use the first ID as default when the user does not specify an agent.
Configure your MCP client – use
npxso you never reference.jspaths. Example for Cursor (.cursor/mcp.json):
{
"mcpServers": {
"watsonx": {
"command": "npx",
"args": ["-y", "wxo-builder-mcp-server"],
"env": {
"WO_API_KEY": "your-api-key",
"WO_INSTANCE_URL": "https://xxx.orchestrate.ibm.com"
}
}
}
}VS Code Copilot uses servers instead of mcpServers; same command and args:
{
"servers": {
"watsonx": {
"type": "stdio",
"command": "npx",
"args": ["-y", "wxo-builder-mcp-server"],
"env": {
"WO_API_KEY": "...",
"WO_INSTANCE_URL": "https://...orchestrate.ibm.com"
}
}
}
}Example configs
Copy-ready example files are in examples/:
File | Use for |
| VS Code / GitHub Copilot → copy to |
| Cursor → copy to |
| Claude Desktop → merge into |
| Antigravity → add to |
| Windsurf → copy to |
| Optional |
See examples/README.md for details.
Features (Parity with VS Code Extension)
OpenAPI Spec
watson-orchestrate-openapi.json– OpenAPI 3.0 spec describing the Watson Orchestrate REST API used by this MCP server (tools, agents, connections, flows, runs). Useget_api_specto retrieve it.get_api_spec– Returns the OpenAPI spec (full or summary). Use to discover what operations the Watson Orchestrate instance supports.
Tools (Skills)
list_skills– List all tools in the catalog (default limit 100)list_tools_with_connections– List tools grouped by connection status (tools with connections vs standard tools). Matches the extension Tools view. Use for prompts like “list my Watson Orchestrate tools with active connections”.list_standard_tools– List only standard tools (no connections). Returns accurate count and list.get_skill– Get a tool by IDdelete_skill– Delete a tooldeploy_skill– Create a tool from OpenAPI spec. Setopenapi_spec["x-ibm-connection-id"]to bind a connection to the tooldeploy_tool_from_url– Create a tool from a URL. Handles (1) APIs with API key → auto-creates connection, (2) public APIs (REST Countries, Open-Meteo) → no auth.create_python_tool_from_tool_spec_json– Create a Python tool fromtool-spec.jsoncontent. Pass the raw JSON string pluspython_codeandrequirements. Use when user says "create a tool from this tool-spec.json" (e.g. CreatingZipFileBasedonDocuments).create_python_tool_and_upload– Create a Python tool and upload its artifact in one step.tool_spec,python_code, optionalrequirements,python_filename.create_tool_and_assign_to_agent– Create a tool from URL and assign to agent in one step.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.assign_tool_to_agent– Assign a tool to an agent.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.update_skill– Update name, description, permission (binding/connection not editable after creation)copy_skill– Copy a tool. Usenew_name(e.g. "MVKWeatherV2") to name the copy. Keeps connection and parameters. Names: letters, digits, underscores only.execute_tool– Execute a tool by name or ID.agent_idoptional; uses first fromWO_AGENT_IDswhen omitted.
Agents
list_agents– List all agentsget_agent– Get agent by ID or name.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.get_agent_chat_starter_settings– Get welcome message and quick prompts.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.update_agent_chat_starter_settings– Updatewelcome_messageandquick_prompts.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.list_agent_tools– List tools assigned to an agent with display names.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.create_agent– Create an agent. Passtoolsarray to assign tools to the agentupdate_agent– Update an agent.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.update_agent_instructions_from_tools– Auto-generate and set instructions from assigned tools.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.invoke_agent– Chat with an agent.agent_id/agent_nameoptional ifWO_AGENT_IDsis set.delete_agent– Delete an agent
Connections
list_connectors– List available connector cataloglist_connections– List configured connections (scope: draft, live, all)list_active_live_connections– List only active and live connections (not tools), deduplicated. Use for "list all connections which are active and live, just the connections".get_connection– Get connection by app_idcreate_connection– Create a connection entrydelete_connection– Delete a connectionconfigure_connection– Set credentials (api_key, basic, bearer) for a connection
Flows
list_flows,get_flow,create_flow,delete_flow
Client Compatibility
The MCP server is tested and works with:
Client | Config | Notes |
Cursor |
| stdio, npx or node |
VS Code Copilot |
| Use |
Antigravity |
| Add via Manage MCP Servers |
Langflow | STDIO or JSON mode | Output flattened for DataFrame; list tools have no limit/offset params |
Langflow: Tool output is normalized to a list of flat dicts (primitive values only) so the MCP Tools component's DataFrame validation passes. Nested objects (e.g. binding, input_schema) are JSON-stringified. Cursor, VS Code, and Antigravity receive the same format and work identically.
Verification: Run npm run test:integration with WO_API_KEY and WO_INSTANCE_URL to validate core functionality. For Cursor/VS Code: add the server, ask "List my Watson Orchestrate tools" or "Which agents do I have?" For Langflow: add MCP server, connect MCP Tools to an Agent, run the flow.
Configuration
Set these environment variables (or use a .env file):
WO_API_KEY=<your_ibm_cloud_api_key>
WO_INSTANCE_URL=https://<your-instance-id>.orchestrate.ibm.com
# Optional: default agent(s) when user omits agent_id/agent_name (first is used)
WO_AGENT_IDs=agent-id-1,agent-id-2See Quick Start for full details on WO_AGENT_IDs and WO_AGENT_ID.
Troubleshooting
"Process exited with code 2" / "MCP server could not be started"
Ensure credentials are set –
WO_API_KEYandWO_INSTANCE_URLmust be in your MCP configenvblock or in a.envfile.Verify the server runs manually – From a terminal:
WO_API_KEY=your-key WO_INSTANCE_URL=https://xxx.orchestrate.ibm.com npx -y wxo-builder-mcp-serverIt should start and wait. Press Ctrl+C to exit.
Check Node version – Requires Node.js 18+.
WxO Builder extension – Ensure API Key and Instance URL are set in extension settings (search
wxo-builderin VS Code settings).
Running Locally
npm install
npm run build
node dist/index.jsIntegration Tests
The test suite validates MCP parity with the extension using user-style test questions. See tests/README.md for full documentation. Test questions are defined in tests/test-questions.ts – add new ones to extend validation.
# With WO credentials (runs all 4 tests)
WO_API_KEY=... WO_INSTANCE_URL=... npm run test:integration
# Without WO credentials (runs local execution test only)
npm run test:integrationTest questions: List live connections | Copy tool | List standard tools | Create MVKWeather from URL | Execute locally/remotely | Agent chat | Exchange rate | REST Countries + assign | List agent tools | Create tool from tool-spec.json (CreatingZipFileBasedonDocuments) | Agent Conversation ZIP | Download tool artifact
Assigning Tools to Agents
Use create_agent or update_agent with a tools array of tool IDs:
{
"name": "My Agent",
"description": "...",
"model_id": "groq/openai/gpt-oss-120b",
"instructions": "...",
"tools": ["tool-id-1", "tool-id-2"]
}Assigning Connections to Tools
When deploying a tool with deploy_skill, include x-ibm-connection-id in the OpenAPI spec (or the connection’s app_id) to bind a connection:
{
"tool_spec": { "name": "my_tool", "description": "..." },
"openapi_spec": {
"openapi": "3.0.1",
"info": { "title": "My Tool", "version": "1.0.0" },
"x-ibm-connection-id": "YOUR_APP_ID",
"paths": { ... }
}
}Editor configuration (VS Code, Cursor, Claude Desktop, Antigravity, Windsurf)
Important: MCP config does not go in VS Code settings.json. Use the correct config file for your editor.
VS Code (with GitHub Copilot)
Config file: .vscode/mcp.json (workspace) or run MCP: Open User Configuration for global. Use npx (no .js path needed):
{
"servers": {
"watsonx": {
"type": "stdio",
"command": "npx",
"args": ["-y", "wxo-builder-mcp-server"],
"env": {
"WO_API_KEY": "...",
"WO_INSTANCE_URL": "https://...orchestrate.ibm.com"
}
}
}
}Cursor
Config file: .cursor/mcp.json (project) or ~/.cursor/mcp.json (global). Uses mcpServers (not servers). Same command and args as above.
Antigravity (Google)
Open Manage MCP Servers → View raw config and add the watsonx entry from examples/antigravity-mcp-config.json to your mcp_config.json. Same mcpServers format as Cursor.
Windsurf (Codeium)
Config file: ~/.codeium/windsurf/mcp_config.json (macOS/Linux) or %USERPROFILE%\.codeium\windsurf\mcp_config.json (Windows). Use examples/windsurf-mcp-config.json. Same mcpServers format as Cursor. Restart Windsurf after changes.
Alternative: WxO Builder extension bundled server
If you installed the WxO Builder VSIX and want to use its bundled server (no npm install), use the extension path:
"command": "node",
"args": ["/Users/YOUR_USERNAME/.vscode/extensions/markusvankempen.wxo-builder-0.0.6/server/dist/index.js"]Local build (devkit or standalone repo)
If you clone the devkit or the standalone repo, build and run via npx using the package directory (no .js path):
cd packages/wxo-builder-mcp-server # devkit
# or
cd wxo-builder-mcp-server # standalone repo
npm install && npm run build{
"servers": {
"watsonx": {
"type": "stdio",
"command": "npx",
"args": ["-y", "/path/to/wxo-builder-mcp-server"],
"env": {
"WO_API_KEY": "...",
"WO_INSTANCE_URL": "https://...orchestrate.ibm.com"
}
}
}
}Publishing (for maintainers)
Publish to npm
From the devkit or standalone repo:
cd packages/wxo-builder-mcp-server # devkit
# or
cd . # standalone repo root
npm run build
npm publish --access publicPublish to MCP Registry
Install the MCP publisher CLI:
brew install mcp-publisherLog in:
mcp-publisher login githubUpdate
server.jsonversion to matchpackage.jsonPublish:
mcp-publisher publish
The server will appear at registry.modelcontextprotocol.io as io.github.markusvankempen/wxo-builder-mcp-server.
Implementation: TypeScript vs Node.js
This MCP server is written in TypeScript and compiled to JavaScript. It loads an OpenAPI spec (watson-orchestrate-openapi.json) for documentation and discovery.
Why TypeScript for Watson Orchestrate:
Larger codebase (skills, agents, connections, flows, auth, models)
Type safety for Watson Orchestrate’s varied API responses
Easier to maintain and extend across multiple modules
License
Apache-2.0 — See LICENSE. CONTRIBUTING · CHANGELOG
Available Tools
35 toolsassign_tool_to_agentA
Assign a tool to an agent (add to toolkit). Use tool_name or tool_id, agent_name or agent_id. For "assign REST Countries to TimeWeatherAgent" – use MCP, not ADK.
Inputs: tool_id, agent_id, tool_name, agent_name.
configure_connectionC
Configure connection credentials (api_key, basic, bearer)
Inputs: kind (required), app_id (required), env, token, +4 more.
copy_skillA
Copy a tool. Creates a new tool with same spec and connection. Use new_name (e.g. "MVKWeatherV2") for a custom name. Names must use only letters, digits, underscores.
Inputs: skill_id (required), new_name, skill_name.
create_agentC
Create an agent. Pass tools array to assign tool IDs.
Inputs: name (required), model_id (required), description (required), instructions (required), +1 more.
create_connectionB
Create a connection. Then use configure_connection for credentials.
Inputs: app_id (required), display_name.
create_flowC
Create or update a flow
Inputs: flow_json (required).
create_tool_and_assign_to_agentA
Create a tool from URL and assign to agent – ONE step. Use for 'create REST Countries tool and assign to TimeWeatherAgent'. Works with public APIs (no auth) and APIs with keys. Use this MCP tool, do NOT use ADK.
Inputs: url (required), tool_name (required), agent_name (required), description.
delete_agentB
Delete an agent by ID
Inputs: agent_id (required).
delete_connectionB
Delete a connection by app_id
Inputs: app_id (required).
delete_flowB
Delete a flow by ID
Inputs: flow_id (required).
delete_skillB
Delete a skill by ID
Inputs: skill_id (required).
deploy_skillC
Deploy a tool from OpenAPI spec. Set openapi_spec["x-ibm-connection-id"] to bind a connection.
Inputs: tool_spec (required), openapi_spec (required).
deploy_tool_from_urlA
Create a tool from a URL. Works with: (1) APIs with API key – auto-creates connection, (2) Public APIs (REST Countries, Open-Meteo) – no auth needed. Use this MCP tool, NOT ADK.
Inputs: url (required), tool_name (required), description.
execute_toolA
Execute a Watson Orchestrate tool by name or ID. Use for prompts like "execute News Search Tool" or "run the Weather tool". Resolves tool names (e.g. "News Search Tool") to IDs, ensures an agent has the tool, then invokes it. Pass parameters as a JSON object if the tool requires them.
Inputs: tool_id, agent_id, tool_name, parameters.
get_agentA
Get agent details by ID. Returns config, assigned tools, instructions, and model.
Inputs: agent_id (required).
get_agent_chat_starter_settingsA
Get chat starter settings for an agent: welcome message and quick prompts. Use agent_id or agent_name.
Inputs: agent_id, agent_name.
get_api_specA
Get the Watson Orchestrate OpenAPI spec. Describes all REST endpoints the MCP server uses (tools, agents, connections, flows, runs). Use to understand what operations the Watson Orchestrate instance supports.
Inputs: format.
get_connectionC
Get a connection by app_id
Inputs: app_id (required).
get_flowB
Get a flow by ID
Inputs: flow_id (required).
get_skillA
Get a specific skill/tool by ID. Returns tool details including display name, description, and binding.
Inputs: skill_id (required).
invoke_agentA
Chat with an agent. Use agent_name (e.g. "TimeWeatherAgent") or agent_id. For "ask TimeWeatherAgent what the exchange rate is CAD/USD" – use agent_name and message. Runs behind the scenes, no script needed.
Inputs: message (required), agent_id, agent_name.
list_active_live_connectionsA
List only active and live connections (not tools). Returns deduplicated connection names. Use for 'list all connections which are active and live, just the connections not the tools'.
Inputs: no named parameters.
list_agentsC
List all available agents
Inputs: limit, offset.
list_agent_toolsA
List tools assigned to an agent, with display names and descriptions when available. Use agent_name (e.g. "TimeWeatherAgent") or agent_id. For "which tools are assigned to TimeWeatherAgent". Returns accurate tool list from Watson Orchestrate.
Inputs: agent_id, agent_name.
list_connectionsB
List configured connections (scope: draft, live, or all)
Inputs: scope.
list_connectorsC
List available connector applications from the catalog
Inputs: limit.
list_flowsC
List all available flows
Inputs: limit, offset.
list_skillsC
List all available tools/skills in the Watson Orchestrate catalog
Inputs: limit, offset.
list_standard_toolsA
List only standard tools (tools with no connections). Returns accurate count and list from Watson Orchestrate. Use for 'list standard tools' or 'tools with no connections' – tools with empty/missing security and connection_id. Do not guess; use this tool for accurate data.
Inputs: limit.
list_tools_with_connectionsA
List Watson Orchestrate tools grouped by connection status: tools that require an API key/OAuth connection vs standard tools. Matches the extension Tools view. Use for prompts like "list my tools with active connections".
Inputs: limit.
test_tool_localA
Test an API endpoint locally (direct HTTP GET). Use for "run locally" or "test locally". Does not go through Watson Orchestrate.
Inputs: url (required), params.
update_agentA
Update an agent. Use agent_name (e.g. "TimeWeatherAgent") or agent_id. Pass payload with instructions, tools, description, etc. For "update TimeWeatherAgent instructions" use agent_name and payload: { instructions: "..." }.
Inputs: payload (required), agent_id, agent_name.
update_agent_chat_starter_settingsB
Update chat starter settings: welcome_message, quick_prompts (array of {title, prompt}). Use agent_id or agent_name.
Inputs: agent_id, agent_name, quick_prompts, welcome_message.
update_agent_instructions_from_toolsA
Update an agent's instructions based on its assigned tools. Fetches tools, builds helpful instructions, and patches the agent. Use for "update TimeWeatherAgent instructions based on its tools".
Inputs: agent_id, agent_name.
update_skillC
Update a tool (name, display_name, description, permission)
Inputs: skill_id (required), skill_json (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 35 tools
There are overlapping list tools (list_skills, list_standard_tools, list_tools_with_connections) that could cause confusion, and execute_tool vs test_tool_local both invoke functionality but through different paths. However, the detailed descriptions with usage hints help an agent differentiate between them.
All tool names follow a consistent verb_noun snake_case pattern (e.g., list_agents, get_agent, create_connection, delete_flow). Even compound names like create_tool_and_assign_to_agent and update_agent_instructions_from_tools maintain the pattern, making the naming predictable and uniform.
With 35 tools, the server is on the heavy side, but the scope is broad, covering agents, skills/tools, connections, and flows. Some tools could be consolidated (e.g., list_standard_tools and list_tools_with_connections overlap with list_skills), but the count is justifiable for a comprehensive builder API.
The tool surface is exceptionally complete for the stated domain. It covers full CRUD lifecycle for agents (list, create, get, update, delete, invoke), skills/tools (list, get, deploy, update, delete, copy, execute, assign), connections (list, get, create, configure, delete), and flows (list, create, get, delete) plus API discovery via get_api_spec. No obvious gaps or dead ends are present.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
Official Rewst MCP server: build, run, and debug Rewst workflows, forms, apps, and integrations.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP gateway that lifts watsonx Orchestrate Slack limitations — every-message wake-up, multi-channel→multi-agent routing, clean in-thread replies, and a streamable-http toolkit for WxO + Cursor / VS Code / Bob / Antigravity — without replacing your agents.80 npmApache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants like Claude, Cursor, VS Code, and Windsurf to manage workspaces, projects, tasks, and AI agents through natural language, with a hosted OAuth server or a local stdio package. Also supports generating MCP tools from any OpenAPI spec.2,203 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients such as Claude, Cursor, VS Code, and Windsurf to list and manage workspaces, projects, tasks, AI agents, and automations through a hosted OAuth-secured endpoint or a local stdio package. Also generates MCP tools from any OpenAPI spec.2,203 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients such as Claude, Cursor, VS Code, and Windsurf to manage workspaces, projects, tasks, AI agents, and app files through hosted OAuth or local stdio tools. It also includes OpenAPI codegen for generating MCP tools from any OpenAPI specification.2,203 npmMIT