Skills
A Skill is a curated, governed bundle of tools served over MCP as a narrowed view of your organisation’s tools, at its own endpoint URL. Instead of pointing an agent at every tool you’ve provisioned, you give it a focused, job-shaped surface — for example a “Finance Reporting” skill that exposes only read-only warehouse and invoice tools, with instructions and an approval policy baked in.
Skills are available on Growth plans and above.
Why use Skills
- Faster, safer agents. The agent sees only the tools relevant to its job, plus your instructions — less prompt confusion, fewer wrong tool calls.
- Least privilege. A skill can only narrow access. It can never expose a tool your org doesn’t already own.
- Escalate-only approval. A skill can add a human-approval gate to every call it serves, but can never remove a tool’s own approval requirement.
- One org, many surfaces. Run different skills for different teams or agents off the same connectors, each with its own endpoint.
How it works
A skill is served at:
https://mcp.apexmcp.ai/mcp/{your-org-slug}/skill/{skill-slug}Append /sse for SSE clients (Claude.ai, Claude Desktop, Cursor). Authentication is identical to your main MCP endpoint — the same API key or OAuth client. The skill only changes which tools are visible; it never widens what your credentials can reach.
When an agent connects to a skill endpoint:
initializereturns the skill’s instructions as the MCP server instructions.tools/listreturns only the skill’s member tools (plus the syntheticcheck_approval_status).tools/callrejects any non-member tool as “not found” — the narrowed view is opaque.- If the skill enables escalate approval, every call is held for human approval; otherwise each tool keeps its own approval setting.
Your bare endpoint (/mcp/{slug}) is unchanged and still serves all enabled tools.
Creating a skill (dashboard)
- Go to Dashboard → Skills → New Skill.
- Name it (the URL slug is derived automatically).
- Add instructions for the agent (surfaced on connect).
- Pick the tools to include, grouped by connector.
- Optionally enable Escalate — require approval for every call, with approver emails.
- Save, then copy the skill endpoint and connect your agent.
Configuration reference
| Field | Description |
|---|---|
name | Display name. |
slug | URL path segment, unique per org. Auto-derived from name if omitted. |
description | Optional summary. |
instructions | Sent to the client as the MCP server instructions on connect. |
tools | In-house tool ids included in the skill. |
external_tools | External-MCP tools included (connector_id + upstream tool_name). |
require_approval_all | When true, every call in the skill is held for human approval (escalate-only). |
approval_emails | Approvers notified when the skill adds the gate (defaults to org admins). |
enabled | Disable to take the skill endpoint offline (returns 404) without deleting it. |
Management API
Skills can be managed programmatically with the same credentials you use for MCP — an API key (X-API-Key) or an OAuth bearer token. The base path is:
https://mcp.apexmcp.ai/api/v1/skillsThe org is resolved from your credential; you never pass an org id.
| Method | Path | Description |
|---|---|---|
GET | /api/v1/skills | List skills (with member counts). |
POST | /api/v1/skills | Create a skill. Body: name (required), description, instructions, tools[], external_tools[], require_approval_all, approval_emails[]. |
GET | /api/v1/skills/{id} | Skill detail + membership. |
PATCH | /api/v1/skills/{id} | Update fields and/or membership. |
DELETE | /api/v1/skills/{id} | Delete a skill. |
Example — create a skill
curl -X POST https://mcp.apexmcp.ai/api/v1/skills \
-H "X-API-Key: $APEXMCP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Finance Reporting",
"instructions": "Answer finance questions over the warehouse. Never expose PII.",
"tools": ["<mcp_tool_id_1>", "<mcp_tool_id_2>"],
"require_approval_all": true,
"approval_emails": ["cfo@acme.com"]
}'Response includes the created skill, including its slug. Connect at
https://mcp.apexmcp.ai/mcp/{org-slug}/skill/{slug}.
Tool ids come from
GET /api/v1/skills/{id}on an existing skill, or from the dashboard tool list. External-MCP tools are referenced by{ "connector_id": "…", "tool_name": "…" }inexternal_tools.
Limitations
- Skills narrow only — they cannot grant access beyond what the org owns.
- Approval policy is escalate-only; a skill cannot remove a tool’s own approval requirement.
- A disabled or unknown skill endpoint fails closed (
404), never falling back to the full tool set. - The management API uses the same scope as MCP access; any valid org credential can manage skills. Use the dashboard role model if you need finer control over who authors skills.
Manage skills from inside an agent (MCP tools)
Skills can also be created and managed by an AI agent itself, via synthetic MCP tools on your base endpoint — skills_list, skills_get, skills_create, skills_update, skills_delete. This is off by default and gated two ways (both required):
- Per-org operations — an admin enables specific operations under Dashboard → MCP Endpoint → Skill management over MCP (Read / Create / Update / Delete). Only enabled operations appear as tools.
- Per-credential scope — the connecting API key (Developer → “Allow skill management”) or OAuth client must carry the
skills:managescope.
A tool is exposed only when its operation is enabled and the credential has the scope. Skill-scoped endpoints (/skill/{slug}) never expose these tools. skills_create/skills_update accept tool names (as seen in tools/list) or ids. Every mutation is audit-logged (skill.mcp_created|updated|deleted).
Caution: an agent with delete enabled can remove skills. Grant the narrowest set of operations needed.