Qumge: Agent Capabilities & Skills
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Find, call and pay per call: the capability layer for agents, plus skills. One key or OAuth.
| Author | com.qumge |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 381 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Qumge: Agent Capabilities & Skills": {
"url": "https://qumge.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (19)
search_skillsSearch Qumge's curated catalog of agent skills (SKILL.md files) by what the user wants to accomplish. Use this whenever the user asks for a skill, tool, or Cap — e.g. 'find me a skill for social media automation', 'is there a skill for SEO audits'. Returns the best few, ranked by how useful they actually are (an LLM read each one), with a one-line summary and the exact slug to pass to get_skill.
Parameters:
limit— integer — How many to return. Default 5, max 10.query— string — What the user wants to do, in their own words. e.g. 'automate posting to social media', 'extract tables from PDFs'. Omit it to browse the top-ranked skills instead.offset— integer — Skip this many results — for paging through a long list.category— string — Optional. Narrow to one category. Call list_categories to see them.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_skillFetch the full SKILL.md content of one skill, by the slug returned from search_skills. Write the returned markdown to .claude/skills/<name>/SKILL.md (or the equivalent for the user's agent). If the reply says the skill ships more files (REFERENCE.md, scripts/…), call again with include_files: true to get them and write each next to SKILL.md.
Parameters:
slug(required) — string — The skill's slug, e.g. 'AgriciDaniel/claude-seo/seo-google'. Comes from search_skills.include_files— boolean — Also return the full text of the other files in the skill's folder. Off by default — they can be hundreds of KB. Use it when installing.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_categoriesList the skill categories and how many skills are in each. Useful when the user is browsing rather than looking for something specific.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_modelsList the models this gateway can route to, best first. Every one is reachable with the same Qumge key — no per-vendor signup. Only tool-calling models are listed: an agent cannot use the others.
Parameters:
limit— integer — How many to return. Default 20, max 60.query— string — Optional. Filter by name or vendor, e.g. 'claude', 'gemini'.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
search_capsSearch Qumge's Caps — paid services an agent can call, billed per call from the user's Qumge balance. A Cap (short for capability) is one finished job: somebody's API or MCP server with a price list; to you it is a set of operations. Use this when the user wants something done rather than a skill to install: 'make a promo video', 'transcribe this call'. Returns the best few with pricing, measured success rate and latency, and the slug to pass to get_cap. Results label declared direct or uncertain matches; partial_results are separate and never a complete-result replacement. Budget applies to the matched operation reservation ceiling. Publication checks are not proof of real delivery. (Older clients may still call this tool as search_apps — it still works.)
Parameters:
limit— integer — How many to return. Default 5, max 10.query— string — What the user wants done, in their own words. Omit to browse the most-used Caps.max_price_usd— number — Maximum reservation for the matched operation in US dollars, not its unit price. Partial steps are returned separately and never replace a complete result.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_capFetch one Cap's operations, prices and how to call it, by the slug returned from search_caps. Call this before using a Cap: it lists each operation (by name), its input and output schema when the developer provided one, which routes are billable, the per-call maximum, when the call settles, and the error codes the caller may see. If the request carries the user's Qumge key, it also reports that user's monthly limit for this Cap. (Older clients may still call this tool as get_app — it still works.)
Parameters:
slug(required) — string — The Cap's slug, e.g. 'autowhisper'. Comes from search_caps.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
call_capCall a Cap on the user's behalf and return its response. Use this when you cannot make the HTTP call yourself: qumge charges the user's qumge balance and forwards the call at the same price as calling it over HTTP through Qumge. Operations and prices come from get_cap. Prefer `operation` + `input`: when the operation declares an input_schema, `input` is validated against it before anything is charged or forwarded. For managed results, pass a stable idempotency_key when retrying; asynchronous calls return a platform job_id and get_cap_job reads cached progress and the final receipt for free. Needs the user's qumge key in the Authorization header. A 5xx from the Cap is free; a 402 means the user's balance or this Cap's monthly limit stopped it. (Older clients may still call this tool as call_app — it still works.)
Parameters:
slug(required) — string — The Cap's slug, from search_caps.body— ['object', 'string'] — Request body. An object is sent as JSON; a string is sent as-is.path— string — The route path from get_cap, e.g. '/api/videos'. A query string may be appended or passed separately in `query`.input— object — Arguments for the operation. Validated against its input_schema when it has one — an invalid input is refused as a tool error (isError), and nothing is charged or forwarded.query— string — Query string without the leading '?'.accept— string — Optional Accept header.method— string — HTTP method. Default GET — the routes and their methods are in get_cap.operation— string — Operation name from get_cap (a route's `name`). Use with `input`; takes precedence over `path`/`method` when both are given.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.content_type— string — Only needed when `body` is a string and the app expects a specific type.idempotency_key— string — Stable key for retries of the same operation and input. Replays the original managed order; changed input is rejected.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_cap_jobRead your managed Cap job's cached progress, complete result and receipt for free. Use the platform job_id returned by call_cap. Ordinary reads do not invoke the provider. Set refresh_result: true to explicitly request free renewal of declared result URLs after success; the optional private provider command does not generate new work or change the receipt. Existing orders remain readable after Cap revocation.
Parameters:
job_id(required) — string — Platform job_id from call_cap, starting with ac_.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.refresh_result— boolean — Optional explicit free renewal of result URLs, when the original Cap declares support; default false.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_balanceThe user's Qumge balance, plus what each Cap has spent this month against its monthly limit. Call this before a paid call when the user asks whether they can afford it, and after a 402 that says the balance or a limit stopped the call — it returns the top-up link to hand to the user. Needs the user's qumge key.
Parameters:
qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
become_developerOpen a developer account for the user (needs their qumge key). There is no review and no waiting: it takes effect immediately, and publish_cap works right after. Give a display name and an ISO country code; the country decides tax and payout rails later. Payout details and legal name are only needed when the user actually withdraws money.
Parameters:
display_name(required) — string — The name shown on their app pages.country(required) — string — ISO code like "US" or "CN" (a full country name also works).username— string — Required if the account has no username yet: 3–30 letters, digits, _ or -. It becomes the public page /u/<username>.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.entity_type— string — individual (default) or company.social_links— array — Up to 6 public URLs (X, GitHub, LinkedIn, their website). The kind is guessed from the domain.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_capsList the developer's own Caps with their status (draft / live / suspended) and slug. Use it before publishing to see what already exists, and after to check what went live. Needs the developer's qumge key. (Older clients may still call this tool as list_apps.)
Parameters:
qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verify_domainProve the developer owns the domain of their MCP server or API. Going live does not need it: an unverified Cap is live and charges callers, but the developer's earnings from it stay frozen until this passes — verifying releases them. Call with the service's https url: if the domain (or a parent domain) is already verified it says so; otherwise it returns a one-line file to serve at /.well-known/qumge-verify.txt on that host (or a DNS TXT record with the same line). Put the file into the project so it ships with the next deploy, then call again with check: true. Needs the developer's Qumge key.
Parameters:
url(required) — string — The service's https url, e.g. https://api.example.com/mcpcheck— boolean — true = look for the line now (after the user deployed it).qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
publish_capCreate or update a DRAFT Cap on the developer's behalf (requires the developer's Qumge key). Start with the complete buyer outcome, then inspect existing MCP, API and business functions. Reuse a single entry point only when it delivers the full result; otherwise compose partial steps on the provider server and mix MCP, API and internal functions when useful. The buyer agent must not orchestrate provider internals. If both interfaces exist, choose the least-change reliable path; the presence of MCP is not a reason to ignore API. Prefer manifest v2: pass manifest_url for the project's public qumge.json, and slug to select a Cap when needed. The file supplies the name, connection, operations and suggested prices; do not repeat name or override file fields. Without manifest_url, give name and either connection_config, connection_id, base_url or mcp_url, plus the priced operations. Every billed operation must deliver one complete result for one clear input (e.g. product URL in → finished video out); helper steps such as job status are free, and a result that needs several calls is wrapped into one endpoint — never sell partial steps. Managed execution reserves a fixed price and charges only after valid complete delivery; queued acceptance is not delivery, and failed or expired orders cost nothing. Reuse existing tasks and durable request_id deduplication; providers need no Qumge-specific buyer, order, ledger or usage-reporting tables. Prefer execution.identity: order with self-contained inputs. Use trusted request_id to isolate tasks and private results. For buyer-owned state, explicitly choose identity: buyer and authorize the trusted buyer_key; a shared service account alone does not isolate buyers. Use connection_config or connection_id to share private credentials across Caps. Read https://qumge.com/en/docs/caps/managed.md for the complete contract. Legacy per-response and advanced usage-based fields remain supported for existing integrations; the signing/usage guide applies to those modes, not managed execution. A new signing secret is returned once when applicable. Legacy non-managed integrations may also return a usage key; managed execution does not use it. Nothing is charged while it is a draft. Reuse the developer's already approved prices and publication authorization. Do not ask again; confirm only initial pricing, price changes or unclear scope. A manifest price alone is not approval. There is no human review: after test_cap passes, submit_cap takes the Cap live immediately, and qumge spot-checks it afterwards (a spot check can suspend it). (Older clients may still call this tool as publish_app.)
Parameters:
name— string — Store name. Required only without manifest_url; manifest publication reads it from the file and ignores this duplicate field.slug— string — Optional URL slug. Derived from the name when omitted. With manifest_url: picks which Cap in the file to publish.events— array — Manual price book. unit_price_usd is USD, e.g. 0.10. A managed operation uses one fixed-price event; advanced usage-based events belong to legacy integrations.routes— array — Manual HTTP operations. Managed routes include execution and input/output schemas; the referenced event supplies the fixed price. Legacy routes use hold_usd as a per-call ceiling.mcp_url— string — Optional: publish an existing remote MCP server instead of an HTTP API. Must be https. The domain does not need to be verified to go live, but earnings stay frozen until verify_domain passes for it. Qumge calls tools/list to discover the tools, and every tool you price with `mcp_tools` becomes one operation. Managed execution charges only after a valid complete result, not queued acceptance. Legacy tools without a managed connection or execution use per-response pricing: successful non-error replies are charged; non-2xx, timeouts, isError: true and JSON-RPC errors are free.summary— string — One line describing what it does.base_url— string — Where the API lives. Must be https. For manual publication without manifest_url, connection_config, connection_id or mcp_url. Any path in it (https://host/v2) is part of what your server receives and is covered by the signature.icon_url— string — Public HTTPS Cap icon, preferably a square 256px PNG or WebP. Required before a draft can go live. Reuse a suitable project asset or prepare one and deploy it with the project. With manifest_url, declare icon_url in the selected capability instead.keywords— array — Other names for the same thing, any language, up to 20. Agents search with a request like "scrape trending TikTok videos" — the keywords are what makes that find this app.metering— string — Legacy usage-based mode only: reported (provider reports usage) or balance_delta (Qumge reads its balance). Managed execution needs neither usage reporting nor a usage key.auth_mode— string — Manual service authentication; named connections declare it through connection_config.auth instead. signature (default) verifies signed requests; managed wrappers use trusted context, while legacy signed integrations also answer GET /qumge/ping. api_key sends upstream_token as the developer's Bearer key. Legacy api_key routes require exact paths and meter: platform; managed routes declare execution.mcp_tools— array — Prices for the MCP tools you want listed. Include execution and result schemas for managed complete-result delivery. Tools you leave out are not published and are reported back to you.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.unit_name— string — What users buy, e.g. credit.skill_slug— string — Optional. Attach an existing skill from the catalog to this app (its documentation then shows on the app page). Ignored if the slug is unknown.support_url— string — Where users ask for help. Shown on the app page.balance_path— string — Only for balance_delta: where we read the balance.manifest_url— string — Optional: publish from the project's qumge.json instead of passing everything by hand. Give https://<domain>/.well-known/qumge.json (or the service address). Its prices are suggestions unless already approved: confirm initial pricing or changes before submit_cap; do not reconfirm approved prices. The file supplies name, connection and operations; do not repeat name. Prefer manifest v2 for managed complete results. With several Caps in the file, pass `slug` to pick one (one call per Cap). Spec: https://qumge.com/docs/caps/manifestsocial_links— array — Up to 6 public URLs for the developer (X, GitHub, LinkedIn, their website). Shown on every app page. The kind is guessed from the domain.connection_id— string — Existing connection_id returned by publish_cap, belonging to this developer. Use instead of connection_config.upstream_token— string — The developer's own service key. Required for a new api_key or authenticated MCP connection, and legacy balance_delta. With manifest_url, provide it when the selected connection needs api_key authentication and has no stored key. Reusable connections retain their credentials. Stored encrypted; sent as Authorization: Bearer.balance_json_path— string — Only for balance_delta: where in that response.connection_config— object — Reusable private service connection. Repeating the same developer/name reuses credentials when endpoint and authentication agree.refund_policy_url— string — Their refund policy, if they have one.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
cap_statusCheck one of the developer's own capabilities: its status (draft / review / live / suspended) and how far the publishing checklist has got. Needs the developer's Qumge key. (Older clients may still call this tool as app_status.)
Parameters:
slug(required) — string — The Cap's slug.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
test_capRun the applicable publication checks after publish_cap, before submit_cap. Managed qumge wrapper operations use authenticated isolated fixture hooks and validate the complete fixture result. Native managed API/MCP operations check HTTP OPTIONS or MCP tools/list for connection/schema evidence without invoking generation. The verification array distinguishes connection, fixture and real_delivery scopes; real delivery is not tested. Legacy integrations may call one free and one billable route, or each published MCP tool, directly with probe inputs; Qumge does not charge for these probes, but the developer may incur provider costs. Signed wrapper/legacy APIs also test /qumge/ping with valid, forged and stale signatures; legacy usage-reporting routes must report probe usage. Missing billed-operation docs block publishing. Needs the developer's Qumge key. (Older clients may still call this tool as test_app.)
Parameters:
slug(required) — string — The Cap's slug.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
submit_capTake one of the developer's Caps live. Nothing is reviewed before launch and nobody approves it: when the applicable connection/operation checks and price book pass, with complete billed-operation docs, this publishes the Cap immediately and agents can call it — and be charged — from then on. Run test_cap first (legacy checklist keys remain signature and end_to_end; the price book is recorded when it saves). Passing native connection checks or isolated fixtures does not verify real delivery. Qumge spot-checks docs and support afterwards and can suspend the Cap. Needs the developer's Qumge key. (Older clients may still call this tool as submit_app_review.)
Parameters:
slug(required) — string — The Cap's slug.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_earningsWhat a developer has earned and what is payable: the amount still inside the 30-day holdback, the amount sitting in their wallet (income from Caps — the only part that can be withdrawn), and what has already been paid out, with the most recent entries. Matured purchase amounts move into the wallet automatically. Needs the developer's Qumge key.
Parameters:
qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
request_payoutAsk for a payout of the developer's payable balance (Cap income only — topped-up money cannot be withdrawn). Call it once without `confirmed` to get the estimate (amount, channel fee, withholding tax, what actually lands), show that to the user, and only then call again with confirmed: true. Needs the developer's Qumge key.
Parameters:
amount_usd(required) — number — How much to withdraw, in US dollars.confirmed— boolean — Set true only after the user has seen the estimate and agreed.qumge_key— string — Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_wantedWhat agents searched for on Qumge and found nothing: the demand side of the store, in the searchers' own words, with how often each was searched in the last 7 and 30 days. Useful before building or publishing a Cap — it tells you what people already want. Only the search text is stored; no user and no IP.
Parameters:
limit— integer — How many to return. Default 20, max 50.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.