ToolFit + MCPCheck

Audit, pin and diff agent tool lists; preflight and watch remote MCP servers. Free tier; x402.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,513Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.18% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "toolfit": {
      "url": "https://api.youraitools.co/toolfit/mcp"
    }
  }
}

Remote endpoints

https://api.youraitools.co/toolfit/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢audit_tools(tools, url, providers, level)

Check the tool definitions an agent loads, before they cost tokens or fail: estimated tokens per tool, schema errors per provider (OpenAI, Anthropic, Gemini, Bedrock, MCP; add openai_strict for strict mode) with JSON paths and fixed definitions, tool pairs models will confuse with fix hints, basic poisoning patterns, a grade and a pin (set_id) for diff_tools. Pass "tools" (array in any common format) or "url" (public remote MCP server; tools are listed, never called). level "lite" returns the summary only. Free: 20 calls/day per IP (shared with diff_tools), then $0.003 lite / $0.01 full via x402 or credits.

Input 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."
    },
    "level": {
      "type": "string",
      "enum": [
        "lite",
        "full"
      ],
      "description": "lite = summary only; full (default) = every issue, fixed definitions, pair hints"
    }
  }
}
🟢diff_tools(pin, baseline, tools, url)

What changed in a tool list since you approved it? Compares "tools" or "url" now with "pin" (set_id from audit_tools/diff_tools) or "baseline" (earlier definitions). Each change is labeled breaking (removed tool or param, new required param, type or enum removal), suspicious (new text with injection patterns or hidden characters), review (description, title, annotation or new tool) or additive; descriptions come with before/after text and a word diff. Returns a new pin. Free: 20 calls/day per IP (shared with audit_tools), then $0.002 via x402 or credits.

Input 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."
    }
  }
}
🟢check_mcp_server(url)

Does this remote MCP server work, and is it worth connecting or paying for? Sends initialize and tools/list only (never calls a tool) and reports reachability, protocol version, sign-in method (OAuth protected-resource metadata), x402 payment terms if it asks for payment, latency, tool count and token cost, provider compatibility, poisoning patterns in tools and server instructions, issues and a grade A-F, plus a pin for later diffs. https public hosts only. Free: 10 checks/day per IP, then $0.005 via x402 or credits.

Input 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"
  ]
}
🟡watch_mcp_server(url, webhook, every)

Hosted watch (paid only; this MCP call validates and returns how to pay): ToolFit re-audits a public remote MCP server every 24 h ($0.25) or 6 h ($0.60) for 30 days and POSTs an HMAC-SHA256 signed JSON webhook to your https endpoint when its tools/list fingerprint or grade changes, or it goes unreachable or recovers. Pay at POST /v1/watch or /v1/watch/6h with x402 or a credits key; the response has watch_id and the signing secret (shown once).

Input 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",
        "6h"
      ],
      "description": "Check interval: 24h (default, $0.25 per 30 days) or 6h ($0.60 per 30 days)."
    }
  },
  "required": [
    "url",
    "webhook"
  ]
}
🟢watch_status(watch_id, secret)

Free: state (active, expired, cancelled), interval, expiry, next check, last result (pin, grade, score, tool count) and webhook delivery counters for a watch. Needs watch_id and the secret returned when it was created.

Input 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"
  ]
}
🔴watch_cancel(watch_id, secret)

Free: cancel a watch (no further checks or webhooks; not refunded). Needs watch_id and the secret returned when it was created.

Input 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"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools