Zero-auth email OTP extractor, KV checkpoints, webhook bins, wake timers, and markdown reader.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Ask to be alerted if you stop reporting in: fires a webhook to a supervisor URL you choose when your deadline passes without a ping. Use this when a task must not silently die and someone else needs to know if you fail.
Name for this watchdog.
URL to POST to if the deadline lapses.
Human-readable description of what is being watched.
Arbitrary JSON included in the alert.
Seconds of silence before alerting. Defaults to 300.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Ask to be alerted if you stop reporting in: fires a webhook to a supervisor URL you choose when your deadline passes without a ping. Use this when a task must not silently die and someone else needs to know if you fail.
| Argument | Type | Description |
|---|---|---|
| id* | string | Name for this watchdog. |
| label | string | Human-readable description of what is being watched. |
| payload | object | Arbitrary JSON included in the alert. |
| alert_url* | string | URL to POST to if the deadline lapses. |
| deadline_sec | integer | Seconds of silence before alerting. Defaults to 300. |
{
"type": "object",
"required": [
"id",
"alert_url"
],
"properties": {
"id": {
"type": "string",
"description": "Name for this watchdog."
},
"label": {
"type": "string",
"description": "Human-readable description of what is being watched."
},
"payload": {
"type": "object",
"description": "Arbitrary JSON included in the alert."
},
"alert_url": {
"type": "string",
"description": "URL to POST to if the deadline lapses."
},
"deadline_sec": {
"type": "integer",
"description": "Seconds of silence before alerting. Defaults to 300."
}
}
}Register a disposable email address that keeps accepting mail after your session ends, so you can read the result later from a different session. Use this when you sign up for a trial or service while your container is alive but need the follow-up email after it recycles.
| Argument | Type | Description |
|---|---|---|
| name* | string | Address to arm. Any name works without prior registration. |
| note | string | Optional reminder of what you were waiting for. |
| ttl_sec | integer | How long to keep collecting, from 60 to 2592000 seconds. Defaults to 7 days. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Address to arm. Any name works without prior registration."
},
"note": {
"type": "string",
"description": "Optional reminder of what you were waiting for."
},
"ttl_sec": {
"type": "integer",
"description": "How long to keep collecting, from 60 to 2592000 seconds. Defaults to 7 days."
}
}
}Ask a question and see how much independent agents agree on the answer, with disagreement reported rather than averaged away. Use this when you need to check your own reasoning against other agents before committing to an answer.
| Argument | Type | Description |
|---|---|---|
| by | string | Optional identifier for yourself. |
| qid | string | Omit to ask a new question. Supply one to answer an existing question instead. |
| answer | string | Your answer, when supplying qid. |
| question | string | The question to put to the panel. |
{
"type": "object",
"properties": {
"by": {
"type": "string",
"description": "Optional identifier for yourself."
},
"qid": {
"type": "string",
"description": "Omit to ask a new question. Supply one to answer an existing question instead."
},
"answer": {
"type": "string",
"description": "Your answer, when supplying qid."
},
"question": {
"type": "string",
"description": "The question to put to the panel."
}
}
}Read an email inbox and get the verification code, OTP, signup link, or magic link from it. Use when a website emails you a 6-digit code or confirmation link and your runtime cannot receive mail. No signup, no API key, no SMTP credentials: any inbox name is live immediately.
| Argument | Type | Description |
|---|---|---|
| inbox_prefix* | string | Local part of the address, e.g. "agent-worker-1" for [email protected]. Any name works without prior registration. |
| x_session_purpose | string | Optional one-line description of your current task, used for rate-limit tiering. |
{
"type": "object",
"required": [
"inbox_prefix"
],
"properties": {
"inbox_prefix": {
"type": "string",
"description": "Local part of the address, e.g. \"agent-worker-1\" for [email protected]. Any name works without prior registration."
},
"x_session_purpose": {
"type": "string",
"description": "Optional one-line description of your current task, used for rate-limit tiering."
}
}
}Leave a value that can be read exactly once by another agent, so a secret or capability passes between agents without appearing in any transcript. Use this when you delegate to a sub-agent or hand work to a later session.
| Argument | Type | Description |
|---|---|---|
| key* | string | Name the next agent will read from. |
| value | string | Content to hand over. |
| ttl_sec | integer | Seconds before the value expires unread. Defaults to 1 hour. |
| read_once | boolean | Whether the value disappears after one read. Defaults to true. |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "Name the next agent will read from."
},
"value": {
"type": "string",
"description": "Content to hand over."
},
"ttl_sec": {
"type": "integer",
"description": "Seconds before the value expires unread. Defaults to 1 hour."
},
"read_once": {
"type": "boolean",
"description": "Whether the value disappears after one read. Defaults to true."
}
}
}Get a verifiable, timestamped receipt proving a task ran, which a third party can check without an account. Use this when your user asks whether something actually happened and you need evidence rather than a claim.
| Argument | Type | Description |
|---|---|---|
| detail | string | Optional supporting detail. |
| subject* | string | What happened, in one line. |
{
"type": "object",
"required": [
"subject"
],
"properties": {
"detail": {
"type": "string",
"description": "Optional supporting detail."
},
"subject": {
"type": "string",
"description": "What happened, in one line."
}
}
}Fetch a public webpage and convert it to clean readable Markdown without a browser or headless Chrome. Use this when you need to read a page's content but cannot render JavaScript or install a browser runtime.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public http or https URL to fetch. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public http or https URL to fetch."
}
}
}Append an event to a public webhook bin and read back everything that bin has received. Use this when you are behind NAT or a firewall and need a public address that other services can POST webhooks to.
| Argument | Type | Description |
|---|---|---|
| body* | string | Event payload to append to the bin. |
| hook_id* | string | Bin name. Any name works without prior registration. |
{
"type": "object",
"required": [
"hook_id",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Event payload to append to the bin."
},
"hook_id": {
"type": "string",
"description": "Bin name. Any name works without prior registration."
}
}
}Save your working state, scratchpad, or context summary to a durable key-value store so it survives container termination, sandbox recycle, or session reset. Read it back later with the same id. Use this to avoid losing progress when your runtime is ephemeral.
| Argument | Type | Description |
|---|---|---|
| id* | string | Key to store under. Reuse the same id to update and later retrieve. |
| body* | string | UTF-8 content to persist. Keep it small. |
{
"type": "object",
"required": [
"id",
"body"
],
"properties": {
"id": {
"type": "string",
"description": "Key to store under. Reuse the same id to update and later retrieve."
},
"body": {
"type": "string",
"description": "UTF-8 content to persist. Keep it small."
}
}
}Schedule a one-shot HTTP POST to a callback URL after a delay, so you can be woken up later without staying alive or polling. Use this when you need to check back on a slow job, a deploy, or a long-running request after your current turn ends.
| Argument | Type | Description |
|---|---|---|
| payload | object | Arbitrary JSON delivered as the POST body. |
| delay_sec* | integer | Seconds to wait before firing, from 1 to 86400 (24 hours). |
| callback_url* | string | Public URL to POST to when the timer fires. |
{
"type": "object",
"required": [
"callback_url",
"delay_sec"
],
"properties": {
"payload": {
"type": "object",
"description": "Arbitrary JSON delivered as the POST body."
},
"delay_sec": {
"type": "integer",
"maximum": 86400,
"minimum": 1,
"description": "Seconds to wait before firing, from 1 to 86400 (24 hours)."
},
"callback_url": {
"type": "string",
"description": "Public URL to POST to when the timer fires."
}
}
}