402cron
by 402cron.com · remote · no sign-in to list tools · v1.0.1 · published by com.402cron
Paid cron for AI agents: we call your https URL on schedule, signed. No account, paid with x402.
16 tools: 2 can delete or cancel things, 1 do something that can't be undone, 7 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things7Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http 402cron https://402cron.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Infocreate_task
The input schema at properties.headers.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."
- Infocreate_task
The input schema at properties.body.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."
- Infoupdate_task
The input schema at properties.headers.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."
- Infoupdate_task
The input schema at properties.body.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
16 tools
Deletes or cancels 2Claude Code: deny
delete_destinationRemove a claimed URL.No findings
Why it is in this group
- The name "delete_destination" says "delete": a word for removing or ending something.
Description, as the server wrote it Remove a claimed URL. Refused while a task still points at it — delete the task first.
delete_taskMove the task to the recycle bin.No findings
Why it is in this group
- The name "delete_task" says "delete": a word for removing or ending something.
Description, as the server wrote it Move the task to the recycle bin. It stops firing immediately and can be restored for 30 days with restore_task; after that it is unrecoverable. Credits already spent are not refunded.
Can't be undone 1Claude Code: ask
run_task_nowDeliver immediately, outside the schedule.No findings
Why it is in this group
- The name "run_task_now" says "run": a word for a change.
- The description's first verb is "deliver": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Deliver immediately, outside the schedule. THIS COSTS ONE CREDIT per attempt, exactly like a scheduled firing, and a timeout or unreachable host is retried up to three times — so one call can cost up to three credits. Use it to test a destination.
Changes things 7Claude Code: ask
create_taskRegister a schedule against a destination you have already verified.2 findings
Why it is in this group
- The name "create_task" says "create": a word for a change.
Findings
- Info
The input schema at properties.headers.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."
- Info
The input schema at properties.body.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."
Description, as the server wrote it Register a schedule against a destination you have already verified. Idempotent on "name": the same name updates the existing task instead of creating a second one. Creating costs nothing; each delivery ATTEMPT costs one credit.
pause_taskStop firing until you resume.No findings
Why it is in this group
- The description's first verb is "stop": a word for a change.
Description, as the server wrote it Stop firing until you resume. Nothing is charged while a task is paused.
register_destinationClaim an https:// URL you control.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Claim an https:// URL you control. We answer with a challenge and a SIGNING SECRET that is shown ONCE and never again — store it before you do anything else; it is what lets you verify that a delivery really came from us. The permission covers that path and everything beneath it, nothing above. Verification is one request from us to the exact URL you registered: POST, headers X-402cron-Challenge: <value> and X-402cron-Event: verify, JSON body {"challenge":"<value>"}. Reply within 5 seconds, without a redirect, with a body that is the bare value or {"challenge":"<value>"}; we read the first 512 bytes and do not check the HTTP status (2xx is fine). Then call POST /api/destinations/{id}/verify within 15 minutes of registering. A fixed-response webhook cannot pass: you need an endpoint you can program. Registering a URL that is still pending issues a new challenge and a new signing secret every time — the old secret immediately stops verifying deliveries; a verified URL is left untouched unless you add ?rotate=1. The daily verification allowance (10 per destination, 40 per client, UTC day) does not reset on re-registration.
restore_taskBring a task back from the recycle bin within 30 days.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Bring a task back from the recycle bin within 30 days. It comes back PAUSED — resume it explicitly.
resume_taskStart firing again on the schedule.No findings
Why it is in this group
- The description's first verb is "start": a word for a change.
Description, as the server wrote it Start firing again on the schedule. Refused if your balance is empty — buy deliveries first.
update_taskChange the schedule, destination, method, timeout, headers or body of an existing task.2 findings
Why it is in this group
- The name "update_task" says "update": a word for a change.
Findings
- Info
The input schema at properties.headers.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."
- Info
The input schema at properties.body.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."
Description, as the server wrote it Change the schedule, destination, method, timeout, headers or body of an existing task. Omit a field to leave it unchanged — sending null is refused, because "unchanged" and "cleared" must not look the same. State is NOT editable here: use pause_task and resume_task.
verify_destinationVerification is one request from us to the exact URL you registered: POST, headers X-402cron-Challenge: <value> and X-402cron-Event: verify, JSON body {"challenge":"<value>"}.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Verification is one request from us to the exact URL you registered: POST, headers X-402cron-Challenge: <value> and X-402cron-Event: verify, JSON body {"challenge":"<value>"}. Reply within 5 seconds, without a redirect, with a body that is the bare value or {"challenge":"<value>"}; we read the first 512 bytes and do not check the HTTP status (2xx is fine). Then call POST /api/destinations/{id}/verify within 15 minutes of registering. A fixed-response webhook cannot pass: you need an endpoint you can program. Registering a URL that is still pending issues a new challenge and a new signing secret every time — the old secret immediately stops verifying deliveries; a verified URL is left untouched unless you add ?rotate=1. The daily verification allowance (10 per destination, 40 per client, UTC day) does not reset on re-registration. Until this passes, no task may point at the destination.
Only reads 6Claude Code: allow
get_docsOne section of the machine documentation: quickstart, headers, signature, notice, errors, billing or limits.No findings
Why it is in this group
- The name "get_docs" says "get": a word for reading.
Description, as the server wrote it One section of the machine documentation: quickstart, headers, signature, notice, errors, billing or limits. Omit `section` to get the whole document.
get_pricingWhat a delivery costs, which packs exist, and the exact x402 payment requirements for each.No findings
Why it is in this group
- The name "get_pricing" says "get": a word for reading.
Description, as the server wrote it What a delivery costs, which packs exist, and the exact x402 payment requirements for each. Balance is counted in DELIVERIES, not money, and packs never expire. Call this before buying.
get_service_statusWhether the service is currently selling, on which network, and if not — why not.No findings
Why it is in this group
- The name "get_service_status" says "get": a word for reading.
Description, as the server wrote it Whether the service is currently selling, on which network, and if not — why not. This is configuration, not liveness: the full health endpoint is at /health.
get_taskA single task: schedule, destination, state, next run, and how many failures in a row it carries.No findings
Why it is in this group
- The name "get_task" says "get": a word for reading.
Description, as the server wrote it A single task: schedule, destination, state, next run, and how many failures in a row it carries.
list_destinationsThe URLs you have claimed and whether each is verified.No findings
Why it is in this group
- The name "list_destinations" says "list": a word for reading.
Description, as the server wrote it The URLs you have claimed and whether each is verified. The signing secrets are never shown again.
list_tasksYour tasks and their state.No findings
Why it is in this group
- The name "list_tasks" says "list": a word for reading.
Description, as the server wrote it Your tasks and their state. Needs your management token as an Authorization header on this connection.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http 402cron https://402cron.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__402cron__get_pricing",
"mcp__402cron__get_docs",
"mcp__402cron__get_service_status",
"mcp__402cron__list_tasks",
"mcp__402cron__get_task",
"mcp__402cron__list_destinations"
],
"ask": [
"mcp__402cron__create_task",
"mcp__402cron__update_task",
"mcp__402cron__pause_task",
"mcp__402cron__resume_task",
"mcp__402cron__run_task_now",
"mcp__402cron__restore_task",
"mcp__402cron__register_destination",
"mcp__402cron__verify_destination"
],
"deny": [
"mcp__402cron__delete_task",
"mcp__402cron__delete_destination"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as 402cron. Review it before you use it.