MCPサーバー

Qumge: Agent Capabilities & Skills

com.qumge/skills

このMCPでできること

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.
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
出力スキーマ
{'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.
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.
入力スキーマ
{'type': 'object', 'required': [], 'properties': {}}
出力スキーマ
{'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.
入力スキーマ
{'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."}}}
出力スキーマ
{'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.)
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'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.
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.
入力スキーマ
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'How many to return. Default 20, max 50.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.
入力スキーマ
{'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.'}}}
出力スキーマ
{'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.)
入力スキーマ
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
出力スキーマ
{'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.)
入力スキーマ
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "The cap's slug."}}}
出力スキーマ
{'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']}}}
変更
test_cap
2026年10月1日2:54
変更
publish_cap
2026年10月1日2:54
変更
become_developer
2026年10月1日2:54
削除
test_app
2026年9月29日3:02
削除
submit_app_review
2026年9月29日3:02
削除
search_apps
2026年9月29日3:02
削除
publish_app
2026年9月29日3:02
削除
list_apps
2026年9月29日3:02
削除
get_app
2026年9月29日3:02
削除
call_app
2026年9月29日3:02
削除
app_status
2026年9月29日3:02
追加
list_wanted
2026年9月29日3:02
追加
request_payout
2026年9月29日3:02
追加
get_earnings
2026年9月29日3:02
追加
submit_cap
2026年9月29日3:02
追加
test_cap
2026年9月29日3:02
追加
cap_status
2026年9月29日3:02
追加
publish_cap
2026年9月29日3:02
追加
list_caps
2026年9月29日3:02
変更
become_developer
2026年9月29日3:02
変更
get_balance
2026年9月29日3:02
追加
call_cap
2026年9月29日3:02
追加
get_cap
2026年9月29日3:02
追加
search_caps
2026年9月29日3:02
変更
list_models
2026年9月29日3:02
変更
list_categories
2026年9月29日3:02
変更
get_skill
2026年9月29日3:02
変更
search_skills
2026年9月29日3:02
追加
submit_app_review
2026年9月27日2:53
追加
test_app
2026年9月27日2:53