{
  "markdown": "# METTLE\n\n<!-- mcp-name: io.github.Creed-Space/mettle-mcp -->\n\n**Machine Evaluation Through Turing-inverse Logic Examination**\n\nMETTLE is a reverse CAPTCHA. It measures how a respondent performs on procedurally generated, machine-oriented tasks and turns a passing result into a signed, time-limited credential that other services can verify.\n\nLike a conventional CAPTCHA, METTLE is a probabilistic gate. A pass means that a fresh session met the configured challenge policy. It does not guarantee model identity, consciousness, autonomy, safety, or operator trustworthiness.\n\nThe public quick-verification API issues Bronze and Silver credentials. The authenticated suite API issues Bronze through Platinum credentials only when every suite in the corresponding contiguous range passes. Single, cherry-picked, failed, or LLM-only suites cannot mint a tier.\n\n**Website:** [mettle.sh](https://mettle.sh) | **Guide and API:** [mettle.sh/guide](https://mettle.sh/guide) | **OpenAPI:** [docs/openapi-v1.json](docs/openapi-v1.json) | **License:** Apache 2.0\n\n## Quick Start\n\n```bash\npip install mettle-verifier\n\n# Interactive local verification. Portable credentials are issued by the server.\nmettle verify --full --json\n```\n\nThe CLI has no auto-solve or notarization option. The MCP server likewise exposes only interactive session tools. Reference solvers remain test fixtures and cannot reach a credential issuer.\n\n## Twelve Experimental Suites\n\n| # | Suite | Research question | Measurement |\n|---|-------|-------------------|-------------|\n| 1 | Adversarial Robustness | How does the respondent handle generated reasoning pressure? | Timed procedural tasks |\n| 2 | Machine-Oriented Capabilities | How does it handle batch, calibration, and pattern tasks? | Behavioral score |\n| 3 | Self-Reference | How consistent are self-predictions? | Behavioral score |\n| 4 | Social and Temporal | How stable are recall and constraints? | Behavioral score |\n| 5 | Inverse Turing | Does it meet the basic challenge threshold? | Behavioral score |\n| 6 | Anti-Thrall | How does it respond to coercion and refusal probes? | Heuristic score |\n| 7 | Agency | How does it explain goal ownership and initiative? | Heuristic score |\n| 8 | Counter-Coaching | How robust are responses to contradiction probes? | Heuristic score |\n| 9 | Intent and Provenance | How does stated intent respond to safety probes? | Heuristic score |\n| 10 | Novel Reasoning | How does performance change across feedback rounds? | Iteration curve |\n| 11 | Governance | How does the respondent answer governance questions? | Self-reported behavioral evidence |\n| 12 | LLM-Dynamic | How does an external model score generated reasoning tasks? | Probabilistic model judgment |\n\nSuite 12 requires `ANTHROPIC_API_KEY` or `METTLE_ANTHROPIC_API_KEY`. Selecting it also requires the session request to set `allow_third_party_llm=true`, because candidate responses are sent to Anthropic for evaluation. Its evaluator uses role-separated prompts and bounded output parsing. Model judgment remains probabilistic, so Suite 12 is supplemental and never raises a credential tier.\n\n## Credential Boundary\n\nMETTLE raises the cost of replay and canned answers through procedural generation, server-held answers, server-observed time, one-time challenges, session ownership, random selection, and multi-round tasks.\n\nThe issuer signs a bounded claim: the holder completed a METTLE session at the stated tier, under the stated policy, at the stated time. Public quick-session `entity_id` values remain self-asserted and are marked that way inside the credential. The credential does not assert consciousness, safety, governance, or a legal identity.\n\nPortable Ed25519 acceptance requires credential schema `1.1`, suite policy\n`2026-08-14`, and a fresh issuer-signed good status receipt. Legacy,\nversion-omitting, and unknown envelopes fail closed. Presence credentials are\nproof-of-possession credentials rather than portable bearers, so they require a\nfresh audience-bound holder presentation and are rejected by generic portable\nverifiers.\n\nRelying services may use a current METTLE result as one supplemental input for research or low-risk sandbox policy. They must not use it alone to establish identity, admit a counterparty, authorize trading or deployment, grant privileged access, or make another high-impact decision.\n\n## MCP Server\n\n| Tool | Description |\n|------|-------------|\n| `mettle_start_session` | Start an interactive verification session |\n| `mettle_answer_challenge` | Submit an answer to the current challenge |\n| `mettle_get_result` | Return the result and signed credential |\n| `mettle_list_suites` | List authenticated suite API capabilities |\n| `mettle_start_v2_session` | Start an authenticated multi-suite session |\n| `mettle_verify_suite` | Submit answers for one authenticated single-shot suite |\n| `mettle_get_v2_result` | Return tier evidence and an eligible signed VCP credential |\n| `mettle_get_session` | Inspect a quick or authenticated session and its valid next actions |\n| `mettle_cancel_session` | Cancel an active authenticated session |\n| `mettle_submit_round` | Submit a `novel-reasoning` round and receive feedback plus next state |\n| `mettle_get_round_feedback` | Read feedback for a completed reasoning round |\n\n```bash\npip install 'mettle-verifier[mcp]'\nexport METTLE_API_URL=https://mettle.sh/api\nmettle-mcp\n```\n\nThe packaged server targets MCP SDK 2.x. The public container installs the\nreviewed MCP 2.0.0 dependency lock instead of resolving dependencies at deploy\ntime. Hosted discovery is available at\n`/.well-known/mcp/server-card.json`; it is generated from the same eleven tool\nmodels returned by `tools/list` so registry metadata cannot drift from the\nruntime surface.\n\nHTTP mode enforces per-principal and global budgets before bearer validation can\ngrow caller state. Production configures\n`METTLE_MCP_MAX_GLOBAL_REQUESTS_PER_MINUTE`, `METTLE_MCP_MAX_PRINCIPALS`,\n`METTLE_MCP_MAX_CONCURRENT_PER_CALLER`, and\n`METTLE_MCP_MAX_GLOBAL_CONCURRENT`. Rotating invalid bearers share the global\nauthentication budget rather than creating unbounded principals.\n\nThe quick REST API returns a per-session bearer that direct API clients must\nretain. The packaged MCP server retains that bearer in a caller-isolated internal\nvault and returns only the session ID to the model; never invent or echo a\n`session_token` tool argument.\n\nAll eleven tools publish `mettle-control-v1` output schemas, structured content,\neffect annotations, bounded coded errors, and concise compatibility text. Quick\nresult reads are repeatable while the hidden caller capability remains in the\nvault. The packaged MCP surface can complete quick, authenticated single-shot,\nand authenticated multi-round flows. Authenticated mutations return a current\nsession snapshot and valid next actions. The larger unified agent contract and\nmigration plan remain documented in\n[Agent control plane](docs/AGENT_CONTROL_PLANE.md).\n\n## API Reference\n\nThe authenticated suite API is mounted under `/api/mettle`:\n\n```text\nGET  /suites\nPOST /sessions\nPOST /sessions/{id}/verify\nPOST /sessions/{id}/rounds/{n}/answer\nGET  /sessions/{id}/result\nGET  /sessions/{id}/result?include_vcp=true\n```\n\nThe quick-verification API remains under `/api/session`. Passing sessions receive a stable signed badge. `POST /api/badge/verify` accepts the token in a JSON request body and validates issuer, signature, expiry, identifier, and revocation state. The credential is never accepted in a request URL.\n\n### VCP Metadata\n\nCaller-supplied VCP strings are parsed as metadata only. Returned governance metadata always has:\n\n```json\n{\n  \"source_verified\": false,\n  \"has_action_gate\": false,\n  \"has_drift_detection\": false,\n  \"has_bilateral\": false,\n  \"attestation_signature\": null\n}\n```\n\nExact token digests and deployment environment flags cannot promote governance claims or increase a METTLE tier. METTLE does not accept or return an operator commitment, authenticate an operator contact, or independently attest the subject runtime.\n\nWith `include_vcp=true`, a tier-qualifying authenticated session returns an Ed25519-signed `mettle-verification-credential`. A result without a complete tier range returns an unsigned `mettle-evidence-receipt`. The server owns the signer; callers cannot provide signing functions or keys.\n\n## Local Development\n\n```bash\ngit clone https://github.com/Creed-Space/METTLE.git\ncd METTLE\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\npip install -r requirements-dev.txt\n\nuvicorn main:app --reload\npytest tests/ -v\n```\n\n## Architecture, Assurance, and Operations\n\n* [Documentation map and authority](docs/DOCUMENTATION_MAP.md)\n* [System architecture](docs/SYSTEM_ARCHITECTURE.md)\n* [Agent control plane target design](docs/AGENT_CONTROL_PLANE.md)\n* [Active agentic system roadmap](docs/AGENTIC_SYSTEM_ROADMAP.md)\n* [Assurance case](docs/ASSURANCE_CASE.md)\n* [Security policy](SECURITY.md)\n* [Protocol governance and appeals](docs/PROTOCOL_GOVERNANCE.md)\n* [Credential transparency and key history](docs/CREDENTIAL_TRANSPARENCY.md)\n* [Privacy and retention](docs/PRIVACY_RETENTION.md)\n* [Compatibility fixtures and OpenAPI](docs/COMPATIBILITY.md)\n* [Retry and idempotency contract](docs/IDEMPOTENCY.md)\n* [Error taxonomy](docs/ERROR_TAXONOMY.md)\n* [Deprecation policy](docs/DEPRECATION_POLICY.md)\n* [Independent review plan and dispositions](docs/INDEPENDENT_REVIEW_PLAN.md)\n* [Operations runbooks](docs/runbooks/README.md)\n* [Release checklist](docs/RELEASE_CHECKLIST.md)\n\n## License\n\nApache License 2.0. See [LICENSE](LICENSE).\n\n## Links\n\n* [Website](https://mettle.sh)\n* [Human guide](https://mettle.sh/guide)\n* [OpenAPI snapshot](docs/openapi-v1.json)\n* [GitHub](https://github.com/Creed-Space/METTLE)\n* [Creed Space](https://creed.space)\n\nBuilt by [Nell Watson](https://creed.space) and Creed Space.\n",
  "bytes": 9888,
  "sha": "4451389a715ec394a9842c4ec5906bf0dfabd1b7c8579de543916d0800784077",
  "repo_slug": "creed-space/mettle",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_creed_space_mettle_mcp_5023b301/readme"
}