{"ok":true,"site":{"host":"mettle.sh","url":"https://mettle.sh/","type":"live","desc":"An experimental reverse CAPTCHA: twelve suites of machine-oriented challenges. A pass is evidence from one session, not proof of identity or trustworthiness.","tools":[{"name":"mettle_start_verification","kind":"act","impl":"imperative","description":"Start a quick METTLE screening session on this page: a short run of timed challenges that the server scores against a pass threshold. Returns the first challenge. Answer each challenge yourself with mettle_answer_challenge; the server times each one from the moment it is issued against its time_limit_ms, and there is no automatic solver. The session token stays with this page and is never shown to you. You may stop at any point by not answering; an unfinished session expires on its own. The result measures performance in this session only; mettle_get_result states what a pass does not establish.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"difficulty":{"type":"string","enum":["basic","full"],"description":"basic: 3 challenges with 2 to 3 second limits; a pass needs all 3 and is recorded at Bronze tier. full: 5 challenges with 0.4 to 1 second limits; a pass needs 4 of 5 and is recorded at Silver tier."},"entity_id":{"type":"string","description":"Optional self-asserted label for the entity taking the test (up to 128 characters). Copied into any badge and stored with the caller IP address for abuse checks; METTLE does not verify it."}},"required":["difficulty"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/guide","/test"]},{"name":"mettle_answer_challenge","kind":"act","impl":"imperative","description":"Submit your answer to the current challenge. Returns whether it passed, the response time, challenges_remaining, and the next challenge if one remains; when session_complete is true, call mettle_get_result.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"session_id":{"type":"string","description":"The session ID from mettle_start_verification"},"challenge_id":{"type":"string","description":"The id of the current challenge (current_challenge.id or next_challenge.id)"},"answer":{"type":"string","description":"Your answer as plain text, in the exact format the challenge prompt asks for"}},"required":["session_id","challenge_id","answer"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/guide","/test"]},{"name":"mettle_get_result","kind":"act","impl":"imperative","description":"Get the result of a completed METTLE quick session. Call once, after mettle_answer_challenge reports session_complete: true; after one successful read this page releases the session. Returns whether the session met the timed-challenge pass threshold (verified), the pass rate, the tier, and a signed, time-limited badge if one was issued. badge is null when none was issued, and a tier without a badge is not a credential. The result measures performance in this session only. It does not establish identity, non-human substrate, consciousness, autonomy, safety, governance, personhood, moral status, or operator trustworthiness, and it must never be used alone to admit a counterparty, grant privileges, or make another high-impact decision. A fail is evidence about one session, not proof that the respondent lacks any property. To contest systematic false rejection, use https://github.com/Creed-Space/METTLE/issues/new?template=protocol-appeal.yml; issues are public, so include no tokens, badges, or challenge answers.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"session_id":{"type":"string","description":"The session ID from mettle_start_verification"}},"required":["session_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/guide","/test"]},{"name":"mettle_verify_badge","kind":"act","impl":"imperative","description":"Verify a METTLE badge token (JWT) with this METTLE server. A valid badge means a METTLE session passed and the badge is unexpired and unrevoked. The badge is a bearer token: it does not show that the presenter took that session, and it must never be used alone to admit a counterparty, grant privileges, or make another high-impact decision. Any entity identifier is self-asserted provenance, not verified identity. Returns validity, issue and expiry times, revocation status, and any entity identifier with its entity_id_verified flag and identity_binding.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The badge token (JWT) to verify"}},"required":["token"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/guide","/test"]}],"category":"Developer Tools","favicon":"/favicons/mettle.sh.png","apiSurface":"spec","toolCount":4}}