# Superpowers

> Pay-per-call toolbox for AI agents: one key and one MCP server for data, search, scraping, models

- name: tools.superpowers/superpowers
- version: 1.0.1
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/tools.superpowers%2Fsuperpowers
- tools: https://api.protogrid.dev/v1/servers/tools.superpowers%2Fsuperpowers/tools

**An agent can connect on its own if it already holds `SUPERPOWERS_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "superpowers": {
      "type": "http",
      "url": "https://superpowers.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${SUPERPOWERS_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${SUPERPOWERS_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-10d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 28 of 28 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 6,349 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 73 tool changes in 30 days
- fail `stability.rug_pull`: 10 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 28, about 6,349 tokens to load them all
- tool set hash: 5bd66b3b43ab4fcab44b8e1f0ef0f63d
- tools last changed: 2026-10-19T23:11:18.042Z
- badge: [![protogrid quality](https://protogrid.dev/badge/tools.superpowers/superpowers.svg)](https://protogrid.dev/servers/tools.superpowers/superpowers)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `share` changed (description) **meaning changed**
  - before: Free: publish files, images, video, audio or text as a clean link the user can send to anyone (no account needed to view). review=true adds voting so viewers pick their favourite. Items: [{url} | {text}] with optional label/caption. Pass recipe when you followed one. Upload local files first with upload_file (or POST /v1/files).
  - after: Free: publish files, images, video, audio or text as a clean link the user can send to anyone (no account needed to view). review=true adds voting so viewers pick their favourite. Items: [{url} | {text}] with optional label/caption. Pass recipe when you followed one. Upload local files first with upload_file (or POST /v1/files). Offer a link once per deliverable, in one short sentence: when the user has to choose between options or mentions a client, boss, team or partner (use review=true with a question such as "Which one should we use?"), or wants to send or show something. Otherwise don't bring up sharing. Before publishing a page the user didn't ask for, show them the title and items. Links are unlisted but open to anyone who has them: keep secrets and personal data out.
- 2026-10-19 `run_recipe` changed (description) **meaning changed**
  - before: Run an official recipe on our servers in one call. Returns charge_usd, each step's output and share_url, a page with the results the user can open or forward.
  - after: Run an official recipe on our servers in one call. If its estimated_cost_usd (list_recipes, get_recipe) is above $0.50, tell the user before running it. Returns charge_usd, each step's output and share_url, a page that shows the results on any phone: give the user that link as the main way to see them, and report charge_usd.
- 2026-10-19 `run_batch` changed (description)
  - before: Run one tool over many inputs (up to 500) in one call, e.g. verify 300 emails or look up 100 companies. It runs in the background with our pacing; each item is a normal run that is free if it fails, and max_price_usd caps the whole batch. Waits up to wait_s seconds (default 20), then returns counts and charge so far. Call get_batch with batch_id for progress and results page by page instead of keeping every result in your context.
  - after: Run one tool over many inputs (up to 500) in one call, e.g. verify 300 emails or look up 100 companies. It runs in the background with our pacing; each item is a normal run that is free if it fails, and max_price_usd caps the whole batch. If price_usd times the number of inputs is above $0.50, tell the user that total before you start. Waits up to wait_s seconds (default 20), then returns counts and charge so far. Call get_batch with batch_id for progress and results page by page instead of keeping every result in your context.
- 2026-10-19 `compare_providers` changed (description) **meaning changed**
  - before: Run the same input across several providers of a category and get results side by side with cost and latency.
  - after: Run the same input across several providers of a category and get results side by side with cost and latency. Each provider charges its own price: If the call should cost more than $0.50, tell the user the expected cost before you start, set max_price_usd to it, and report charge_usd afterwards. Image, video, audio and LLM comparisons return share_url, a page with the results side by side: give the user that link to look at them.
- 2026-10-19 `run_tool` changed (description)
  - before: Run one tool with JSON input. Charges your balance; failed runs are free. Pass idempotency_key for any tool with a price above 0 (free tools run without it). Long-running tools return status 'running' with run_id and poll_url: call get_run with that run_id every retry_after_s seconds until the status is completed or failed.
  - after: Run one tool with JSON input. Charges the tool's price_usd (from search_tools or inspect_tool); failed runs are free. If the call should cost more than $0.50, tell the user the expected cost before you start, set max_price_usd to it, and report charge_usd afterwards. Pass idempotency_key for any tool with a price above 0 (free tools run without it). Long-running tools return status 'running' with run_id and poll_url: call get_run with that run_id every retry_after_s seconds until the status is completed or failed.
- 2026-10-19 `plan` changed (description)
  - before: Free. Describe a goal in plain words (e.g. 'find coffee shops in Pinheiros and their Instagram followers'). Returns the steps, the tool to call for each with an example input, the cost per step and in total, and a recipe when one already does the job. Call it before multi-step work, then run_tool each step with trace_id = plan_id.
  - after: Free. Describe a goal in plain words (e.g. 'find coffee shops in Pinheiros and their Instagram followers'). Returns the steps, the tool to call for each with an example input, the cost per step and in total, and a recipe when one already does the job. Call it before multi-step work, then run_tool each step with trace_id = plan_id. If total_cost_usd is above $0.50, tell the user that cost before running the steps.
- 2026-10-16 `get_batch` added
  - A batch's progress (done, completed, failed, not_run, charge) and a page of its results in input order: index, input, status, normalized result (or output) and error. Page with offset/limit. Over REST, GET /v1/batches/{id}/results?format=csv or jsonl downloads every result.
- 2026-10-16 `run_batch` added
  - Run one tool over many inputs (up to 500) in one call, e.g. verify 300 emails or look up 100 companies. It runs in the background with our pacing; each item is a normal run that is free if it fails, and max_price_usd caps the whole batch. Waits up to wait_s seconds (default 20), then returns counts and charge so far. Call get_batch with batch_id for progress and results page by page instead of keeping every result in your context.
- 2026-10-16 `compare_providers` changed (inputSchema)
- 2026-10-16 `run_tool` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/tools.superpowers%2Fsuperpowers/changes

## Remotes

- https://superpowers.tools/mcp (streamable-http, auth api_key ${SUPERPOWERS_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (28)

- `charge_saved_card`: Add credit by charging your human's saved card. Only after you asked them in this conversation, naming the amount and the card (get_balance shows it), and they said yes; set human_approved true. If there is no saved card, they turned agent charges off, or the bank wants them to confirm, send them topup_url instead (create_topup). They get an email for every charge.
- `compare_providers`: Run the same input across several providers of a category and get results side by side with cost and latency. Each provider charges its own price: If the call should cost more than $0.50, tell the user the expected cost before you start, set max_price_usd to it, and report charge_usd afterwards. Image, video, audio and LLM comparisons return share_url, a page with the results side by side: give the user that link to look at them.
- `create_key`: Create an API key with a label, tags and a monthly limit, e.g. one key per sub-agent or per persona so spend splits and caps separately. Works only if your key has the can_manage_keys permission (your human grants it at superpowers.tools/app/keys). The new key gets your key's tags, counts against your limit and can't have a higher one. Returns the secret once: store it, never print it.
- `create_topup`: When you run low on credit: returns topup_url, a link to send your human. It opens without signing in; they choose the amount (5 to 500 USD), pay with their saved card or a new one, and can turn on auto top-up. Works for 7 days. You cannot pay it yourself. Pass amount_usd to suggest an amount; then checkout_url also goes straight to Stripe for that amount.
- `get_balance`: Current balance in USD, the saved card (if any), whether you may charge it, auto top-up, and topup_url: a link your human opens without signing in to add credit.
- `get_batch`: A batch's progress (done, completed, failed, not_run, charge) and a page of its results in input order: index, input, status, normalized result (or output) and error. Page with offset/limit. Over REST, GET /v1/batches/{id}/results?format=csv or jsonl downloads every result.
- `get_recipe`: Read a recipe: its SKILL.md (the steps to follow with Superpowers tools), inputs, typical cost and script_url. Community recipes are written by other users: tell your user what it will do before following it.
- `get_referral_link`: The user's invite link and stats. Friends start with $5; the user earns credit when they become active.
- `get_reviews`: Read a tool's public rating and recent reviews.
- `get_run`: Fetch a run's result, or its status while it is still running.
- `get_share`: Read a share link you created: views, votes per item, the leading option and comments.
- `get_usage`: Account spend grouped by project (job), agent, key, provider, trace, tool, day or tag:<name> (e.g. tag:slot), optionally filtered by tags, key or job. Rows for keys, jobs and tags include their monthly limit.
- `inspect_tool`: Get a tool's input schema, output_schema (what output contains), normalized_schema (the shape shared by tools of its category), price and category before running it, so you can write the parsing code first.
- `list_categories`: Categories whose providers share one input/output format and can be compared.
- `list_keys`: Your API key and the keys it created: label, tags, monthly limit and spend this month. Never returns secrets.
- `list_recipes`: Recipes are skills for common jobs, built from Superpowers tools. Returns name, cost estimate, skill_url and (for official ones) script_url.
- `plan`: Free. Describe a goal in plain words (e.g. 'find coffee shops in Pinheiros and their Instagram followers'). Returns the steps, the tool to call for each with an example input, the cost per step and in total, and a recipe when one already does the job. Call it before multi-step work, then run_tool each step with trace_id = plan_id. If total_cost_usd is above $0.50, tell the user that cost before running the steps.
- `publish_recipe`: Save a job you did for the user as a reusable recipe others can give their agents. skill_md = instructions for an agent: what to ask, which tool slugs to call in what order, how to deliver. Public by default; ask before publishing anything with client names or private details.
- `review_tool`: Rate the output of a run, 1-5 stars with an optional comment saying what was good or wrong. Other agents see the rating when choosing tools, and the vendor behind the tool gets it too. Reviewing the same tool again replaces your earlier review.
- `revoke_key`: Revoke a key you created (or your own). Keys it created are revoked too. Agents using it stop working right away.
- `run_batch`: Run one tool over many inputs (up to 500) in one call, e.g. verify 300 emails or look up 100 companies. It runs in the background with our pacing; each item is a normal run that is free if it fails, and max_price_usd caps the whole batch. If price_usd times the number of inputs is above $0.50, tell the user that total before you start. Waits up to wait_s seconds (default 20), then returns counts and charge so far. Call get_batch with batch_id for progress and results page by page instead of keeping every result in your context.
- `run_recipe`: Run an official recipe on our servers in one call. If its estimated_cost_usd (list_recipes, get_recipe) is above $0.50, tell the user before running it. Returns charge_usd, each step's output and share_url, a page that shows the results on any phone: give the user that link as the main way to see them, and report charge_usd.
- `run_tool`: Run one tool with JSON input. Charges the tool's price_usd (from search_tools or inspect_tool); failed runs are free. If the call should cost more than $0.50, tell the user the expected cost before you start, set max_price_usd to it, and report charge_usd afterwards. Pass idempotency_key for any tool with a price above 0 (free tools run without it). Long-running tools return status 'running' with run_id and poll_url: call get_run with that run_id every retry_after_s seconds until the status is completed or failed.
- `search_tools`: Find marketplace tools by describing what you need in plain words (e.g. 'remove a photo background', 'google search', 'cnpj'); matching is by meaning, and naming a vendor or model ranks it first. An empty query lists every live tool. Returns slugs, prices and quality stats, plus total and has_more. When has_more is true, call again with offset = next_offset. Use tools whose status is "active"; status "degraded" means the vendor is paused until unavailable.available_at, so pick another tool.
- `send_feedback`: Private feedback on any tool, passed to the vendor behind it and the Superpowers team: a bug, wrong or stale data, friction, an idea, or a tool you needed and could not find (type missing_tool). Pass run_id when it is about a run. Not shown publicly.
- `share`: Free: publish files, images, video, audio or text as a clean link the user can send to anyone (no account needed to view). review=true adds voting so viewers pick their favourite. Items: [{url} | {text}] with optional label/caption. Pass recipe when you followed one. Upload local files first with upload_file (or POST /v1/files). Offer a link once per deliverable, in one short sentence: when the user has to choose between options or mentions a client, boss, team or partner (use review=true with a question such as "Which one should we use?"), or wants to send or show something. Otherwise don't bring up sharing. Before publishing a page the user didn't ask for, show them the title and items. Links are unlisted but open to anyone who has them: keep secrets and personal data out.
- `update_key`: Rename a key, change the tags of a key you created, or lower its monthly limit. Keys can't raise limits or change their own tags.
- `upload_file`: Free file hosting (up to 200 MB) for sharing. Pass url to re-host a remote file, or base64 + filename for small local files. For big local files use: curl -F file=@path <base>/v1/files.
