{"apiVersion":"v1","directorySlug":"apilabs-mcp-2dc36a681d","title":"apilabs.ai | One Control Layer — The OS for APIs and MCPs","description":"Secure, test, and govern agentic API and MCP workflows across MCP Gateway, Cursor, Claude Code, terminals, and Postman. Enforce deterministic guardrails with SuperContracts.","pageUrl":"https://www.mcpbundles.com/skills/apilabs-mcp-2dc36a681d","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.apilabs.ai/mcp","hostedMcpUrl":null,"toolCount":19,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"ai.apilabs/apilabs-mcp-2dc36a681d","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"decide_approval","description":"Approve or reject a pending SuperContracts approval token.","inputSchema":{"type":"object","required":["token","status"],"properties":{"token":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"approver":{"type":"string"}},"additionalProperties":false},"logicalName":"decide_approval","displayName":"decide_approval","title":"decide_approval","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_approval_status","description":"Get status of a SuperContracts approval token (pending, approved, rejected, expired).","inputSchema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"}},"additionalProperties":false},"logicalName":"get_approval_status","displayName":"get_approval_status","title":"get_approval_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_contract","description":"Load the YAML content of a saved contract by connection_id from list_contracts. Use before run_contract when working with saved files. Returns folder_path/parent_folder_id — pass the same connection_id to run_contract so artifacts save beside the YAML.","inputSchema":{"type":"object","required":["connection_id"],"properties":{"connection_id":{"type":"string"}},"additionalProperties":false},"logicalName":"get_contract","displayName":"get_contract","title":"get_contract","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_run","description":"Fetch full details for a single test run by run_id, including assertions, response body, and AI context. Use after run_contract or list_test_runs.","inputSchema":{"type":"object","required":["run_id"],"properties":{"run_id":{"type":"string"}},"additionalProperties":false},"logicalName":"get_run","displayName":"get_run","title":"get_run","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_skill","description":"Load one Skill Register entry by id, name, or domain. Returns domains (api_endpoint, mcp_endpoint, auth_secret_arn per row), guardrail_yaml, and endpoint_kind. Use before run_skill to understand guardrails and upstream connectivity.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string"},"include_guardrail_yaml":{"type":["null","boolean"]}},"additionalProperties":false},"logicalName":"get_skill","displayName":"get_skill","title":"get_skill","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"invoke_guarded","description":"Normalize → evaluate SuperContract guardrails → on ALLOW execute via connector (REST or upstream MCP). Matching Skill Register policies are auto-attached by domain. BLOCK returns denied with reason. Pass contract_yaml, action, args. When a skill is attached, a Skills/<skill_name>/__response.json audit artifact is saved in Explorer.","inputSchema":{"type":"object","required":["contract_yaml"],"properties":{"args":{"type":"object","additionalProperties":true},"action":{"type":"string"},"contract_yaml":{"type":"string"}},"additionalProperties":false},"logicalName":"invoke_guarded","displayName":"invoke_guarded","title":"invoke_guarded","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_contracts","description":"List saved contract YAML files under API Contract Model and SQL Analytics, grouped by Explorer folder. Use before get_contract or save_contract.","inputSchema":{"type":"object","properties":{"kind":{"type":"string"}},"additionalProperties":false},"logicalName":"list_contracts","displayName":"list_contracts","title":"list_contracts","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_guarded_tools","description":"List tools declared in a github_guarded_service SuperContract YAML. Agents should only call SUCO tools, not raw provider tools.","inputSchema":{"type":"object","required":["contract_yaml"],"properties":{"args":{"type":"object","additionalProperties":true},"action":{"type":"string"},"contract_yaml":{"type":"string"}},"additionalProperties":false},"logicalName":"list_guarded_tools","displayName":"list_guarded_tools","title":"list_guarded_tools","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_skill_tools","description":"List MCP tools available on a skill's mcp_endpoint. Intent aliases from skill YAML (intents.<name>.tool) are listed first; use those names as run_skill action.","inputSchema":{"type":"object","required":["skill"],"properties":{"skill":{"type":"string"},"domain":{"type":"string"}},"additionalProperties":false},"logicalName":"list_skill_tools","displayName":"list_skill_tools","title":"list_skill_tools","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_skills","description":"List skills from Skill Register for chat execution. A skill can cover one or more domains with api_endpoint and/or mcp_endpoint. Filter by name, domain, kind, tag, and/or free-text q. endpoint_kind shows MCP, REST, or —.","inputSchema":{"type":"object","properties":{"q":{"type":"string"},"tag":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string"},"enabled_only":{"type":["null","boolean"]}},"additionalProperties":false},"logicalName":"list_skills","displayName":"list_skills","title":"list_skills","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_test_runs","description":"List recent API/contract test run history with optional archive and status filters. Use after run_contract to find runs or to browse past results.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer"},"cursor":{"type":"string"},"status":{"type":"string"},"archived":{"type":"string"}},"additionalProperties":false},"logicalName":"list_test_runs","displayName":"list_test_runs","title":"list_test_runs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"request_approval","description":"Create a pending SuperContracts approval for a production/write action. Returns approval token for later resume.","inputSchema":{"type":"object","required":["contract_yaml"],"properties":{"effect":{"type":"string"},"payload":{"type":"object","additionalProperties":true},"trace_id":{"type":"string"},"operation":{"type":"string"},"requester":{"type":"string"},"environment":{"type":"string"},"contract_yaml":{"type":"string"}},"additionalProperties":false},"logicalName":"request_approval","displayName":"request_approval","title":"request_approval","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"resolve_resource","description":"Resolve an apilabs ARN (file, secret, or method) to metadata without exposing secrets. Use when a contract or script references an ARN.","inputSchema":{"type":"object","required":["arn"],"properties":{"arn":{"type":"string"}},"additionalProperties":false},"logicalName":"resolve_resource","displayName":"resolve_resource","title":"resolve_resource","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"resolve_skill","description":"Resolve which Skill Register entry to use before run_skill when domain alone is ambiguous. Returns ux_state resolved (one match), not_found (zero), or skill_choice_required (multiple). When multiple skills share the domain, always returns skill_choice_required — action is a hint only and never auto-selects. When skill_choice_required, present candidates to the user and call run_skill with the chosen skill name.","inputSchema":{"type":"object","required":["domain"],"properties":{"q":{"type":"string"},"action":{"type":"string"},"domain":{"type":"string"}},"additionalProperties":false},"logicalName":"resolve_skill","displayName":"resolve_skill","title":"resolve_skill","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"run_contract","description":"Execute a SuperContracts contract YAML. Supports classic contracts and guarded-service YAML (supercontract + tools + when ALLOW/BLOCK). Matching Skill Register policies are auto-attached by contract domain (api.base_url / apis.*.base_url / service.name / connector.endpoint / provider). Optional skill: / skill param is an override only; Skill Register YAML is a policy pack and is not merged into the contract. Set auto_skills: false to opt out of domain matching. For guarded YAML pass action (or a","inputSchema":{"type":"object","properties":{"run":{"type":"string"},"args":{"type":"object","additionalProperties":true},"mode":{"type":"string"},"tags":{"type":["null","array"],"items":{"type":"string"}},"skill":{"type":"string"},"action":{"type":"string"},"intent":{"type":"string"},"prompt":{"type":"string"},"shadow":{"type":"boolean"},"agent_id":{"type":"string"},"trace_id":{"type":"string"},"environment":{"type":"string"},"folder_name":{"type":"string"},"triggered_by":{"type":"string"},"connection_id":{"type":"string"},"contract_yaml":{"type":"string"},"approval_token":{"type":"string"},"allow_auto_modify":{"type":"boolean"},"generate_ai_context":{"type":["null","boolean"]}},"additionalProperties":false},"logicalName":"run_contract","displayName":"run_contract","title":"run_contract","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"run_skill","description":"Execute a Skill Register entry from chat: evaluate guardrails, then call the skill's MCP or REST endpoint. Requires skill + action + args (parse amounts and HTTP fields from user text). Action is the guardrail intent (e.g. create_payment). If skill YAML has intents.<action>.tool, that MCP tool is called. Use resolve_skill first when multiple skills share a domain (e.g. stripe.com with stripe_payments vs stripe_refunds) — always ask the user; do not auto-pick from action. Use get_skill for guardr","inputSchema":{"type":"object","required":["skill"],"properties":{"args":{"type":"object","additionalProperties":true},"mode":{"type":"string"},"skill":{"type":"string"},"action":{"type":"string"},"domain":{"type":"string"},"prompt":{"type":"string"},"environment":{"type":"string"},"folder_name":{"type":"string"},"triggered_by":{"type":"string"},"contract_yaml":{"type":"string"},"approval_token":{"type":"string"},"generate_ai_context":{"type":["null","boolean"]}},"additionalProperties":false},"logicalName":"run_skill","displayName":"run_skill","title":"run_skill","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"save_contract","description":"Create or update a contract YAML file in API Contract Model. For new saves, pass folder_name to create or reuse a nested explorer folder.","inputSchema":{"type":"object","required":["file_name","content"],"properties":{"content":{"type":"string"},"file_name":{"type":"string"},"folder_name":{"type":"string"},"connection_id":{"type":"string"}},"additionalProperties":false},"logicalName":"save_contract","displayName":"save_contract","title":"save_contract","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_action","description":"Validate a SuperContracts action without executing. Supports classic and guarded-service (when ALLOW/BLOCK). Matching Skill Register policies are auto-attached by contract domain; optional skill param / skill: is an override only. Skill YAML is not merged. For guarded YAML pass action (or args.action). When multiple classic tests exist, pass run. Returns validated, denied, or approval_required.","inputSchema":{"type":"object","properties":{"run":{"type":"string"},"args":{"type":"object","additionalProperties":true},"skill":{"type":"string"},"action":{"type":"string"},"intent":{"type":"string"},"prompt":{"type":"string"},"agent_id":{"type":"string"},"environment":{"type":"string"},"triggered_by":{"type":"string"},"contract_yaml":{"type":"string"},"allow_auto_modify":{"type":"boolean"}},"additionalProperties":false},"logicalName":"validate_action","displayName":"validate_action","title":"validate_action","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_guarded","description":"Evaluate a guarded-service action (ALLOW/BLOCK) without executing. Matching Skill Register policies are auto-attached by domain. Pass contract_yaml, action, and args (e.g. branch).","inputSchema":{"type":"object","required":["contract_yaml"],"properties":{"args":{"type":"object","additionalProperties":true},"action":{"type":"string"},"contract_yaml":{"type":"string"}},"additionalProperties":false},"logicalName":"validate_guarded","displayName":"validate_guarded","title":"validate_guarded","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=apilabs-ai-One-Control-Layer-The-OS-for-APIs-and-MCPs&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuYXBpbGFicy5haS9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22apilabs-ai-One-Control-Layer-The-OS-for-APIs-and-MCPs%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.apilabs.ai%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22apilabs-ai-One-Control-Layer-The-OS-for-APIs-and-MCPs%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.apilabs.ai%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=apilabs.ai+%7C+One+Control+Layer+%E2%80%94+The+OS+for+APIs+and+MCPs&connectorUrl=https%3A%2F%2Fmcp.apilabs.ai%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"apilabs-ai-One-Control-Layer-The-OS-for-APIs-and-MCPs\" --url \"https://mcp.apilabs.ai/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/apilabs-mcp-2dc36a681d","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/apilabs-mcp-2dc36a681d/tools/{tool}","mcpServerUrl":"https://mcp.apilabs.ai/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/apilabs-mcp-2dc36a681d?live=1"}