MCP-Server

Qumge: Agent Capabilities & Skills

com.qumge/skills
KI & Agenten MCP- & Agenten-Infrastruktur Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Catalogs agent apps, skills, and callable models, and supports app discovery, invocation, publishing, testing, billing, and skill installation.

become_developer
Open 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.
Eingabeschema
{'type': 'object', 'required': ['display_name', 'country'], 'properties': {'country': {'type': 'string', 'description': 'ISO code like "US" or "CN" (a full country name also works).'}, 'username': {'type': 'string', 'description': 'Required if the account has no username yet: 3–30 letters, digits, _ or -. It becomes the public page /u/<username>.'}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}, 'entity_type': {'enum': ['individual', 'company'], 'type': 'string', 'description': 'individual (default) or company.'}, 'display_name': {'type': 'string', 'description': 'The name shown on their app pages.'}, 'social_links': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 6 public URLs (X, GitHub, LinkedIn, their website). The kind is guessed from the domain.'}}}
Ausgabeschema
{'type': 'object', 'required': ['display_name', 'country'], 'properties': {'status': {'type': 'string'}, 'country': {'type': 'string'}, 'display_name': {'type': 'string'}}}
call_cap
Call a capability 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, so the price is identical to calling the cap directly. 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. 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.)
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'body': {'type': ['object', 'string'], 'description': 'Request body. An object is sent as JSON; a string is sent as-is.'}, 'path': {'type': 'string', 'description': "The route path from get_cap, e.g. '/api/videos'. A query string may be appended or passed separately in `query`."}, 'slug': {'type': 'string', 'description': "The cap's slug, from search_caps."}, 'input': {'type': 'object', 'description': 'Arguments for the operation. Validated against its input_schema when it has one — an invalid input is refused with 422, and nothing is charged or forwarded.'}, 'query': {'type': 'string', 'description': "Query string without the leading '?'."}, 'accept': {'type': 'string', 'description': 'Optional Accept header.'}, 'method': {'enum': ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'], 'type': 'string', 'description': 'HTTP method. Default GET — the routes and their methods are in get_cap.'}, 'operation': {'type': 'string', 'description': "Operation name from get_cap (a route's `name`). Use with `input`; takes precedence over `path`/`method` when both are given."}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}, 'content_type': {'type': 'string', 'description': 'Only needed when `body` is a string and the app expects a specific type.'}}}
Ausgabeschema
{'type': 'object', 'required': ['status', 'method', 'path', 'body'], 'properties': {'body': {'type': 'string'}, 'path': {'type': 'string'}, 'binary': {'type': 'boolean'}, 'method': {'type': 'string'}, 'status': {'type': 'integer'}, 'call_id': {'type': ['string', 'null']}, 'truncated': {'type': 'boolean'}, 'body_bytes': {'type': 'integer'}, 'direct_url': {'type': 'string'}, 'content_type': {'type': ['string', 'null']}, 'charged_micro_usd': {'type': ['integer', 'null']}, 'remaining_micro_usd': {'type': ['integer', 'null']}}}
cap_status
Check 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.)
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'status', 'checks'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'checks': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['status'], 'properties': {'note': {'type': ['string', 'null']}, 'status': {'type': 'string'}}}}, 'status': {'type': 'string'}, 'reviewer_note': {'type': ['string', 'null']}}}
get_balance
The user's Qumge balance, plus what each capability 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.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}}}
Ausgabeschema
{'type': 'object', 'required': ['balance_micro_usd', 'available_micro_usd', 'withdrawable_micro_usd'], 'properties': {'caps': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'monthly_limit_micro_usd': {'type': 'integer'}, 'spent_this_month_micro_usd': {'type': 'integer'}}}}, 'topup_url': {'type': 'string'}, 'frozen_micro_usd': {'type': 'integer'}, 'balance_micro_usd': {'type': 'integer'}, 'available_micro_usd': {'type': 'integer'}, 'withdrawable_micro_usd': {'type': 'integer'}}}
get_cap
Fetch one capability'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.)
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug, e.g. 'autowhisper'. Comes from search_caps."}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'name', 'price_line', 'operations'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'summary': {'type': ['string', 'null']}, 'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['method', 'pattern', 'billable'], 'properties': {'doc': {'type': ['object', 'null']}, 'name': {'type': ['string', 'null']}, 'unit': {'type': ['string', 'null']}, 'meter': {'enum': ['app', 'platform'], 'description': '"platform" means Qumge counts one unit per successful (2xx) call at the unit price — a failing call is free.'}, 'method': {'type': 'string'}, 'pattern': {'type': 'string'}, 'settles': {'type': ['string', 'null']}, 'billable': {'type': 'boolean'}, 'unit_price_micro_usd': {'type': ['integer', 'null']}, 'max_per_call_micro_usd': {'type': ['integer', 'null']}}}}, 'price_line': {'type': 'string'}, 'monthly_limit_micro_usd': {'type': ['integer', 'null']}, 'spent_this_month_micro_usd': {'type': ['integer', 'null']}}}
get_earnings
What a developer has earned and what is payable: the amount still inside the 30-day holdback, the amount sitting in their wallet (income from capabilities — 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.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {}}
Ausgabeschema
{'type': 'object', 'required': ['pending_micro_usd', 'payable_micro_usd'], 'properties': {'entries': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'type', 'amount_micro_usd'], 'properties': {'date': {'type': 'string'}, 'type': {'type': 'string'}, 'available_at': {'type': ['string', 'null']}, 'amount_micro_usd': {'type': 'integer'}}}}, 'next_payable_on': {'type': ['string', 'null']}, 'pending_payouts': {'type': 'integer'}, 'payable_micro_usd': {'type': 'integer'}, 'pending_micro_usd': {'type': 'integer'}, 'paid_net_micro_usd': {'type': 'integer'}, 'paid_gross_micro_usd': {'type': 'integer'}}}
get_skill
Fetch 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.
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The skill's slug, e.g. 'AgriciDaniel/claude-seo/seo-google'. Comes from search_skills."}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}, 'include_files': {'type': 'boolean', 'description': "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."}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'name', 'skill_md'], 'properties': {'name': {'type': ['string', 'null']}, 'slug': {'type': 'string'}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string'}, 'content': {'type': ['string', 'null']}}}}, 'skill_md': {'type': 'string'}, 'source_url': {'type': 'string'}, 'include_files': {'type': 'boolean'}, 'skipped_files': {'type': 'array', 'items': {'type': 'string'}}, 'skills_page_url': {'type': 'string'}}}
list_caps
List the developer's own capabilities 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.)
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}}}
Ausgabeschema
{'type': 'object', 'required': ['caps'], 'properties': {'caps': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'status'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'status': {'type': 'string'}, 'self_tests_total': {'type': 'integer'}, 'suspended_reason': {'type': ['string', 'null']}, 'self_tests_passed': {'type': ['integer', 'null']}}}}}}
list_categories
List the skill categories and how many skills are in each. Useful when the user is browsing rather than looking for something specific.
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'type': 'object', 'required': ['categories', 'domains'], 'properties': {'domains': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title'], 'properties': {'key': {'type': 'string'}, 'title': {'type': 'string'}}}}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'count'], 'properties': {'name': {'type': 'string'}, 'count': {'type': 'integer'}}}}}}
list_models
List 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.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 60, 'minimum': 1, 'description': 'How many to return. Default 20, max 60.'}, 'query': {'type': 'string', 'description': "Optional. Filter by name or vendor, e.g. 'claude', 'gemini'."}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}}}
Ausgabeschema
{'type': 'object', 'required': ['models', 'total'], 'properties': {'limit': {'type': 'integer'}, 'total': {'type': 'integer'}, 'models': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'provider', 'slug', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'vision': {'type': 'boolean'}, 'provider': {'type': 'string'}, 'input_price_per_mtok_usd': {'type': 'number'}, 'output_price_per_mtok_usd': {'type': 'number'}}}}}}
list_wanted
What 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 capability — it tells you what people already want. Only the search text is stored; no user and no IP.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'How many to return. Default 20, max 50.'}}}
Ausgabeschema
{'type': 'object', 'required': ['wanted'], 'properties': {'wanted': {'type': 'array', 'items': {'type': 'object', 'required': ['query', 'searches_7d', 'searches_30d'], 'properties': {'query': {'type': 'string'}, 'searches_7d': {'type': 'integer'}, 'searches_30d': {'type': 'integer'}}}}}}
publish_cap
Publish a capability (cap) to Qumge on the developer's behalf (needs the developer's Qumge key in the Authorization header). Give it a name and either the API's HTTPS base_url or, for an existing remote MCP server, its mcp_url; and — if you can read them off the project — its price book (events with a unit price) and operations (routes with a per-call ceiling, and a `doc` describing input/output so agents know what to send). It returns a DRAFT cap plus the signing secret and usage key (shown once). Nothing is charged while it is a draft. 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.)
Eingabeschema
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Human name shown in the store.'}, 'slug': {'type': 'string', 'description': 'Optional URL slug. Derived from the name when omitted.'}, 'events': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'unit_price_usd'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'unit_price_usd': {'type': 'number'}}}, 'description': 'Price book events. unit_price_usd is in US dollars, e.g. 0.10.'}, 'routes': {'type': 'array', 'items': {'type': 'object', 'required': ['pattern'], 'properties': {'doc': {'type': 'object', 'properties': {'title': {'type': 'string'}, 'description': {'type': 'string'}, 'limitations': {'type': 'string'}, 'when_to_use': {'type': 'string'}, 'input_schema': {'type': 'object', 'description': 'JSON Schema 2020-12.'}, 'example_input': {'type': 'object'}, 'output_schema': {'type': 'object', 'description': 'JSON Schema 2020-12.'}}, 'description': 'What this operation does and what it takes, for agents. Optional, but without it an agent can only guess the input shape (call_cap validates `input` against doc.input_schema).'}, 'lane': {'enum': ['standard', 'micro'], 'type': 'string', 'description': 'standard (default: one ledger row per call) or micro — for routes priced below $0.001. A micro route must settle on_response, its per-call ceiling must be at most $0.01, and calls settle in per-minute buckets instead of one row each.'}, 'name': {'type': 'string'}, 'event': {'type': 'string', 'description': 'Which price-book event this route bills. Defaults to the first event.'}, 'meter': {'enum': ['app', 'platform'], 'type': 'string', 'description': 'Who counts the usage. "app" (default): your service reports after each call. "platform": Qumge counts one unit per successful (2xx) call at your declared price — use this when a call always costs the same, and you only have to write the signature check, no usage reporting.'}, 'method': {'type': 'string'}, 'settle': {'enum': ['on_response', 'on_final'], 'type': 'string'}, 'pattern': {'type': 'string'}, 'billable': {'type': 'boolean'}, 'hold_usd': {'type': 'number'}, 'rate_limit_per_min': {'type': 'integer', 'maximum': 3000, 'minimum': 60, 'description': 'Micro lanes only: calls per minute per key (default 600).'}}}, 'description': 'HTTP routes. Billable routes need hold_usd (the most one call may cost).'}, 'mcp_url': {'type': 'string', 'description': 'Optional: publish an existing remote MCP server instead of an HTTP API. Must be https and on a domain you have verified (Profile → links). Qumge calls tools/list to discover the tools, and every tool you price with `mcp_tools` becomes one operation. Billing looks at the HTTP status only: every tools/call that comes back 2xx is charged at the price you set — including a tool result with isError: true. Non-2xx and timeouts are free.'}, 'summary': {'type': 'string', 'description': 'One line describing what it does.'}, 'base_url': {'type': 'string', 'description': 'Where the API lives. Must be https. Required unless you give mcp_url. Any path in it (https://host/v2) is part of what your server receives and is covered by the signature.'}, 'keywords': {'type': 'array', 'items': {'type': 'string'}, 'description': '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': {'enum': ['reported', 'balance_delta'], 'type': 'string', 'description': 'reported (the app tells us what to charge) or balance_delta (we read its balance).'}, 'auth_mode': {'enum': ['signature', 'api_key'], 'type': 'string', 'description': "How qumge calls the service. signature (default): we sign each request and the service verifies it and answers GET /qumge/ping — code to write. api_key: the service is an existing API; we call it with the developer's own key (upstream_token) and nothing in it changes. api_key routes must be exact paths (no * or {}) and billed per call (meter: platform)."}, 'mcp_tools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'unit_price_usd'], 'properties': {'name': {'type': 'string', 'description': 'Tool name, exactly as tools/list returns it.'}, 'unit_price_usd': {'type': 'number', 'description': 'Price per successful call, in USD.'}}}, 'description': 'Prices for the MCP tools you want listed. Tools you leave out are not published and are reported back to you.'}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}, 'unit_name': {'type': 'string', 'description': 'What users buy, e.g. credit.'}, 'skill_slug': {'type': 'string', 'description': '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': {'type': 'string', 'description': 'Where users ask for help. Shown on the app page.'}, 'balance_path': {'type': 'string', 'description': 'Only for balance_delta: where we read the balance.'}, 'social_links': {'type': 'array', 'items': {'type': 'string'}, 'description': '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.'}, 'upstream_token': {'type': 'string', 'description': "The developer's own API key for their service. Required for auth_mode api_key (and for balance_delta). Stored encrypted; sent as Authorization: Bearer."}, 'balance_json_path': {'type': 'string', 'description': 'Only for balance_delta: where in that response.'}, 'refund_policy_url': {'type': 'string', 'description': 'Their refund policy, if they have one.'}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'name', 'status'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'status': {'type': 'string'}, 'usage_key': {'type': ['string', 'null']}, 'skipped_tools': {'type': 'array', 'items': {'type': 'string'}}, 'signing_secret': {'type': ['string', 'null']}, 'price_book_version': {'type': ['integer', 'null']}}}
request_payout
Ask for a payout of the developer's payable balance (capability 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.
Eingabeschema
{'type': 'object', 'required': ['amount_usd'], 'properties': {'confirmed': {'type': 'boolean', 'description': 'Set true only after the user has seen the estimate and agreed.'}, 'amount_usd': {'type': 'number', 'description': 'How much to withdraw, in US dollars.'}}}
Ausgabeschema
{'type': 'object', 'required': ['requested', 'amount_micro_usd'], 'properties': {'status': {'type': ['string', 'null']}, 'payout_id': {'type': ['integer', 'null']}, 'requested': {'type': 'boolean'}, 'fee_micro_usd': {'type': ['integer', 'null']}, 'net_micro_usd': {'type': ['integer', 'null']}, 'amount_micro_usd': {'type': 'integer'}, 'withholding_tax_micro_usd': {'type': ['integer', 'null']}}}
search_caps
Search Qumge's capabilities — paid services an agent can call, billed per call from the user's Qumge balance. A capability (cap) is 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. (Older clients may still call this tool as search_apps — it still works.)
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many to return. Default 5, max 10.'}, 'query': {'type': 'string', 'description': 'What the user wants done, in their own words. Omit to browse the most-used caps.'}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}, 'max_price_usd': {'type': 'number', 'description': 'Optional ceiling: drop caps whose per-call price is above this, in US dollars.'}}}
Ausgabeschema
{'type': 'object', 'required': ['results'], 'properties': {'limit': {'type': 'integer'}, 'query': {'type': ['string', 'null']}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'price_line'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'summary': {'type': 'string'}, 'price_line': {'type': 'string'}, 'success_rate': {'type': ['integer', 'null']}, 'p50_latency_ms': {'type': ['integer', 'null']}, 'measured_calls_7d': {'type': 'integer'}, 'max_per_call_micro_usd': {'type': 'integer'}}}}, 'returned': {'type': 'integer'}}}
search_skills
Search 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 capability — 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.
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many to return. Default 5, max 10.'}, 'query': {'type': 'string', 'description': "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': {'type': 'integer', 'minimum': 0, 'description': 'Skip this many results — for paging through a long list.'}, 'category': {'enum': ['automation-workflow', 'api-integration', 'ai-agent-dev', 'design-frontend', 'data-analytics', 'code-review-debug', 'content-writing', 'code-write-refactor', 'marketing-growth', 'testing', 'documentation', 'devops-security', 'database', 'personal-productivity', 'files-spreadsheets', 'other'], 'type': 'string', 'description': 'Optional. Narrow to one category. Call list_categories to see them.'}, 'qumge_key': {'type': 'string', 'description': 'Optional: your Qumge API key, for clients that cannot set an Authorization header. Takes precedence over the header. Never echoed back.'}}}
Ausgabeschema
{'type': 'object', 'required': ['results', 'category_scheme'], 'properties': {'limit': {'type': 'integer'}, 'offset': {'type': 'integer'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'summary', 'category', 'vetted'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'needs': {'type': 'array', 'items': {'type': 'string'}}, 'stars': {'type': 'integer'}, 'vetted': {'type': 'boolean'}, 'summary': {'type': 'string'}, 'category': {'type': ['string', 'null'], 'description': 'Category under the scheme named by category_scheme: a domain key when it is "domain", a fine category when it is "fine"; null when the entry has none.'}, 'source_url': {'type': 'string'}, 'first_party': {'type': 'boolean'}}}}, 'has_more': {'type': 'boolean'}, 'returned': {'type': 'integer'}, 'category_scheme': {'enum': ['domain', 'fine'], 'description': 'Which taxonomy the results\' category values come from: "domain" for browse (no query), "fine" for a search.'}, 'searched_in_english_as': {'type': ['string', 'null']}}}
submit_cap
Take one of the developer's capabilities live. Nothing is reviewed before launch and nobody approves it: when the three code-checked items pass (signature, end-to-end, price book), this publishes the cap immediately and agents can call it — and be charged — from then on. Run test_cap first (it records signature + end-to-end; the price book is recorded when it saves). 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.)
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'status'], 'properties': {'slug': {'type': 'string'}, 'status': {'type': 'string'}}}
test_cap
Run a cap's connection test and end-to-end self-test, and record both results on its publishing checklist. Do this after publish_cap, before submit_cap. The connection test sends three requests to base_url + /qumge/ping (correctly signed, wrong secret, and a 10-minute-old timestamp — only the first may succeed); the end-to-end test calls one free and one billable operation directly on the cap (nothing is charged) and, for a route the cap reports itself, waits 2 seconds for its usage report. An MCP cap has each listed tool called once instead. It warns (without blocking) about billed operations that have no `doc`. Needs the developer's Qumge key. (Older clients may still call this tool as test_app.)
Eingabeschema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
Ausgabeschema
{'type': 'object', 'required': ['slug', 'end_to_end_passed'], 'properties': {'slug': {'type': 'string'}, 'missing': {'type': 'array', 'items': {'type': 'string'}}, 'connection_passed': {'type': ['boolean', 'null']}, 'end_to_end_passed': {'type': 'boolean'}, 'connection_summary': {'type': ['string', 'null']}, 'end_to_end_summary': {'type': ['string', 'null']}}}
Geändert
test_cap
1. October 2026 02:54
Geändert
publish_cap
1. October 2026 02:54
Geändert
become_developer
1. October 2026 02:54
Entfernt
test_app
29. September 2026 03:02
Entfernt
submit_app_review
29. September 2026 03:02
Entfernt
search_apps
29. September 2026 03:02
Entfernt
publish_app
29. September 2026 03:02
Entfernt
list_apps
29. September 2026 03:02
Entfernt
get_app
29. September 2026 03:02
Entfernt
call_app
29. September 2026 03:02
Entfernt
app_status
29. September 2026 03:02
Hinzugefügt
list_wanted
29. September 2026 03:02
Hinzugefügt
request_payout
29. September 2026 03:02
Hinzugefügt
get_earnings
29. September 2026 03:02
Hinzugefügt
submit_cap
29. September 2026 03:02
Hinzugefügt
test_cap
29. September 2026 03:02
Hinzugefügt
cap_status
29. September 2026 03:02
Hinzugefügt
publish_cap
29. September 2026 03:02
Hinzugefügt
list_caps
29. September 2026 03:02
Geändert
become_developer
29. September 2026 03:02
Geändert
get_balance
29. September 2026 03:02
Hinzugefügt
call_cap
29. September 2026 03:02
Hinzugefügt
get_cap
29. September 2026 03:02
Hinzugefügt
search_caps
29. September 2026 03:02
Geändert
list_models
29. September 2026 03:02
Geändert
list_categories
29. September 2026 03:02
Geändert
get_skill
29. September 2026 03:02
Geändert
search_skills
29. September 2026 03:02
Hinzugefügt
submit_app_review
27. September 2026 02:53
Hinzugefügt
test_app
27. September 2026 02:53