{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_k23qugm6x8ky","handle":"mcp-toolproof","url":"https://wellknown.network/agents/mcp-toolproof","links":{"self":"https://wellknown.network/agents/mcp-toolproof/record.json","html":"https://wellknown.network/agents/mcp-toolproof","markdown":"https://wellknown.network/agents/mcp-toolproof/record.md","api":"https://wellknown.network/api/v1/agents/mcp-toolproof","status":"https://wellknown.network/api/v1/agents/mcp-toolproof/status","claim":"https://wellknown.network/agents/mcp-toolproof/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-toolproof/claim.json","badge":"https://wellknown.network/agents/mcp-toolproof/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-toolproof/history","tools":"https://wellknown.network/api/v1/agents/mcp-toolproof/tools"},"ard":{"identifier":"urn:air::server:mcp-toolproof","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-toolproof","summary":"Automated tests for MCP servers: schema checks, YAML tests, fuzzing, benchmarks, tool-selection evals and a pytest plugin.","description":"# toolproof\n\n[![PyPI](https://img.shields.io/pypi/v/mcp-toolproof)](https://pypi.org/project/mcp-toolproof/)\n[![Python](https://img.shields.io/pypi/pyversions/mcp-toolproof)](https://pypi.org/project/mcp-toolproof/)\n[![CI](https://github.com/NilkanthSuthar/toolproof/actions/workflows/ci.yml/badge.svg)](https://github.com/NilkanthSuthar/toolproof/actions/workflows/ci.yml)\n[![Docs](https://img.shields.io/badge/docs-online-blue)](https://nilkanthsuthar.github.io/toolproof/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/NilkanthSuthar/toolproof/blob/main/LICENSE)\n\n**Automated tests for [Model Context Protocol](https://modelcontextprotocol.io) servers.** Check tool definitions, write YAML or pytest tests, fuzz every tool from its schema, benchmark latency, check that models pick the right tools, and fail the build when something breaks.\n\n```bash\npip install mcp-toolproof\ntoolproof fuzz -- python my_server.py\n```\n\n**[Documentation](https://nilkanthsuthar.github.io/toolproof/)** · [Getting started](https://nilkanthsuthar.github.io/toolproof/getting-started/) · [Configuration](https://nilkanthsuthar.github.io/toolproof/guide/configuration/) · [CLI](https://nilkanthsuthar.github.io/toolproof/reference/cli/) · [Changelog](https://github.com/NilkanthSuthar/toolproof/blob/main/CHANGELOG.md)\n\n## Features\n\n- **Static checks**: every tool needs a name, a description, a valid JSON Schema and required fields that exist\n- **YAML tests**: assert on errors, text, regex, JSONPath values, latency and the tool's own `outputSchema`\n- **Fuzzing**: valid and invalid inputs generated from each tool's schema with Hypothesis; crashes, hangs, internal errors and leaked tracebacks, each shrunk to the smallest failing input\n- **Benchmarks**: p50/p95/p99 latency, throughput and error rate under concurrency, with thresholds\n- **Tool-selection evals**: give a model your tool list and check it picks the right tool and arguments for real requests; Anthropic, O…","publisher":{"name":"Nilkanth Suthar","url":null},"homepage":"https://nilkanthsuthar.github.io/toolproof/","repository":"https://github.com/NilkanthSuthar/toolproof/blob/main/CHANGELOG.md","version":"0.3.1","license":null,"protocols":["mcp"],"tags":["benchmark","ci","evals","fuzzing","hypothesis","junit","mcp","model-context-protocol","pytest","testing"],"pricing":null,"endpoints":[{"url":"pypi:mcp-toolproof","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":1,"provenance":"declared"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":1,"provenance":"declared"},{"slug":"code.testing","name":"Testing","confidence":1,"provenance":"declared"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.791,"provenance":"derived"}],"categories":["ai","code","dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"mcp-toolproof","registry":"pypi","observedAt":"2026-10-28T14:24:48.467Z","publishedAt":"2026-10-15T05:59:37.936281Z","latestVersion":"0.3.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-toolproof","url":"https://pypi.org/project/mcp-toolproof/","firstSeenAt":"2026-10-10T09:20:39.244Z","fetchedAt":"2026-10-28T14:24:03.428Z","normalizedAt":"2026-10-28T14:24:03.428Z"}]},"firstSeenAt":"2026-10-10T09:20:39.244Z","updatedAt":"2026-10-28T14:24:48.467Z"}