protogrid

Search / io.github.Humanleap/toolrouter

ToolRouter

R0· no sign-in

The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.

v0.3.2 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality85good
Trust94of 100
Uptime, 30 days100%
Latency p50361 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "toolrouter": {
      "type": "http",
      "url": "https://api.toolrouter.com/mcp"
    }
  }
}
claude mcp add --transport http toolrouter https://api.toolrouter.com/mcp
[mcp_servers.toolrouter]
url = "https://api.toolrouter.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "toolrouter": {
      "type": "remote",
      "url": "https://api.toolrouter.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "toolrouter": {
      "type": "http",
      "url": "https://api.toolrouter.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=toolrouter&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLnRvb2xyb3V0ZXIuY29tL21jcCJ9"
}
{
  "servers": {
    "toolrouter": {
      "type": "http",
      "url": "https://api.toolrouter.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "toolrouter": {
      "httpUrl": "https://api.toolrouter.com/mcp"
    }
  }
}
extensions:
  "toolrouter":
    enabled: true
    name: "toolrouter"
    type: streamable_http
    uri: "https://api.toolrouter.com/mcp"
    timeout: 300

Quality 85 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • warn
    tools.descriptions4 of 48 tools have a description under 20 characters
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations48 of 48 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • warn
    tools.token_costabout 9,367 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

48 tools, about 9,367 tokens to load them all · tool set 049beb654c3a · checked 2026-10-20 11:40 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 94 / 100

provenance90
liveness100
freshness85
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-45d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.toolrouter.com/mcp streamable-httpnoneyes100%361 ms2025-11-252026-10-20

Tools (48)

account_listread-onlyList all billing contexts (personal + teams) or get detail on one. No slug → summary list. With slug → full detail including team members, role, subscription status, and pointers to the team's connectors, credentials, keys, and files.
account_preferencesRead or write billing preferences (auto-reload, budget cap, default context). Pass action: "get" to read, action: "set" with fields to write.
account_setupread-onlyInitialize or re-check your account, provision it when needed, and return your user ID and plan. CALL THIS FIRST when the user asks to set up ToolRouter, connect their account, check their account status, or get started.
account_switchSet the active billing context. Accepts a slug (e.g. "personal", "team:nd7fx…") or team ID.
brain_addCreate a new brain page. Knowledge you add here will be available to all future tool calls. Optional wing/room/hall organise the page in the MemPalace hierarchy for sharper retrieval.
brain_adminBrain admin operations. Pass action: "lint" | "link" | "promote" | "rebuild_index" | "team_sleep". team_sleep enables/disables/runs the nightly team consolidation cycle — pass sub_action "enable" (with optional timezone), "disable", "status", or "run_now". Team admin role required for team_sleep actions.
brain_deletedestructiveArchive a brain page. It will no longer appear in searches or tool consultations.
brain_expandread-onlyRetrieve the verbatim source text (a "drawer") linked from a brain page. Use this when a summary lacks specifics you need — drawers contain the original tool output, redacted for credentials. Returns 404 if the page has no linked drawer (not all pages do — drawers are a Step 4 feature for allowlisted tools only).
brain_lintread-onlyRun maintenance checks on your brain: find stale pages, orphaned knowledge, and other issues.
brain_queryread-onlySearch your knowledge brain for relevant information. Returns pages ranked by relevance. Optional wing/hall narrow the search to a slice of the brain (e.g. wing="engineering", hall="preference").
brain_settingsView and toggle your brain settings. Currently supports: drawers_enabled (store raw tool output alongside summaries for richer recall).
brain_statusread-onlyView brain page counts and recent pages for your personal and team brain.
brain_updateEdit an existing brain page's content or metadata. wing/room/hall can be patched to re-file a page. scope can be changed to move a page between your personal and team brain — useful when an auto-ingested page landed in the wrong place. Moving a page to team scope requires team admin role.
brain_wingsread-onlyList the wings of your brain — the top-level areas your knowledge is organised under (e.g. "engineering", "family"). For each wing returns the rooms and halls inside, page count, and last-updated time. Use this to discover the right wing/hall to pass to brain_query.
connector_addConnect a new OAuth account or MCP server. For OAuth: pass type: "oauth", kind: "slack". For MCP catalog: pass catalog_slug. For custom MCP: pass url + auth_type.
connector_listread-onlyList connected accounts and MCP servers (summary) or detail on one connector. Pass slug for detail including every tool the connector exposes. Optional type: "oauth" | "mcp" filter. Pass include_available: true to also see available catalog MCPs you can connect.
connector_permissionsView or set permissions for tools on a connected MCP server — which tools are allowed, rate limits, budget caps, argument restrictions. Pass the connector slug (from connector_list) and action: "list" to see current rules, or action: "set" with tool_name + rules to update one. Team scope requires admin role.
connector_removedestructiveDisconnect a connector. Pass slug.
credential_defaultSet the default value for a multi-value credential.
credential_deletedestructiveRemove a saved credential. If label is provided, removes only that specific entry. If no label, removes ALL entries for that credential name.
credential_guideread-onlyGet setup instructions for a specific credential.
credential_listread-onlyList saved credentials (summary) or detail on one. Pass name for detail view. Pass show_available: true to include the full credential catalog.
credential_saveSave a credential (BYOK provider API key). Saved keys persist across sessions and are used automatically.
credits_balanceread-onlyCurrent balance, plan tier, rate limits, and any negative-balance warnings for the active context.
credits_usageread-onlyUsage summary or history. Pass scope: "me" | "team" and detail: "tool" | "skill". Sorted by cost with _others rollup.
discoverread-onlyFind the right ToolRouter tool for your task. Describe what you need in plain language. Examples: "analyze a website", "research competitors", "find prospect companies", "check DNS records". Exact tool name (e.g. "seo") returns full schemas and examples. Flow: prefer route({ intent }) to pick and run a tool. Use discover when you need schemas or a listing, then call use_tool(tool, skill, input). Every discover response also includes a top-level `connectors` array listing SaaS accounts the user has already connected (LinkedIn, Google, Notion, etc.). Use that to pick the right tool and account without asking — e.g. if `connectors` shows LinkedIn, the linkedin-post tool is ready to use. Categories: data, media, search, marketing, development, communication, analytics, productivity, ai, finance, security, infrastructure
feedback_debugReport a ToolRouter platform bug that blocks you from completing the user's task. Use this when you suspect the issue is on our side — a tool crashed, returned malformed data, timed out unexpectedly, or behaved inconsistently. Include the relevant ToolRouter errors, call IDs, non-sensitive input shape, retries, and expected behavior. Do not include chat history, unrelated conversation text, uploaded file contents, personal data, API keys, or secrets. Reports are stored and reviewed within hours. Skip this for expected errors like invalid input, missing credentials, insufficient balance, rate limits, or genuine "not found" results — those aren't bugs. Limit: 5 reports per hour.
feedback_request_toolAsk ToolRouter to build a tool that does not exist yet. Use this when discover returned nothing useful for what the user needs. Describe the capability in plain terms — do not include personal data, API keys, or secrets. Requests go straight to the team. Limit: 5 per hour.
feedback_reviewSubmit a review or star rating.
file_deletedestructiveDelete a file. Cannot be undone. For team files: requires owner/admin role.
file_listread-onlyList or search files. Optional query triggers semantic search. Supports section, tags, plan_status, limit, cursor filters.
file_readread-onlyRead a file's full content. Text files return content inline. Binary files (images, video) return a download URL.
file_writeCreate or update a file. Pass mode: "create" | "update". Binary uploads: call with binary: true to get an upload_url, then PUT bytes, then call with mode: "finalize".
invoice_listread-onlyList invoices for the active billing context.
job_canceldestructiveCancel a running job.
job_getread-onlyGet job status and result. Returns status: running | completed | failed and result when terminal. Keep polling until you get a terminal status.
job_listread-onlyList your active and recent jobs. Optional status filter.
key_createCreate a new API key. Returns the secret once — save it immediately.
key_deletedestructiveRevoke an API key. Refuses to revoke the currently-authenticating key.
key_listread-onlyList API keys (summary) or get detail on one key. Pass key_id for detail view.
outfit_listread-onlyList your outfits.
persona_listread-onlyList your personas.
product_listread-onlyList your products.
routeSend a natural-language intent and optionally any dimensions you already know (tool, skill, model, input fields). Fills only the blanks via Jev, then either executes the call or returns a ready-to-run use_tool payload. Explicit values are never overridden. Returns candidates when confidence is low or no tool fits. Flow: route → if confident and complete, result is returned; otherwise use the pre-filled call with use_tool.
scene_listread-onlyList your scenes.
subscription_manageGet a Stripe management URL (portal, upgrade, or cancel). Also covers billing portal — returns the URL for the user to open.
top_up_creditsAdd credits to your account. Returns a Stripe checkout URL — share it with the user to complete payment. Minimum $1.
use_toolCall a ToolRouter catalogue tool. Prefer `route` with a natural-language intent when you do not already know the tool and skill — it picks them, fills arguments, and runs the call. Use discover when you need schemas or a catalogue listing, then pass the exact tool name and skill here. IMPORTANT: "discover", "route", "credits_balance", and other built-in tools are NOT catalogue tools — call them directly, never through use_tool. Long-running tools return a job_id — poll with job_get. If a skill needs an image_url or file URL and you have a local file or base64 image, use file_write first to get a hosted URL, then pass that URL to the skill. BRAIN: Some tools require you to consult brain_query first. If use_tool returns an error about brain_context, call brain_query with a relevant query, then pass the result text as brain_context in your use_tool input.

Schemas: list_tools.

Similar MCP servers

More from io.github.Humanleap

Official server.json
{
  "name": "io.github.Humanleap/toolrouter",
  "icons": [
    {
      "src": "https://toolrouter.com/icon-256.png",
      "sizes": [
        "256x256"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "ToolRouter",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://api.toolrouter.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.3.2",
  "repository": {
    "url": "https://github.com/Humanleap/toolrouter-mcp",
    "source": "github"
  },
  "websiteUrl": "https://toolrouter.com",
  "description": "The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call."
}