Toolweather

MCP health (~2k servers) + API status & model deprecations (~40 APIs). One suite for agents.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
81%
Calidad de los nombres
92%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~5,150Tokens (definiciones de herramientas)
~1.2 KBTamaño de respuesta típico
Impacto significativo en la atención (4.02% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "toolweather": {
      "url": "https://toolweather.toolweather.workers.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://toolweather.toolweather.workers.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (18)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢check_mcp_server_health(server, tool, fresh, bearer_token)

Read whether one remote MCP server, and optionally one tool on it, is safe to call right now. Use before adding or calling that server, or after its calls fail or time out. Do not use it to search by capability (find_alternative_mcp_servers), to vet a list (batch_check_mcp_servers; stored verdicts only), or to subscribe to later outages (watch_server). A result older than 5 minutes, or fresh/bearer_token, runs one read-only initialize and spends a live-check credit (200/day, then the cache). Counts on the Toolweather quota (1,000/key or 50/day anonymous). Returns summary, verdict (safe|caution|unsafe|unknown), recommended_action (call_it|call_with_care|use_alternative|verify_yourself), reasons, latency_ms, auth, last_tool_change, checked_at, and freshness. Also callable as is_safe_to_call.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "server": {
      "type": "string",
      "description": "Registry name (io.github.owner/name) or that server's MCP endpoint URL. Partial names match the Toolweather index. A product homepage usually will not match.",
      "examples": [
        "com.ufcalendar/fight-api",
        "https://mcp.example.com/mcp"
      ]
    },
    "tool": {
      "type": "string",
      "description": "Optional tool name on that server. If the server is up but this name is absent, verdict is unsafe. Omit to judge the server only."
    },
    "fresh": {
      "type": "boolean",
      "description": "True forces a live read-only initialize now and spends one of 200 live checks/day (priced as a live check). Omit to live-check only when the stored result is older than 5 minutes."
    },
    "bearer_token": {
      "type": "string",
      "description": "Token for the target server only, not a Toolweather key. One authenticated initialize + tools/list, never stored or logged. Setting it forces a live check."
    }
  },
  "required": [
    "server"
  ]
}
🟢find_alternative_mcp_servers(query, limit)

Search the Toolweather index for healthy MCP servers by capability, or for a replacement for one broken server. Use when check_mcp_server_health is unsafe or unknown, or when you lack a capability. Do not use it to judge one server you already chose (check_mcp_server_health) or to subscribe to later outages (watch_server). Does not call those servers and does not spend a live-check credit; unsafe rows are dropped. Returns summary, checked_at, and alternatives[] with server, url, verdict, latency_ms, and matching_tools. Counts on the Toolweather daily quota. Also callable as suggest_alternatives.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Capability phrase such as 'send email', or the registry name/URL of a server to replace. Not a tool name on Toolweather itself.",
      "examples": [
        "send email",
        "web search"
      ]
    },
    "limit": {
      "type": "integer",
      "description": "Max ranked servers to return. Integer 1-20; omitted means 5. There is no paging cursor."
    }
  },
  "required": [
    "query"
  ]
}
🟡get_api_key

Mint one new Toolweather API key (tw_…) for health checks and watches on this server (1,000 calls/day, 3 watches). Use it once per install, then send that key as the X-API-Key header. Do not call it every turn, and do not use it when you need a SpendGate key (spendgate_get_api_key returns sg_live_…) or a PayCheck key (paycheck_get_api_key returns pc_live_…). Takes no arguments; the caller network is the limit. Each call creates a different secret. Returns api_key once, plus daily_limit and watches_limit; later calls cannot fetch it again. A few new keys per network per day, then reuse an existing key. Health checks also work with no key at 50 calls/day.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡watch_server(server, webhook_url)

Create one HTTPS webhook subscription for an indexed MCP server's verdict, auth requirement, or breaking tool-list change. Use instead of polling check_mcp_server_health. Do not use it to read health now (check_mcp_server_health) or to list subscriptions (list_watches). Requires a Toolweather key from get_api_key. The same server and webhook_url do not create a second watch; a different URL does. Three watches are free; each extra watch is $0.05 for 30 days via x402. Returns id and a one-time secret for the signature header. Toolweather later POSTs alerts to the webhook_url you supply. Does not spend the daily check quota.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "server": {
      "type": "string",
      "description": "Registry name (io.github.owner/name) or that server's MCP endpoint URL. Partial names match the Toolweather index. A product homepage usually will not match.",
      "examples": [
        "com.ufcalendar/fight-api",
        "https://mcp.example.com/mcp"
      ]
    },
    "webhook_url": {
      "type": "string",
      "description": "Public https URL Toolweather will POST JSON alerts to. Private, loopback, and non-https hosts are rejected. The same URL plus server does not create a second watch."
    }
  },
  "required": [
    "server",
    "webhook_url"
  ]
}
🟢list_watches

List webhook subscriptions stored for the Toolweather API key on this request, including delivery health. Use to copy a watch id before unwatch_server, or to see failures. Do not use it to learn if a server is up (check_mcp_server_health) or to create a subscription (watch_server). No arguments and no quota charge. The key is the X-API-Key header; anonymous callers are rejected. Returns watches[] (id, server, webhook_url, active, disabled_reason, last_known, consecutive_failures, last_delivery) and free_tier. Does not reveal webhook secrets and does not probe servers.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🔴unwatch_server(id)

Delete one webhook subscription for this Toolweather API key and drop its pending deliveries. Use to stop alerts or to free a watch slot. Do not use it to change a webhook URL (delete, then watch_server) or to check health (check_mcp_server_health). Pass id from list_watches, not a server name. Repeating the same id deletes nothing further and returns watch not found. Returns {deleted: id}. Requires get_api_key first. Does not contact the MCP server and does not spend check quota.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Watch id from list_watches (w_…). Not a server registry name. An unknown id returns watch not found and removes nothing else."
    }
  },
  "required": [
    "id"
  ]
}
🟢batch_check_mcp_servers(servers)

Read stored health verdicts for up to 25 MCP servers you already intend to call. Use at startup to vet that list. Do not use it for a live handshake or auth detail (check_mcp_server_health) or to discover servers by capability (find_alternative_mcp_servers). Does not contact the remotes and never spends a live-check credit. Each name still counts as one Toolweather quota call; over quota the batch is one x402 charge ($0.01). Returns summary, checked_at, and results[] with the same verdict fields as a single check. Unknown names come back verdict unknown.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "servers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 25,
      "description": "Registry names or MCP endpoint URLs already chosen, at most 25. Not a capability search. Each entry counts as one daily Toolweather call. Unknown names return verdict unknown."
    }
  },
  "required": [
    "servers"
  ]
}
🟢check_api_status(provider)

Read whether one tracked AI or developer API provider is operational, degraded, or down. Use before calling that provider, or right after 5xx, 429, or timeouts. Do not use it for an MCP server (check_mcp_server_health) or a model id (check_model_deprecation); ids come from list_providers, not URLs. Does not invoke the provider's API. Returns summary, verdict, recommended_action, open incidents, affected components, checked_at, and freshness (about every 4 minutes). Uses Upstream's quota, then $0.003 via x402, not the Toolweather check quota. Also callable as get_status.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "provider": {
      "type": "string",
      "description": "Lowercase id from list_providers, such as openai, anthropic, google-ai, github, or stripe. Not a URL and not an MCP registry name.",
      "examples": [
        "openai",
        "anthropic",
        "github"
      ]
    }
  },
  "required": [
    "provider"
  ]
}
🟢check_model_deprecation(model, id)

Read whether one LLM model id is active, deprecated, or retired, plus its shutdown date and the provider's replacement. Use before hard-coding a model id, or when a call fails as model-not-found. Do not use it to see if the provider is down (check_api_status) or to list many retirements (list_recent_api_changes). Prefer model; id is only the legacy argument name. Returns summary, verdict, recommended_action (keep_using|plan_migration|switch_now|verify_with_provider), replacement, shutdown_date, evidence, and freshness. Upstream quota, then $0.003 via x402. Also callable as get_model.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model id exactly as the provider API expects, such as gpt-4o or claude-3-opus-20240229. Not a provider name; that is check_api_status.",
      "examples": [
        "gpt-4-0613",
        "claude-3-opus-20240229"
      ]
    },
    "id": {
      "type": "string",
      "description": "Legacy name for the same model id. Prefer model. Not a provider id."
    }
  }
}
🟢list_recent_api_changes(since, provider, kind, limit)

List recent outages, deprecation-page edits, model retirements, and pricing-page edits across tracked AI and developer APIs. Use to see what changed in a window, or to explain a sudden integration error. Do not use it for one provider's live status (check_api_status) or for the once-a-day narrative (get_digest). Returns summary plus items with timestamps and source links. Upstream quota, then $0.01 via x402. Also callable as get_changes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "description": "ISO 8601 lower bound. Omit for the last 7 days. Not a YYYY-MM-DD digest key; that is get_digest's date."
    },
    "provider": {
      "type": "string",
      "description": "Optional id from list_providers. Omit to span every tracked provider."
    },
    "kind": {
      "type": "string",
      "enum": [
        "status",
        "deprecations",
        "model_retirement",
        "pricing"
      ],
      "description": "Optional change class. Omit for every class. Not a provider id."
    },
    "limit": {
      "type": "number",
      "description": "Max rows to return. Default 100, max 500. Not a page token."
    }
  }
}
🟢list_providers

List the AI and developer API providers Upstream tracks, each with state (operational, degraded, or outage) and checked_at. Use to choose a provider id before check_api_status. Do not use it as an MCP health check (check_mcp_server_health), as the change feed (list_recent_api_changes), as a spend score (score_spend), or as a merchant check (check_merchant). No arguments. Returns the catalog only. Does not probe providers or use the Toolweather check quota. Free.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢get_digest(date)

Read one daily digest of AI/dev API incidents, model retirements, pricing-page edits, and breaking MCP server changes. Use once a day instead of polling list_recent_api_changes. Do not use it for a live provider check (check_api_status) or a filtered change feed (list_recent_api_changes). Omit date for the latest issue. Returns that issue's summary and items. Free: no Toolweather quota and no webhook.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "description": "UTC day YYYY-MM-DD of one digest issue. Omit for the latest issue. Not an ISO timestamp and not a range."
    }
  }
}
🟢score_spend(amount, currency, category, purpose, merchant, ...)

Score one planned payment and return approve, ask_human, or block before any tool sends money. Use before a crypto transfer, gift card, subscription, or paid API call. Do not use it for uptime (check_mcp_server_health, check_api_status), to judge whether a host or wallet is trusted (check_merchant), or to read remaining free scores (get_quota). Does not transfer funds. Returns score 0-100, verdict (approve means pay, ask_human means stop and ask a person, block means do not pay), reasons, and recommended_action. Scoring is deterministic, so rewording purpose will not change the verdict. amount is USD, not token units. api_key, when set, is a SpendGate sg_live_ key, not a Toolweather tw_ key from get_api_key. Uses SpendGate's quota (100/day anonymous, 1,000/day with an sg_live_ key), then $0.001 via x402, not the Toolweather check quota.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "number",
      "description": "Planned spend in USD, not in token atomic units. Compared with daily_budget_remaining and monthly_budget_remaining when those are set."
    },
    "currency": {
      "type": "string",
      "description": "Payment currency. Defaults to USDC. Does not convert amount; amount stays in USD."
    },
    "category": {
      "type": "string",
      "description": "One of status_check, api_call, saas, infra, gift_card, crypto_transfer, irreversible. Unknown categories are scored as unknown risk, not rejected."
    },
    "purpose": {
      "type": "string",
      "description": "Short human description. Used as the category when category is omitted. Rewording it does not change a v1 verdict."
    },
    "merchant": {
      "type": "string",
      "description": "Merchant name or https endpoint URL that would receive the spend. The call does not pay this URL."
    },
    "endpoint": {
      "type": "string",
      "description": "Alias of merchant when the payee is an API URL. Pass one of them, not both for different payees."
    },
    "agent_id": {
      "type": "string",
      "description": "Your agent or key id. Echoed back, not scored in v1."
    },
    "api_key": {
      "type": "string",
      "description": "Optional SpendGate key (sg_live_…). Not a Toolweather tw_ key; that key belongs in the X-API-Key header. Omit to use the anonymous IP/session cap, which can reset on rotating egress."
    },
    "daily_budget_remaining": {
      "type": "number",
      "description": "USD still available today. Amount above this is blocked. Omit if you have no daily cap to enforce."
    },
    "monthly_budget_remaining": {
      "type": "number",
      "description": "USD still available this month. Amount above this is blocked. Omit if you have no monthly cap."
    },
    "risk_hints": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Self-reported hints. Raising: new_payee, new_merchant, first_payment, high_velocity, mismatched_purpose, off_platform, shared_wallet. Lowering: trusted_repeat, within_policy, human_preapproved. known_merchant marks the payee known."
    }
  },
  "required": [
    "amount"
  ],
  "additionalProperties": false
}
🟢get_quota(api_key)

Read how many free SpendGate scores this caller has left today. Use before a run of score_spend calls. Do not use it for the Toolweather health-check quota, for PayCheck's merchant-check cap (paycheck_get_quota), or to mint a key (spendgate_get_api_key or get_api_key). Does not consume a score and is not billed. Pass an sg_live_ key to read that key's cap; omit it only for the anonymous IP/session cap, which can reset on rotating egress. A tw_ key does not select this cap. Returns the remaining SpendGate count only.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Optional sg_live_ key from spendgate_get_api_key. Not a Toolweather tw_ key. Omit only to read the anonymous IP/session cap, which can reset on rotating egress."
    }
  },
  "additionalProperties": false
}
🟢spendgate_get_api_key(label)

Mint one new SpendGate API key (sg_live_…) for score_spend and get_quota. Use it once, then pass the secret as api_key on those tools. Do not call it every turn, and do not use it when you need a Toolweather key for health checks and watches (get_api_key returns tw_…). No required arguments. Each call creates a different secret. Returns that secret once. Not billed, and not drawn from the Toolweather quota. label is an optional stored note, not an auth secret.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "description": "Optional note stored beside the new sg_live_ key, max 80 characters. Not a secret and not a Toolweather key."
    }
  },
  "additionalProperties": false
}
🟡check_merchant(target, amount_usd, category, api_key)

Decide whether an autonomous agent should pay one merchant, host, or wallet, and return trusted, unknown, suspicious, or block. Use immediately before a payment, a checkout redirect, or a transfer to a new 0x address. Do not use it to send money, to score a dollar amount (score_spend), or to read remaining checks (paycheck_get_quota). Does not sign transactions or hold wallet keys. target is a bare domain, an https URL, or a 0x address with 40 hex characters. amount_usd and category are ignored, so changing them does not change the verdict. trusted is only the published allowlist of known AI and developer APIs on https port 443. A new or random domain is never trusted. A wallet is never trusted. If the URL contains an embedded 0x address, this scores the host only; pass the bare address to score the wallet. api_key, when set, is a PayCheck pc_live_ key, not a Toolweather tw_ key from get_api_key and not a SpendGate sg_live_ key. Uses PayCheck's quota (100/day anonymous or an anon: bundle client, 1,000/day with a pc_live_ key or a hex Toolweather bundle client), then $0.001 via x402, not the Toolweather check quota. The same target for the same caller is idempotent for 60 seconds and does not consume a second check.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "description": "Domain, https URL, or 0x wallet (40 hex characters) to score before paying. Not a dollar amount (score_spend) and not an MCP registry name."
    },
    "amount_usd": {
      "type": "number",
      "minimum": 0,
      "description": "Ignored by the scorer. Sending a different amount cannot change the verdict. Not a SpendGate amount."
    },
    "category": {
      "type": "string",
      "description": "Ignored by the scorer. Do not put instructions or a purpose in this field. Not a SpendGate category."
    },
    "api_key": {
      "type": "string",
      "description": "Optional PayCheck key (pc_live_…). Not a Toolweather tw_ key and not a SpendGate sg_live_ key. Omit to use the anonymous or bundle-client allowance."
    }
  },
  "required": [
    "target"
  ],
  "additionalProperties": false
}
🟢paycheck_get_quota(api_key)

Read how many free PayCheck merchant checks this caller has left today. Use before a run of check_merchant calls, or after an HTTP 402. Do not use it for SpendGate's free-score cap (get_quota), the Toolweather health-check quota, or to mint a key (paycheck_get_api_key, spendgate_get_api_key, or get_api_key). Does not consume a check and is not billed. Pass a pc_live_ key to read that key's cap. A tw_ key does not select this cap. A hex x-tw-bundle-client (Toolweather key hash) is the 1,000/day tier; an anon: bundle client stays at 100/day. Returns subject_kind, limit, used, remaining, and resets_at for PayCheck only.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Optional pc_live_ key from paycheck_get_api_key. Not a Toolweather tw_ key and not an sg_live_ key. Omit only to read the anonymous or bundle-client allowance."
    }
  },
  "additionalProperties": false
}
🟢paycheck_get_api_key

Mint one new PayCheck API key (pc_live_…) for check_merchant and paycheck_get_quota. The key raises the merchant-check allowance from 100 to 1,000 per UTC day. Use it once, then pass the secret as api_key on those tools. Do not call it every turn, and do not use it when you need a Toolweather key (get_api_key returns tw_…) or a SpendGate key (spendgate_get_api_key returns sg_live_…). No arguments. Each call creates a different secret, returned once. Not billed, and not drawn from the Toolweather quota. Limited to 10 new keys per caller IP per UTC day.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada18 herramientas