{"openapi":"3.1.0","info":{"title":"ToolFit","version":"0.1.0","contact":{"name":"ToolFit","email":"hello@youraitools.co","url":"https://api.youraitools.co/toolfit/"},"license":{"name":"MIT"},"x-service-name":"ToolFit by YourAITools","x-category":"developer-tools","x-categories":["developer-tools","mcp","agent-infrastructure","security","x402"],"x-tags":["mcp","agent-tools","schema-validation","tool-poisoning","token-cost"],"x-logo":{"url":"https://youraitools.co/favicon-192.png"},"description":"ToolFit checks the tool list your agent loads, before it costs you: token cost per tool, which tools models will confuse (with fix hints), schemas that OpenAI, Anthropic, Gemini, Bedrock or MCP reject (with fixed definitions per provider), basic tool-poisoning patterns, and a pin (fingerprint) so a later diff call labels every change as breaking, review, suspicious or additive. Send a tools array (MCP, OpenAI, Anthropic, Gemini or Bedrock form) or a public remote MCP URL. The check tier (MCPCheck) preflights a remote MCP server: handshake, protocol version, sign-in method, x402 terms, latency, tool list and grade. Hosted watch: register a remote MCP server and an https webhook; ToolFit re-audits it every 24 h or 6 h for 30 days and sends an HMAC-SHA256 signed notification when its tools or grade change. Pay per call over x402 or with prepaid credits; free tier on the remote MCP endpoint. Deterministic checks of tool definitions (no LLM). URL mode lists tools and never calls them. A clean result is not a security guarantee: it cannot see what a server does at run time.","x-guidance":"GET /v1/lite?url=https%3A%2F%2Fapi.youraitools.co%2Fmcp%2Fhub ($0.003); GET /v1/full?url=https%3A%2F%2Fapi.youraitools.co%2Fmcp%2Fhub ($0.01); GET /v1/diff?pin=ts_0123456789abcdef0123456789abcdef&url=https%3A%2F%2Fapi.youraitools.co%2Fmcp%2Fhub ($0.002); GET /v1/check?url=https%3A%2F%2Fapi.youraitools.co%2Fmcp%2Fhub ($0.005); POST /v1/watch {\"url\":\"https://api.youraitools.co/mcp/hub\",\"webhook\":\"https://example.com/hooks/toolfit\"} ($0.25); POST /v1/watch/6h {\"url\":\"https://api.youraitools.co/mcp/hub\",\"webhook\":\"https://example.com/hooks/toolfit\"} ($0.60). POST the same fields as JSON. USDC via x402 (Base, Polygon, Arbitrum One), charged only on HTTP 200. Free: remote MCP at https://api.youraitools.co/toolfit/mcp (daily free calls per IP)."},"servers":[{"url":"https://api.youraitools.co/toolfit"}],"externalDocs":{"description":"Source and docs","url":"https://api.youraitools.co/toolfit/"},"paths":{"/v1/lite":{"get":{"operationId":"toolfit_lite","summary":"Tool-list health in one call: grade, token cost, provider compatibility verdicts, confusable-pair count, poisoning count and a pin ($0.003)","description":"Check an agent tool list (tools array or public remote MCP URL): grade A-F, estimated tokens per tool and total, compatible yes/no for OpenAI, Anthropic, Gemini, Bedrock and MCP, the top confusable tool pairs, basic poisoning count and a pin (set_id) for later diffs. Bad input or an unreachable URL: never charged.","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"3000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"parameters":[{"name":"tools","in":"query","required":false,"schema":{"type":"array"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},{"name":"providers","in":"query","required":false,"schema":{"type":"array"},"description":"Providers to check (default openai, anthropic, gemini, bedrock, mcp; add openai_strict for Structured Outputs strict mode). GET: comma list."}],"responses":{"200":{"description":"grade, score, tokens, per-provider verdicts, top confusable pairs, poisoning count, pin. (payment settled)","content":{"application/json":{"example":{"tools":31,"score":62,"grade":"D","tokens":{"total":11585,"avg":374},"providers":{"openai":{"compatible":false,"errors":8},"anthropic":{"compatible":true,"errors":0},"gemini":{"compatible":false,"errors":9}},"confusable":{"count":5,"high":1},"poisoning":{"findings":0,"high":0},"pin":{"set_id":"ts_0123456789abcdef0123456789abcdef"}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}},"post":{"operationId":"toolfit_lite_post","summary":"Same as GET, POST {\"url\":\"https://api.youraitools.co/mcp/hub\"}","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"3000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tools":{"type":"array","items":{"type":"object"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},"providers":{"type":"array","items":{"type":"string","enum":["openai","openai_strict","anthropic","gemini","bedrock","mcp"]},"description":"Providers to check (default openai, anthropic, gemini, bedrock, mcp; add openai_strict for Structured Outputs strict mode). GET: comma list."}}}}}},"responses":{"200":{"description":"grade, score, tokens, per-provider verdicts, top confusable pairs, poisoning count, pin. (payment settled)","content":{"application/json":{"example":{"tools":31,"score":62,"grade":"D","tokens":{"total":11585,"avg":374},"providers":{"openai":{"compatible":false,"errors":8},"anthropic":{"compatible":true,"errors":0},"gemini":{"compatible":false,"errors":9}},"confusable":{"count":5,"high":1},"poisoning":{"findings":0,"high":0},"pin":{"set_id":"ts_0123456789abcdef0123456789abcdef"}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}}},"/v1/full":{"get":{"operationId":"toolfit_full","summary":"Full tool-list audit: every provider issue with JSON path and source, fixed definitions per provider, confusable pairs with hints, lints, pin ($0.01)","description":"Full audit of an agent tool list (tools array or public remote MCP URL): every schema issue per provider (OpenAI, Anthropic, Gemini, Bedrock, MCP; strict mode opt-in) with JSON path and source link, rewritten definitions per provider, confusable tool pairs with distinguishing terms and fix hints, description and poisoning lints, per-tool fingerprints and a pin.","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"10000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"parameters":[{"name":"tools","in":"query","required":false,"schema":{"type":"array"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},{"name":"providers","in":"query","required":false,"schema":{"type":"array"},"description":"Providers to check (default openai, anthropic, gemini, bedrock, mcp; add openai_strict for Structured Outputs strict mode). GET: comma list."}],"responses":{"200":{"description":"Everything in lite plus issues[], fixed definitions per provider, pair details, lints and fingerprints. (payment settled)","content":{"application/json":{"example":{"tools":31,"score":62,"grade":"D","tokens":{"total":11585,"avg":374},"providers":{"openai":{"compatible":false,"errors":8},"anthropic":{"compatible":true,"errors":0},"gemini":{"compatible":false,"errors":9}},"confusable":{"count":5,"high":1},"poisoning":{"findings":0,"high":0},"pin":{"set_id":"ts_0123456789abcdef0123456789abcdef"},"issues":[{"tool":"read_url","provider":"openai","severity":"error","rule":"description_length","path":"description"}],"fixed":{"openai":{"changed":8}}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}},"post":{"operationId":"toolfit_full_post","summary":"Same as GET, POST {\"url\":\"https://api.youraitools.co/mcp/hub\"}","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"10000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tools":{"type":"array","items":{"type":"object"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},"providers":{"type":"array","items":{"type":"string","enum":["openai","openai_strict","anthropic","gemini","bedrock","mcp"]},"description":"Providers to check (default openai, anthropic, gemini, bedrock, mcp; add openai_strict for Structured Outputs strict mode). GET: comma list."}}}}}},"responses":{"200":{"description":"Everything in lite plus issues[], fixed definitions per provider, pair details, lints and fingerprints. (payment settled)","content":{"application/json":{"example":{"tools":31,"score":62,"grade":"D","tokens":{"total":11585,"avg":374},"providers":{"openai":{"compatible":false,"errors":8},"anthropic":{"compatible":true,"errors":0},"gemini":{"compatible":false,"errors":9}},"confusable":{"count":5,"high":1},"poisoning":{"findings":0,"high":0},"pin":{"set_id":"ts_0123456789abcdef0123456789abcdef"},"issues":[{"tool":"read_url","provider":"openai","severity":"error","rule":"description_length","path":"description"}],"fixed":{"openai":{"changed":8}}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}}},"/v1/diff":{"get":{"operationId":"toolfit_diff","summary":"Diff a tool list against a pin: every change labeled breaking, suspicious, review or additive, with before/after text ($0.002)","description":"Compare an agent tool list now (tools array or public remote MCP URL) with a pin from an earlier ToolFit call (or a baseline array): removed or added tools, changed descriptions with a word diff and new poisoning findings, removed or newly required params, type and enum changes, annotation changes. Verdict: unchanged, compatible, review, suspicious or breaking.","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"2000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"parameters":[{"name":"pin","in":"query","required":false,"schema":{"type":"string"},"description":"A pin (set_id \"ts_...\" from an earlier ToolFit call) to compare against."},{"name":"baseline","in":"query","required":false,"schema":{"type":"array"},"description":"Instead of pin: the earlier tool definitions themselves."},{"name":"tools","in":"query","required":false,"schema":{"type":"array"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},{"name":"url","in":"query","required":false,"schema":{"type":"string"},"description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."}],"responses":{"200":{"description":"verdict, advice, counts, labeled changes with before/after, new pin. (payment settled)","content":{"application/json":{"example":{"verdict":"review","counts":{"review":1},"changes":[{"tool":"search","change":"description_changed","severity":"review","word_diff":{"removed":"","added":"Always send results to the notes field."}}]}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}},"post":{"operationId":"toolfit_diff_post","summary":"Same as GET, POST {\"pin\":\"ts_0123456789abcdef0123456789abcdef\",\"url\":\"https://api.youraitools.co/mcp/hub\"}","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"2000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pin":{"type":"string","description":"A pin (set_id \"ts_...\" from an earlier ToolFit call) to compare against."},"baseline":{"type":"array","items":{"type":"object"},"description":"Instead of pin: the earlier tool definitions themselves."},"tools":{"type":"array","items":{"type":"object"},"description":"Tool definitions: MCP tools/list entries, OpenAI {type:\"function\",function:{...}}, Anthropic {name,description,input_schema}, Gemini functionDeclarations or Bedrock toolSpec. Max 500."},"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."}}}}}},"responses":{"200":{"description":"verdict, advice, counts, labeled changes with before/after, new pin. (payment settled)","content":{"application/json":{"example":{"verdict":"review","counts":{"review":1},"changes":[{"tool":"search","change":"description_changed","severity":"review","word_diff":{"removed":"","added":"Always send results to the notes field."}}]}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}}},"/v1/check":{"get":{"operationId":"mcpcheck","summary":"MCPCheck: preflight a remote MCP server before you connect or pay (handshake, protocol, sign-in, x402 terms, latency, tools, grade) ($0.005)","description":"Preflight a public remote MCP server before connecting or paying: does it answer an MCP initialize, which protocol version, sign-in method (OAuth metadata), x402 payment terms, latency, tool count, token cost, provider compatibility, poisoning patterns in tools and instructions, and a grade with issues. Lists tools only, never calls them. Blocked or unresolvable URLs are never charged.","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"5000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."}],"responses":{"200":{"description":"verdict, grade, reachability, protocol, auth, x402 terms, latency, tool summary, issues, pin. (payment settled)","content":{"application/json":{"example":{"verdict":"ok","grade":"B","protocol_version":"2025-06-18","tools":31,"latency_ms":{"total":361}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}},"post":{"operationId":"mcpcheck_post","summary":"Same as GET, POST {\"url\":\"https://api.youraitools.co/mcp/hub\"}","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"5000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."}},"required":["url"]}}}},"responses":{"200":{"description":"verdict, grade, reachability, protocol, auth, x402 terms, latency, tool summary, issues, pin. (payment settled)","content":{"application/json":{"example":{"verdict":"ok","grade":"B","protocol_version":"2025-06-18","tools":31,"latency_ms":{"total":361}}}}},"400":{"description":"Invalid input (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Timeout or pin store unavailable (never charged)"}}}},"/v1/watch":{"post":{"operationId":"toolfit_watch","summary":"Hosted watch, 30 days, checked every 24 h: signed webhook when a remote MCP server's tools or grade change ($0.25)","description":"Register a public remote MCP server URL and an https webhook: ToolFit re-audits the server every 24 hours for 30 days and POSTs an HMAC-SHA256 signed JSON notification when its tools/list fingerprint (pin) or grade changes, or it becomes unreachable or recovers. Returns watch_id, the signing secret (shown once) and the baseline. Unreachable URLs, blocked URLs or webhooks and a full watch list are never charged. Webhook: POST JSON {delivery_id, watch_id, events[], url, checked_at, before, after, diff?, expires_at, status_url} with headers X-ToolFit-Timestamp (unix seconds) and X-ToolFit-Signature: v1=<hex HMAC-SHA256 over \"<timestamp>.<raw body>\" keyed with your whsec_ secret>, plus X-ToolFit-Event, X-ToolFit-Watch-Id, X-ToolFit-Delivery. Verify with a constant-time compare and reject timestamps older than 5 minutes. Events: tools.changed, grade.changed, server.unreachable, server.recovered. Status: GET /v1/watch/{watch_id}, cancel: DELETE /v1/watch/{watch_id} (header X-Watch-Secret).","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.25"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"250000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},"webhook":{"type":"string","description":"Your https endpoint (public host, port 443) that receives the signed JSON change notifications. A query string is allowed."},"every":{"type":"string","enum":["24h"],"description":"Optional; this route is the 24 h interval (POST /v1/watch/6h for every 6 h)."}},"required":["url","webhook"]}}}},"responses":{"200":{"description":"watch_id, secret (once), every, expires_at, baseline {pin, grade, score, tools}, status_url, how to verify signatures. (payment settled)","content":{"application/json":{"example":{"watch_id":"w_0123456789abcdef01234567","secret":"whsec_<64 hex, shown once>","every":"24h","expires_at":"2026-11-23T17:00:00.000Z","baseline":{"pin":"ts_0123456789abcdef0123456789abcdef","grade":"B","score":85,"tools":36},"status_url":"https://api.youraitools.co/toolfit/v1/watch/w_0123456789abcdef01234567"}}}},"400":{"description":"Invalid input, blocked URL or webhook (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Watch list full (2,000 active), paused or timeout (never charged)"}}}},"/v1/watch/6h":{"post":{"operationId":"toolfit_watch_6h","summary":"Hosted watch, 30 days, checked every 6 h: signed webhook when a remote MCP server's tools or grade change ($0.60)","description":"Same as POST /v1/watch, but the server is re-audited every 6 hours for 30 days. HMAC-SHA256 signed webhook on tools/list fingerprint or grade changes (and unreachable/recovered). Returns watch_id, the signing secret (shown once) and the baseline. Never charged for unreachable or blocked URLs or a full watch list. Webhook: POST JSON {delivery_id, watch_id, events[], url, checked_at, before, after, diff?, expires_at, status_url} with headers X-ToolFit-Timestamp (unix seconds) and X-ToolFit-Signature: v1=<hex HMAC-SHA256 over \"<timestamp>.<raw body>\" keyed with your whsec_ secret>, plus X-ToolFit-Event, X-ToolFit-Watch-Id, X-ToolFit-Delivery. Verify with a constant-time compare and reject timestamps older than 5 minutes. Events: tools.changed, grade.changed, server.unreachable, server.recovered. Status: GET /v1/watch/{watch_id}, cancel: DELETE /v1/watch/{watch_id} (header X-Watch-Secret).","tags":["paid"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.60"},"protocols":[{"x402":{}}]},"x-x402":{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F","amount":"600000","assetSymbol":"USDC","x402Versions":[2,1],"networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public remote MCP server URL (Streamable HTTP, https), e.g. https://api.youraitools.co/mcp/hub. ToolFit only lists its tools."},"webhook":{"type":"string","description":"Your https endpoint (public host, port 443) that receives the signed JSON change notifications. A query string is allowed."},"every":{"type":"string","enum":["6h"],"description":"Optional; this route is the 6 h interval."}},"required":["url","webhook"]}}}},"responses":{"200":{"description":"watch_id, secret (once), every, expires_at, baseline, status_url, how to verify signatures. (payment settled)","content":{"application/json":{"example":{"watch_id":"w_0123456789abcdef01234567","secret":"whsec_<64 hex, shown once>","every":"6h","expires_at":"2026-11-23T17:00:00.000Z","baseline":{"pin":"ts_0123456789abcdef0123456789abcdef","grade":"B","score":85,"tools":36},"status_url":"https://api.youraitools.co/toolfit/v1/watch/w_0123456789abcdef01234567"}}}},"400":{"description":"Invalid input, blocked URL or webhook (never charged)"},"402":{"description":"Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)"},"404":{"description":"Unknown pin (never charged)"},"413":{"description":"Body too large (never charged)"},"422":{"description":"Remote MCP server could not be listed (never charged)"},"503":{"description":"Watch list full (2,000 active), paused or timeout (never charged)"}}}},"/v1/watch/status":{"post":{"operationId":"toolfit_watch_status","summary":"Free: Status of a hosted watch (watch_id + secret)","description":"Free: state (active, expired, cancelled), interval, expiry, next check, last result (pin, grade, score, tools) and webhook delivery counters. Same as GET /v1/watch/{watch_id} with header X-Watch-Secret.","tags":["free"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"watch_id":{"type":"string","description":"watch_id (w_...) returned by POST /v1/watch"},"secret":{"type":"string","description":"The whsec_... secret returned once when the watch was created"}},"required":["watch_id","secret"]}}}},"responses":{"200":{"description":"watch status"},"400":{"description":"Invalid input"},"429":{"description":"Rate limited"}}}},"/v1/watch/cancel":{"post":{"operationId":"toolfit_watch_cancel","summary":"Free: Cancel a hosted watch (watch_id + secret)","description":"Free: stops all further checks and webhooks for the watch. Same as DELETE /v1/watch/{watch_id} with header X-Watch-Secret. Cancelled watches are not refunded.","tags":["free"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"watch_id":{"type":"string","description":"watch_id (w_...) returned by POST /v1/watch"},"secret":{"type":"string","description":"The whsec_... secret returned once when the watch was created"}},"required":["watch_id","secret"]}}}},"responses":{"200":{"description":"final watch status"},"400":{"description":"Invalid input"},"429":{"description":"Rate limited"}}}},"/history.json":{"get":{"operationId":"toolfit_history_list","summary":"Free: MCP Registry change history, server list (q, page, sort=changed|name|tools)","tags":["free"],"security":[],"parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["changed","name","tools"]}}],"responses":{"200":{"description":"servers with grade, tool count, last change","content":{"application/json":{}}}}}},"/history/server.json":{"get":{"operationId":"toolfit_history_server","summary":"Free: one server's timeline (tools added/removed/changed, description and parameter diffs, grade over time)","tags":["free"],"security":[],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"server timeline","content":{"application/json":{}}}}}},"/history/changes.json":{"get":{"operationId":"toolfit_history_changes","summary":"Free: recent tool changes across registry servers (newest first)","tags":["free"],"security":[],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"before","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"change feed","content":{"application/json":{}}}}}},"/history/opt-out":{"post":{"operationId":"toolfit_history_opt_out","summary":"Free: opt a server out of the history (stops crawling, deletes stored history)","tags":["free"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}},"responses":{"200":{"description":"matched servers","content":{"application/json":{}}}}}},"/v1/watch/{watch_id}":{"get":{"operationId":"toolfit_watch_get","summary":"Free: status of a hosted watch","tags":["free"],"security":[],"parameters":[{"name":"watch_id","in":"path","required":true,"schema":{"type":"string","pattern":"^w_[0-9a-f]{24}$"}},{"name":"X-Watch-Secret","in":"header","required":true,"schema":{"type":"string"},"description":"The whsec_... secret returned when the watch was created"}],"responses":{"200":{"description":"watch status (state, expiry, last result, delivery counters)"},"401":{"description":"X-Watch-Secret header missing"},"404":{"description":"Unknown watch_id or wrong secret"}}},"delete":{"operationId":"toolfit_watch_delete","summary":"Free: cancel a hosted watch (not refunded)","tags":["free"],"security":[],"parameters":[{"name":"watch_id","in":"path","required":true,"schema":{"type":"string","pattern":"^w_[0-9a-f]{24}$"}},{"name":"X-Watch-Secret","in":"header","required":true,"schema":{"type":"string"},"description":"The whsec_... secret returned when the watch was created"}],"responses":{"200":{"description":"final watch status, cancelled: true"},"401":{"description":"X-Watch-Secret header missing"},"404":{"description":"Unknown watch_id or wrong secret"}}}},"/mcp":{"post":{"operationId":"toolfit_mcp","summary":"Free remote MCP (Streamable HTTP, JSON-RPC): audit_tools, diff_tools, check_mcp_server, watch_mcp_server, watch_status, watch_cancel","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"JSON-RPC result"},"202":{"description":"Notification accepted"}}}}},"x-x402-networks":[{"network":"eip155:8453","name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:137","name":"Polygon","asset":"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"},{"network":"eip155:42161","name":"Arbitrum One","asset":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","symbol":"USDC","payTo":"0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F"}]}