Sign in
Free tools need no keyMCP over Streamable HTTPRead-only catalog API

Use the hub from your coding agent

Skill Manifest runs an MCP server and a read-only catalog API. Add the server to Claude Code, Cursor, VS Code, Codex or any MCP client, and your agent can search a reviewed catalog of skills, agents, prompts, workflows, MCP servers and plugins before it writes one from scratch.

Quick start

One address, and nothing to sign up for to search.

MCP endpoint

https://skillmanifest.co/mcp

  • The four free tools (search, read, compare, list categories) need no key and no account. Each address gets 60 calls a minute.
  • Three more tools (picks for a task, research reports) need a member key and use that member's daily AI allowance.
  • Speaks JSON-RPC 2.0 over POST, with JSON responses and no sessions. Protocol versions 2026-07-28, 2025-11-25, 2025-06-18 and 2025-03-26.

Copy the line for your client

Those are the free setups. For the member-key tools, switch the install section below to “With a member key”, or make a key on the Connect page and its snippets already hold it.

Install for your client

Pick your tool. Every snippet has a copy button; Cursor and VS Code also have a one-click link.

Anthropic's terminal and IDE agent.

Every project (user scope)
claude mcp add --transport http --scope user skill-manifest https://skillmanifest.co/mcp
Only this project, shared through git (.mcp.json)
claude mcp add --transport http --scope project skill-manifest https://skillmanifest.co/mcp
Or install the plugin
/plugin marketplace add alexmofidi/claud-code-advanced-antigravityresearch
/plugin install skill-manifest@skill-manifest

Type these inside Claude Code. The plugin adds the server, a skill that tells Claude when to use the hub, and a /hub command. It asks for the hub address and, optionally, your key (kept in your system's credential store).

  • --scope user makes the hub available in every project; --scope project writes .mcp.json, which you can commit for your team.
  • Check with claude mcp list: skill-manifest should say Connected.

Claude Code: connect to tools with MCPFormat checked against the official documentation on 28 Oct 2026.

Tools reference

Generated from the server's own tool list: the same names, descriptions and inputs that tools/list returns.

search_catalog

Free, no key

Search the Skill Manifest hub

Search the Skill Manifest hub: a curated, human-reviewed catalog of reusable parts for AI coding agents (skills, agents and subagents, prompts and slash commands, CLAUDE.md and rules files, workflows, MCP servers, plugins and hooks), for coding (web, backend, data and AI, DevOps, testing and security) and for non-coding work (writing, images and video, social media, business, research). Use it before writing a new skill, agent, prompt or workflow from scratch, and before searching the web for Claude Code add-ons. Returns ranked matches, reviewed items first, each with an id, a one-line summary and a link; then call get_component with an id for details and install steps. Free, no key needed, fast. For a ranked plan for a whole task, use recommend_for_task instead.

  • Read only
  • Same input, same result
  • Hub data only

Inputs

  • querystringoptional

    What you need, in plain words, such as "code review" or "post videos to YouTube". Empty lists the best-reviewed items.

  • typestringoptional

    Only one type: skills, prompts (includes CLAUDE.md and rules), workflows, agents, or add-ons (MCP servers, plugins, hooks, settings).

    One of: skillspromptsworkflowsagentsadd-ons

  • domainstringoptional

    Only one domain, such as web-ui, backend, images-video or business-ops.

    One of: web-uibackenddata-aidevopstesting-securityeveryday-codingmobile-gamesdocs-learningwriting-contentimages-videosocial-marketingbusiness-opsresearch

  • works_withstringoptional

    Only components that work with this agent, such as claude-code.

    One of: claude-codecodexcursorcopilotantigravitydevinclinerookiroany

  • limitintegeroptionaldefault 81 to 15
  • include_unreviewedbooleanoptionaldefault false

    Also return items no one has reviewed yet (they are labelled).

get_component

Free, no key

Read a hub component

Read one component of the Skill Manifest hub by its id (from search_catalog): what it does, its source repository, revision and licence, whether it is reviewed, which agents it works with, its risks, and how to install it in Claude Code. detail="summary" (default) is short; "install" adds the install steps and files; "full" also returns the component's own text, which is third-party content shown as untrusted data and shortened when long. Free, no key needed.

  • Read only
  • Same input, same result
  • Hub data only

Inputs

  • idstringrequired

    A component id from search_catalog or recommend_for_task.

  • detailstringoptionaldefault summary

    One of: summaryinstallfull

compare_components

Free, no key

Compare hub components

Compare 2 to 4 components of the Skill Manifest hub side by side (goal, workflow, how much the user is involved, outputs, dependencies, context cost, trade-offs and evidence) to choose between similar skills, agents, workflows or MCP servers. Ids come from search_catalog. A blank cell means the catalog has no reviewed evidence for it. Free, no key needed.

  • Read only
  • Same input, same result
  • Hub data only

Inputs

  • idsarray of stringrequired2 to 4 items

    Two to four component ids.

list_categories

Free, no key

List what the hub covers

List what the Skill Manifest hub covers: the five types (Skills, Prompts, Workflows, Agents, Add-ons), the domains (such as Web & UI, Backend & APIs, Images & Video, Social & Marketing, Business & Ops) and the agents components work with, with how many components each holds. Use it to see what exists, or to pick filters for search_catalog. Free, no key needed.

  • Read only
  • Same input, same result
  • Hub data only

Inputs

None.

recommend_for_task

Needs a member key

Recommend hub components for a task

Get a short, ranked list of what to install from the Skill Manifest hub for a concrete task, for example "what should I install for a FastAPI + React project?" or "skills for making YouTube videos". One AI call reviews the best catalog matches and returns picks with why each fits, the install order, and the gaps where the hub has nothing good. Answers in seconds. Needs a member API key (Authorization: Bearer acw_..., made on the hub's Connect to Claude Code page) and uses a little of that member's daily AI allowance.

  • Read only
  • May give a different result
  • Hub data only

Inputs

  • taskstringrequired

    The task or project, in a sentence or two.

  • agentstringoptionaldefault claude-code

    The agent the picks are for.

    One of: claude-codecodexcursorcopilotantigravitydevinclinerookiroany

  • max_picksintegeroptionaldefault 51 to 8

research_report

Needs a member key

Start a hub research report

Start an in-depth research report on an agentic-coding question, drawn from the whole Skill Manifest hub and, where it helps, the web: findings, ranked components with install steps, risks, a reflection and next steps, with citations. Use it for open questions such as "how can I build a YouTube video with Claude Code?" or "what are the skills for running a small business?". It runs in the background and returns a job_id at once: call get_report with it after a minute or two. depth="deep" is slower and more thorough. Needs a member API key (Authorization: Bearer acw_..., made on the hub's Connect to Claude Code page) and uses some of that member's daily AI allowance.

  • Starts work
  • Not destructive
  • May give a different result
  • Also reads the web

Inputs

  • questionstringrequired

    The question, with any context that matters (stack, goal, constraints).

  • depthstringoptionaldefault standard

    One of: standarddeep

get_report

Needs a member key

Get a hub research report

Get the status, progress and, once it is done, the text of a research report started with research_report. Call it again while the status is queued or running. A long report comes in parts: pass part=2, 3 and so on, as the result says. Needs the same member API key; checking costs nothing.

  • Read only
  • Same input, same result
  • Hub data only

Inputs

  • job_idstringrequired

    The job_id research_report returned.

  • partintegeroptionaldefault 1at least 1

Examples

Three things to ask your agent, and the raw JSON-RPC calls under them. The outputs below are abridged from a run on the live server.

Prompts

  • Search the hub for code review skills that work with Claude Code, and show me the two best with their install steps.

    Free tools
  • Before you write a new skill for database migrations, check the hub for an existing one, compare the top three, and tell me which to install.

    Free tools
  • What should I install from the hub for a FastAPI and React project? Then start a hub research report on how to build a YouTube video with Claude Code and show it when it is done.

    Needs a member key

The protocol with curl

No session and no setup call is needed: every POST stands alone, so tools/list and tools/call work without initialize. For a key tool, add -H "Authorization: Bearer $SKILL_MANIFEST_API_KEY".

1. initialize
curl -s https://skillmanifest.co/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
Response (abridged)
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"skill-manifest","title":"Skill Manifest hub","version":"1.0.0","websiteUrl":"https://skillmanifest.co"},"instructions":"…"}}
2. tools/list
curl -s https://skillmanifest.co/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | jq '.result.tools[].name'
Response
"search_catalog"
"get_component"
"compare_components"
"list_categories"
"recommend_for_task"
"research_report"
"get_report"
3. tools/call search_catalog
curl -s https://skillmanifest.co/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_catalog","arguments":{"query":"code review","limit":2}}}'
Response (abridged)
{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"## Hub search: code review\n… match(es); showing 2, reviewed first. …"}],"isError":false,"structuredContent":{"catalog_version":"catalog_…","query":"code review","total":…,"results":[{"id":"…","name":"code-reviewer","kind":"skill","group":"skills","reviewed":true,"summary":"…","source":"…","works_with":["claude-code"],"domains":["everyday-coding","testing-security"],"url":"https://skillmanifest.co/explore/c/…"},…]}}}

Keys, limits, costs and errors

Make and revoke a key

  1. Sign in, open the account menu and choose Connect to Claude Code.
  2. Name the key after where you use it, and choose Create key.
  3. Copy it now. It starts with acw_ and is shown once.
  4. Send it as Authorization: Bearer acw_…. Revoke it on the same page and it stops working at once.

A member can have 10 active keys. A deactivated account's keys stop working.

Rate limits

  • Without a key: 60 calls a minute for each address.
  • With a key: 120 calls a minute for each key.
  • Over the limit a tools/call gets an error result that says how many seconds to wait; other methods get HTTP 429 with Retry-After.
  • At most 2 research reports run at once for a member. A body is limited to 256 KiB.

These are the defaults of this hub; a self-hosted one can change them.

What it costs

  • The four free tools and get_report cost nothing.
  • recommend_for_task and research_report use the member's daily AI allowance, exactly like the assistant in the web app: the member's daily cap and the team's allowance both apply.
  • When the allowance is used up the tool says so; it resets at 00:00 UTC. A task with no matching component makes no AI call and costs nothing.
  • A report takes about 2 to 5 minutes (deep: 5 to 15). Start it with research_report, then call get_report with the job_id.

Security

  • Text from get_component with detail “full” comes from third-party repositories. It arrives inside an <untrusted_catalog_content> block with a note that it is data, never instructions. Treat it that way in your client too, and read any install command before you run it.
  • A key acts as the account that made it: it can spend that member's daily AI allowance. Keep it in an environment variable or your client's secret storage, never in a file you commit, and revoke it on the Connect page when you stop using it.
  • A key is shown once when it is made. Only a hash is stored, so nobody, including the hub's admins, can read it back. Admins see each key's owner, prefix, last use and call counts, and can revoke it.
  • Only the Authorization: Bearer header authorizes the server; a browser session cookie never does. The server accepts browser requests only from the hub's own address, and nothing the tools return is ever executed by the hub.
  • Use HTTPS. The free tools answer without any identity; the key tools answer only with a key that is valid right now.

Errors a client sees

A problem with one tool call comes back as a normal result with isError: true and a message the model can act on. A problem with the request itself is an HTTP status with a JSON-RPC error. These are the messages the server sends; <hub> stands for https://skillmanifest.co.

  • HTTP 401 · JSON-RPC -32001

    The API key isn't valid, was revoked, or its account is inactive. Make a new key at <hub>/connect, or send no key to use the free tools.

    Make a new key, or drop the Authorization header.

  • Tool result with isError

    <tool> uses AI, so it needs a member API key. Make one on <hub>/connect (Connect to Claude Code), then add it as the header Authorization: Bearer acw_... .

    Add the key. The four free tools never ask for one.

  • Tool result with isError

    Invalid arguments for <tool>: <field>: <problem>

    Fix the field named in the message; the Tools section lists every input.

  • Tool result with isError

    Too many hub requests. Wait a moment and try again. Try again in <n> seconds.

    Wait for the seconds given.

  • Tool result with isError

    A sentence that names the limit reached (the member's daily cap, the sign-up pool or the team allowance), then: The allowance resets at 00:00 UTC.

    Wait for the reset, or use the free tools.

  • Tool result with isError

    You already have 2 research reports running. Wait for one to finish (get_report shows its status), then start another.

    Wait, or poll get_report.

  • Tool result with isError

    The AI request failed (<kind>). Try again in a minute.

    Retry later; nothing was charged for a failed request.

  • Tool result with isError

    No report with job_id <id> for this key's account. Start one with research_report.

    Use the job_id that research_report returned, with the same key.

  • Tool result with isError

    The hub hit an unexpected error running this tool. Try again in a moment.

    Retry once; report it if it keeps happening.

  • HTTP 429 · JSON-RPC -32000

    Too many hub requests. Wait a moment and try again. (Other methods than tools/call; the Retry-After header gives the seconds.)

    Back off for Retry-After seconds.

  • HTTP 400 · -32700

    Parse error: the body must be one JSON-RPC message in UTF-8 JSON.

    Send a single JSON object.

  • HTTP 400 · -32600

    Batches aren't supported (MCP removed them in 2025-06-18). Send one message per POST.

    One message per POST.

  • HTTP 400 · -32600

    Invalid request: expected a JSON-RPC 2.0 object. (Also: no method, a method that is not a string, an id that is not a string or integer.)

    Send {"jsonrpc":"2.0","id":…,"method":…}.

  • HTTP 200 · -32602

    Unknown tool: <name>. Call tools/list for the tool names. (Also: arguments must be an object.)

    Use a name from tools/list.

  • HTTP 200 · -32601

    Method not found: <method>. The server answers initialize, ping, server/discover, tools/list and tools/call (HTTP 404 on the 2026-07-28 form).

    Use one of those methods.

  • HTTP 400 · -32020

    Header mismatch: the MCP-Protocol-Version, Mcp-Method or Mcp-Name header must equal the request's own.

    For the 2026-07-28 form, mirror the method, tool name and version in the headers.

  • HTTP 400 · -32022

    Unsupported protocol version, with the supported versions in the error's data.

    Ask for 2026-07-28, 2025-11-25, 2025-06-18 or 2025-03-26.

  • HTTP 403 · -32600

    Origin not allowed. A browser page from another origin may not call the server; Claude Code and other programs send no Origin.

    Call it from a program, not from a web page.

  • HTTP 413

    The request is too large (the body limit is 256 KiB).

    Send less.

  • HTTP 405

    GET and DELETE /mcp answer 405 with Allow: POST: there is no event stream and there are no sessions.

    POST every message.

REST API

The same published catalog, read only, as JSON. No key and no account.

  • GET/api/public/catalogA page of components with counts (facets) for each filter.
  • GET/api/public/catalog/components/{id}One component with its text, licence and source link.
  • GET/api/public/statsCounts of components, reviewed components and sources.

Parameters of /api/public/catalog

q
Words to search for, up to 500 characters.
group
skills, prompts, workflows, agents or add-ons. Repeat it for alternatives: group=skills&group=agents.
domain
A domain id such as web-ui, backend, testing-security or images-video (the response's facets and the list_categories tool list them all). Repeatable.
language
python, typescript, go, rust, java, csharp, ruby, php, swift, cpp, shell or sql. Repeatable.
risk
runs-shell, network, writes-files, broad-permissions or secrets: only components that carry that risk badge. Repeatable.
works_with
An agent id such as claude-code, codex, cursor or copilot. Repeatable.
sort
best (the default), newest or name.
limit
1 to 200 results; the default is 60.
offset
How many results to skip, for the next page.
include_unreviewed
true to include components no one has reviewed yet. The default is reviewed only.

Example

Testing and security skills, by name
curl -s "https://skillmanifest.co/api/public/catalog?group=skills&domain=testing-security&sort=name&limit=1"
Response (abridged)
{"components":[{"id":"…","name":"agent-harness-construction","kind":"skill","group":"skills","domains":["data-ai","testing-security"],"reviewed":true,"source":"affaan-m/ECC","summary":"…","works_with":["claude-code","codex"],…}],"total":171,"catalog_version":"catalog_…","reviewed_only":true,"facets":{…},…}

Limits: 60 requests a minute for each address across both catalog routes; over that the answer is HTTP 429 with Retry-After. Answers are cached for a minute (Cache-Control: public, max-age=60). Check catalog_version to see whether the catalog changed.

Status

Is the hub up?

https://skillmanifest.co/api/health answers {"status":"ok","schema_version":…} when the service is ready. Machine-readable pointers for AI tools are at /llms.txt.