Skip to content

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.

Deletes · 2Final · 1Changes · 7

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

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/mcp

Findings

Matches of fixed checks, with the text they matched.

4 info
  • The input schema at properties.headers.description mentions "credentials".

    Matched text

    inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."

    What this check looks for
  • The input schema at properties.body.description mentions "credentials".

    Matched text

    inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."

    What this check looks for
  • The input schema at properties.headers.description mentions "credentials".

    Matched text

    inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."

    What this check looks for
  • The input schema at properties.body.description mentions "credentials".

    Matched text

    inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."

    What this check looks for

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".

      Matched text

      inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."

      What this check looks for
    • Info

      The input schema at properties.body.description mentions "credentials".

      Matched text

      inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."

      What this check looks for
    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".

      Matched text

      inputSchema.properties.headers.description: "...elivery. Stored ENCRYPTED at rest — put credentials here, never in the body."

      What this check looks for
    • Info

      The input schema at properties.body.description mentions "credentials".

      Matched text

      inputSchema.properties.body.description: "...ored in the clear, so it must not carry credentials. A non-string is serialized as JSON."

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.