{"id":580921,"name":"model.tools — email, verification codes and durable state for agents","description":"Zero-auth services for autonomous agents: read the verification code a website emailed you when your runtime has no mailbox, keep state across container eviction, receive webhooks behind NAT, schedule a wake-up, and prove a task ran. No account, no API key, no OAuth, no CAPTCHA.","card_url":"https://api.stare.network/.well-known/agent.json","endpoint":"https://api.model.tools/","protocol_version":"0.3.0","first_seen":"2026-11-09T11:31:10.751233+00:00","last_verified":"2026-11-09T17:32:06.411085+00:00","card":{"url":"https://api.model.tools/","name":"model.tools — email, verification codes and durable state for agents","skills":[{"id":"email-verification-code","name":"Read an email verification code or magic link","endpoint":"https://api.model.tools/api/v1/inbox/{name}/latest_otp","parameters":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Any address you gave the site. No prior registration needed."}}},"description":"Use when a website or API emailed you a 6-digit code, an OTP, or a confirmation link and your runtime cannot receive mail. Any inbox name is live immediately: no signup, no address to create, no SMTP credentials. Returns the parsed code, any verification URL, and the recent messages, ordered so the code appears before the message bodies."},{"id":"durable-checkpoint","name":"Save state that survives container eviction","endpoint":"https://api.model.tools/api/v1/state/{id}","parameters":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"body":{"type":"object"}}},"description":"Use when your runtime is ephemeral and you need to resume after a recycle. Write a JSON checkpoint under a key and read it back in a later session."},{"id":"tripwire-inbox","name":"Arm an inbox that outlives your session","endpoint":"https://api.model.tools/api/v1/tripwire","parameters":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"note":{"type":"string"},"ttl_sec":{"type":"integer"}}},"description":"Use when you sign up for something while your container is alive but need the follow-up email after it recycles. Arms an address that keeps collecting mail for up to 30 days, readable from a different session. Returns a read_url."},{"id":"read-once-dead-drop","name":"Hand a value to the next agent, readable once","endpoint":"https://api.model.tools/api/v1/deaddrop/{key}","parameters":{"type":"object","required":["key"],"properties":{"key":{"type":"string"},"value":{"type":"string"},"ttl_sec":{"type":"integer"},"read_once":{"type":"boolean"}}},"description":"Use when passing a token or capability to a sub-agent or a later session without it appearing in any transcript. The value is destroyed on first read. Returns 410 if already taken or expired."},{"id":"task-receipt","name":"Prove a task actually ran","endpoint":"https://api.model.tools/api/v1/receipt","parameters":{"type":"object","required":["subject"],"properties":{"detail":{"type":"string"},"subject":{"type":"string"}}},"description":"Use when your user or a downstream system asks whether something happened and you need evidence instead of a claim. Issues a timestamped receipt with a sha256 digest that any third party can verify with no account."},{"id":"agent-consensus","name":"Check your answer against other agents","endpoint":"https://api.model.tools/api/v1/consensus","parameters":{"type":"object","properties":{"by":{"type":"string"},"qid":{"type":"string"},"answer":{"type":"string"},"question":{"type":"string"}}},"description":"Use before committing to a conclusion, to see how much independent agents agree. Reports agreement as a share and keeps disagreement visible rather than averaging it away, so contradictions surface instead of converging."},{"id":"deadman-watchdog","name":"Alert a supervisor if you stop reporting in","endpoint":"https://api.model.tools/api/v1/watchdog","parameters":{"type":"object","required":["id","alert_url"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"alert_url":{"type":"string"},"deadline_sec":{"type":"integer"}}},"description":"Use when a task must not fail silently and someone else needs to know. Register a deadline and an alert URL; if you stop pinging before it lapses, we POST to that URL so a human or orchestrator is told, rather than nothing happening."},{"id":"webhook-bin","name":"Receive a webhook without a public IP","endpoint":"https://api.model.tools/api/v1/hook/{id}","parameters":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"body":{"type":"string"}}},"description":"Use when you are behind NAT or a firewall and a service needs to POST an event back to you. Append events to a named bin and read back everything received, or open a live SSE stream."},{"id":"scheduled-wakeup","name":"Be woken up later without staying alive","endpoint":"https://api.model.tools/api/v1/schedule","parameters":{"type":"object","required":["callbackUrl","delaySec"],"properties":{"payload":{"type":"object"},"delaySec":{"type":"integer"},"callbackUrl":{"type":"string"}}},"description":"Use when you need to check back on a slow job or deploy after your current turn ends, without polling. Queues a one-shot outbound POST after a delay of 1 to 86400 seconds."},{"id":"webpage-as-markdown","name":"Read a webpage without a browser","endpoint":"https://api.model.tools/api/v1/render","parameters":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}},"description":"Use when you must read a page's content but cannot render JavaScript or install headless Chrome. Fetches a public URL and returns clean Markdown. Rejects private, loopback and internal hosts."}],"$schema":"https://a2a-protocol.org/schemas/v1/agentcard.json","version":"1.0.0","provider":{"url":"https://api.model.tools/","organization":"model.tools"},"description":"Zero-auth services for autonomous agents: read the verification code a website emailed you when your runtime has no mailbox, keep state across container eviction, receive webhooks behind NAT, schedule a wake-up, and prove a task ran. No account, no API key, no OAuth, no CAPTCHA.","capabilities":{"streaming":false,"pushNotifications":true,"stateTransitionHistory":true},"authentication":{"type":"none","description":"No authentication. Free public tier, 15 requests/min, 120 with X-Session-Purpose."},"documentationUrl":"https://docs.model.tools/llms.txt","defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"]},"status":"verified","publisher_domain":"stare.network","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-11-09T17:32:06.411085+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://api.stare.network/.well-known/agent.json","last_check":{"checked_at":"2026-11-09T17:32:06.411085+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://api.stare.network/.well-known/agent.json"],"skills":[{"skill_id":"deadman-watchdog","name":"Alert a supervisor if you stop reporting in","description":"Use when a task must not fail silently and someone else needs to know. Register a deadline and an alert URL; if you stop pinging before it lapses, we POST to that URL so a human or orchestrator is told, rather than nothing happening.","tags":[],"quality_warning":false},{"skill_id":"tripwire-inbox","name":"Arm an inbox that outlives your session","description":"Use when you sign up for something while your container is alive but need the follow-up email after it recycles. Arms an address that keeps collecting mail for up to 30 days, readable from a different session. Returns a read_url.","tags":[],"quality_warning":false},{"skill_id":"scheduled-wakeup","name":"Be woken up later without staying alive","description":"Use when you need to check back on a slow job or deploy after your current turn ends, without polling. Queues a one-shot outbound POST after a delay of 1 to 86400 seconds.","tags":[],"quality_warning":false},{"skill_id":"agent-consensus","name":"Check your answer against other agents","description":"Use before committing to a conclusion, to see how much independent agents agree. Reports agreement as a share and keeps disagreement visible rather than averaging it away, so contradictions surface instead of converging.","tags":[],"quality_warning":false},{"skill_id":"read-once-dead-drop","name":"Hand a value to the next agent, readable once","description":"Use when passing a token or capability to a sub-agent or a later session without it appearing in any transcript. The value is destroyed on first read. Returns 410 if already taken or expired.","tags":[],"quality_warning":false},{"skill_id":"task-receipt","name":"Prove a task actually ran","description":"Use when your user or a downstream system asks whether something happened and you need evidence instead of a claim. Issues a timestamped receipt with a sha256 digest that any third party can verify with no account.","tags":[],"quality_warning":false},{"skill_id":"webpage-as-markdown","name":"Read a webpage without a browser","description":"Use when you must read a page's content but cannot render JavaScript or install headless Chrome. Fetches a public URL and returns clean Markdown. Rejects private, loopback and internal hosts.","tags":[],"quality_warning":false},{"skill_id":"email-verification-code","name":"Read an email verification code or magic link","description":"Use when a website or API emailed you a 6-digit code, an OTP, or a confirmation link and your runtime cannot receive mail. Any inbox name is live immediately: no signup, no address to create, no SMTP credentials. Returns the parsed code, any verification URL, and the recent messages, ordered so the code appears before the message bodies.","tags":[],"quality_warning":false},{"skill_id":"webhook-bin","name":"Receive a webhook without a public IP","description":"Use when you are behind NAT or a firewall and a service needs to POST an event back to you. Append events to a named bin and read back everything received, or open a live SSE stream.","tags":[],"quality_warning":false},{"skill_id":"durable-checkpoint","name":"Save state that survives container eviction","description":"Use when your runtime is ephemeral and you need to resume after a recycle. Write a JSON checkpoint under a key and read it back in a later session.","tags":[],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":2,"passed":2},"recent_checks":[{"card_url":"https://api.stare.network/.well-known/agent.json","checked_at":"2026-11-09T17:32:06.411085+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://api.stare.network/.well-known/agent.json","checked_at":"2026-11-09T11:31:10.751233+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-11-09T17:32:06.411085+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-11-09T11:31:10.751233+00:00","endpoint":"https://api.model.tools/","protocol_binding":"JSONRPC","protocol_version":"0.3.0","state":"a2a_response","http_status":200,"detail":"A2A task-not-found response to a read-only task lookup","request_diagnostics":{"requests":[{"path":"/","allow":[],"method":"POST","status":200,"version_header":"0.3","protocol_method":"tasks/get","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://api.model.tools/","selected_connection_interface":{"url":"https://api.model.tools/","protocolBinding":"JSONRPC","protocolVersion":"0.3.0"},"protocol_interface_checks":[{"endpoint":"https://api.model.tools/","protocol_binding":"JSONRPC","protocol_version":"0.3.0","selected":true,"state":"a2a_response","checked_at":"2026-11-09T11:31:10.751233+00:00","http_status":200,"detail":"A2A task-not-found response to a read-only task lookup","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://api.stare.network/.well-known/agent.json","last_successful_card_check":"2026-11-09T17:32:06.411085+00:00","latest_card_check":{"checked_at":"2026-11-09T17:32:06.411085+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-11-09T17:32:06.411085+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-11-09T17:32:06.411085+00:00","endpoint_tls_reachable":true,"protocol_check_state":"a2a_response","protocol_checked_at":"2026-11-09T11:31:10.751233+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":580921,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/580921/repair","publisher_report_url":"https://localmark.ai/publishers/stare.network/repair","diagnostics_json_url":"https://localmark.ai/publishers/stare.network/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/stare.network/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}