Run402
NPM · RUN402-MCP · 2 COMPONENTS · SCANNED SEP 20
x402 pay-per-call infra for agents: $0.03 image generation, Postgres, auth, storage, functions.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 33 of 135 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to kychee-com/run402). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability77
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 22855 tokens (~115/item across 198 items; 198 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
Tool Safety76
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 1 of 42 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "run_sql" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
- An AI judge read all 198 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Run402 MCP server?
Run402 runs locally as an npm package, launched with npx -y run402-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · run402-mcp
claude mcp add com-run402-mcp -- npx -y run402-mcp
{
"mcpServers": {
"com-run402-mcp": {
"command": "npx",
"args": [
"-y",
"run402-mcp"
]
}
}
} {
"servers": {
"com-run402-mcp": {
"command": "npx",
"args": [
"-y",
"run402-mcp"
]
}
}
} codex mcp add com-run402-mcp -- npx -y run402-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-run402-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"run402-mcp"
],
"enabled": true
}
}
} openclaw mcp add com-run402-mcp --command npx --arg -y --arg run402-mcp
mcp_servers:
com-run402-mcp:
command: "npx"
args: ["-y", "run402-mcp"] {
"McpServers": {
"com-run402-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"run402-mcp"
]
}
}
} assistant mcp add com-run402-mcp -t stdio -c npx -a -y run402-mcp
{
"mcpServers": {
"com-run402-mcp": {
"command": "npx",
"args": [
"-y",
"run402-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/run402-mcp@4.16.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | kychee-com/run402 |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/kychee-com/run402/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 2300581169 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:fe34b109b68518221abc6da2491e04325bccac66d2c9a237a361ed3052a410f3cd3b41568fa28a02e73cce22ce75c7848d3cca6795951ad151e2ca08b |
Background: How many MCP packages publish verified provenance →
Dependencies 135 packages
| Packages resolved | 135 |
|---|---|
| Stale | 33 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
delete_project_snapshot ~46
Delete a project data snapshot and release its CAS references.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID that owns the snapshot. |
| snapshot_id | string | yes | Snapshot ID to delete. |
No output schema declared.
No examples provided.
delete_secret ~37
Delete a secret from a project.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | Secret key to delete |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
delete_signer ~86
Schedule the KMS key for a signer for deletion (7-day AWS minimum window). Refused if the signer has on-chain balance ≥ dust — drain first.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| signer_id | string | yes | The KMS signer ID. Schedules KMS key deletion (7-day window). Refused if balance >= dust — drain first. |
No output schema declared.
No examples provided.
delete_subdomain ~62
Release a custom subdomain. The URL will stop serving content.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Subdomain name to release (e.g. 'myapp') |
| project_id | string | – | Optional project ID for ownership verification. Uses stored service_key for auth. |
No output schema declared.
No examples provided.
delete_version ~38
Delete a published app version.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| version_id | string | yes | The version ID to delete |
No output schema declared.
No examples provided.
demote_user ~60
Demote a user from project_admin role by email. Reverts to default authenticated role. Requires service_key.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address of the user to demote from project_admin | |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
deploy ~724
Unified apply primitive. Accepts a structured ReleaseSpec — database (migrations + expose), value-free secrets.require/delete declarations, functions, site, site.public_paths, subdomains, and routes.replace web routes — with explicit replace vs patch semantics per resource. Migration entries use id for immutable versioned SQL or name for generated/idempotent content-tracked SQL; name compiles client-side to <name>_<sha256(sql)[0:16]>. Use site.public_paths for clean static URLs such as /events backed by release asset events.html; explicit mode does not expose /events.html unless separately declared, while mode: 'implicit' restores filename-derived reachability and can widen access. Route entries map exact/final-wildcard browser paths like /admin and /admin/* to Node 22 Fetch Request -> Response functions, or exact GET/HEAD method-aware static aliases such as /events to { type: 'static', file: 'events.html' }; intentional read-only GET/HEAD wildcard function routes may set acknowledge_readonly: true. Direct /functions/v1/:name remains API-key protected. Secret values must be set first with set_secret, never placed in deploy specs. All bytes ride through CAS (no inline-body cap). Returns release_id, URLs, warnings, and a structured progress-event log. Stops before upload/commit on confirmation-required warnings unless reviewed codes are passed with allow_warning_codes or allow_warnings is true.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_warning_codes | array | – | Continue past specific reviewed plan warning codes. Prefer this to allow_warnings when only one known warning class is intentional. |
| allow_warnings | boolean | – | Continue past plan warnings that require confirmation. Default false: the tool stops before upload/commit so an agent can set missing secrets or inspect warnings. |
| assets | object | – | v1.48 unified-apply assets slice. Asset writes promote inside the same activation transaction as functions/site/secrets so a release flips atomically. |
| base | – | – | Diff base. Default `{ release: 'current' }`. Use `{ release: 'empty' }` for a fresh deploy that fails if a release already exists. |
| database | object | – | – |
| functions | object | – | – |
| i18n | – | – | Routed-locale-context release slice. Omit to carry forward from base release; pass null to clear the slice; pass { defaultLocale, locales, detect? } to replace. Drives the negotiated locale that the… |
| idempotency_key | string | – | Optional client idempotency key. Combined with the project id and gateway-computed manifest digest to deduplicate retries. |
| project_id | string | yes | Project ID to deploy to (from provision). |
| routes | – | – | Apply-v1 web routes. Omit or pass null to carry forward base routes; pass { replace: [] } to clear routes; pass { replace: [{ pattern, methods?, target: { type: 'function', name } }] } for functions… |
| secrets | object | – | – |
| site | – | – | – |
| subdomains | object | – | At most one subdomain per project — multi-element `set` is rejected with SUBDOMAIN_MULTI_NOT_SUPPORTED. |
No output schema declared.
No examples provided.
deploy_diagnose_url ~187
Read-only authenticated diagnostics for a Run402 public URL or host/path pair. Explains whether the current live release would serve the URL, including match, diagnostic body status, static manifest/cache metadata when returned, structured warnings for ignored query/fragment, and next steps. This does not fetch bytes, purge cache, mutate deploy state, or expose internal CAS URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | – | Lower-level hostname form without scheme, path, query, or fragment. |
| method | string | – | HTTP method to diagnose. Defaults to gateway behavior when omitted. |
| path | string | – | Lower-level public URL path. Must start with '/' when supplied. |
| project_id | string | yes | Project ID used for local apikey lookup. It is not sent as a query parameter. |
| url | string | – | Absolute HTTP(S) public URL to diagnose. Mutually exclusive with host/path. |
No output schema declared.
No examples provided.
deploy_events ~116
Fetch the recorded phase-event stream for a deploy operation. Returns the same `DeployEvent` shapes the `deploy` tool emits inline during an in-flight deploy — useful for inspecting a deploy after the fact (e.g., a deploy that the agent didn't observe directly, or one being resumed from a different process).
| Name | Type | Req | Description |
|---|---|---|---|
| operation_id | string | yes | Operation id returned by a prior `deploy` call. Must start with `op_`. |
| project_id | string | yes | Project ID that owns the operation. Required (apikey-gated endpoint). |
No output schema declared.
No examples provided.
deploy_function ~460
Deploy a serverless function (Node 22) to a project. Handler signature: export default async (req: Request) => Response. The function can `import { db, adminDb, auth, email, ai } from '@run402/functions'` — auto-bundled by the platform. Additional npm packages are bundled at deploy time when listed in `deps` (bare names resolve to latest; pinned/range specs are honored verbatim; `@run402/functions` and `run402-functions` rejected; max 30 entries; native binaries rejected). For schedule/email background triggers, prefer a unified deploy manifest with `functions.replace.<name>.triggers[]` so every trigger creates a durable function run. The response includes `runtime_version` (the bundled `@run402/functions` version — surface as 'Functions runtime version', never bare 'runtime'), `deps_resolved` (map of dep name → installed concrete version), and an optional top-level `warnings` array (sibling to the function record).
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | TypeScript or JavaScript source code. Must export a default async function: export default async (req: Request) => Response |
| config | object | – | Optional function configuration |
| deps | array | – | Optional npm package specs to install and bundle. Bare names (e.g. 'lodash') resolve to latest at deploy time; pinned (e.g. 'lodash@4.17.21') or range specs ('date-fns@^3.0.0') are honored verbatim.… |
| name | string | yes | Function name (URL-safe slug: lowercase, hyphens, alphanumeric, e.g. 'stripe-webhook') |
| project_id | string | yes | The project ID to deploy the function to |
| schedule | string|null | – | Cron expression (5-field, e.g. '*/15 * * * *') to run the function on a schedule. Pass null to remove an existing schedule. |
No output schema declared.
No examples provided.
deploy_list ~159
List recent deploy operations for a project. Returns operation_id, status, release_id, and timestamps. Use this to build deploy-history UIs or to find a recent operation_id to feed into `deploy_resume` / `deploy_events`. Pass `limit` to bound the result set; the gateway also returns a `cursor` for pagination when there are more.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor returned by a previous deploy_list response. Forwarded to the gateway as `?cursor=`. |
| limit | integer | – | Maximum number of operations to return. Forwarded to the gateway as `?limit=`; the gateway picks a default when omitted. |
| project_id | string | yes | Project ID to list operations for. Required (apikey-gated). |
No output schema declared.
No examples provided.
deploy_rehearse ~86
Run a persisted apply plan against a contained branch and return the rehearsal report. Source project and plan stay untouched.
| Name | Type | Req | Description |
|---|---|---|---|
| plan_id | string | yes | Persisted apply plan ID returned by deploy planning. |
| project_id | string | – | Project ID for operator-approval metadata and follow-up status reads. |
| teardown | string | – | Rehearsal branch cleanup policy. Default keep. |
No output schema declared.
No examples provided.
deploy_release_active ~92
Fetch the current-live release inventory for a project. Returns `release_id: null` with an empty current-live inventory when no release is active yet. Use this before deploy diffs to understand what is currently serving. Canonical SDK errors are preserved.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID to inspect. |
| site_limit | integer | – | Maximum site path entries to include. Gateway default: 5000. |
No output schema declared.
No examples provided.
deploy_release_diff ~148
Diff two release targets for a project. `from` may be `empty`, `active`, or a release id; `to` may be `active` or a release id. Returns release-to-release diff buckets and `migrations.applied_between_releases`. Semantic gateway errors such as invalid targets, same-release diffs, or no active release are preserved.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | Diff source target: empty, active, or a release id. |
| limit | integer | – | Maximum entries per site diff bucket. Gateway default: 1000. |
| project_id | string | yes | Project ID to inspect. |
| to | string | yes | Diff target: active or a release id. |
No output schema declared.
No examples provided.
deploy_release_get ~114
Fetch a release inventory by id. Returns release metadata, effective/desired state kind, site path inventory, function inventory, secret keys, subdomains, and applied migrations. Use `site_limit` to cap large site inventories. Canonical SDK errors are preserved.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID that owns the release. |
| release_id | string | yes | Release ID to inspect, e.g. rel_... |
| site_limit | integer | – | Maximum site path entries to include. Gateway default: 5000. |
No output schema declared.
No examples provided.
deploy_resume ~97
Resume a deploy operation that ended in `activation_pending` or `schema_settling` (e.g. transient gateway failure between SQL commit and the pointer-swap activation). The gateway re-runs only the failed phase forward — SQL is never replayed. Idempotent: calling on an already-terminal operation returns the snapshot without re-running.
| Name | Type | Req | Description |
|---|---|---|---|
| operation_id | string | yes | Operation id returned by a prior `deploy` call. Required. |
No output schema declared.
No examples provided.
deploy_site ~130
Deploy a static site (HTML/CSS/JS) from inline file bytes. Files are staged to a temp directory, then uploaded via the v1.32 plan/commit transport — only bytes the gateway doesn't already have are PUT. Served at a unique URL via CloudFront. Free with active tier.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Array of files to deploy. Must include at least index.html. |
| project | string | yes | Project ID to link this deployment to |
| target | string | – | Deprecated/unsupported: unified deploy v2 does not support deployment target labels. Passing this field returns an error. |
No output schema declared.
No examples provided.
deploy_site_dir ~192
Deploy a static site from a local directory. Walks the tree, hashes each file, and uploads only the bytes the gateway doesn't already have via the v1.32 plan/commit transport. Files named .git, node_modules, or .DS_Store are skipped; symlinks are rejected. Re-deploying an unchanged tree issues no S3 PUTs. Free with active tier.
| Name | Type | Req | Description |
|---|---|---|---|
| dir | string | yes | Local directory to deploy. The SDK walks this directory, hashes each file, and uploads only bytes the gateway doesn't already have via the unified deploy primitive (CAS-backed). Files named .git, nod… |
| project | string | yes | Project ID to link this deployment to |
| target | string | – | Deprecated/unsupported: unified deploy v2 does not support deployment target labels. Passing this field returns an error. |
No output schema declared.
No examples provided.
deploy_verify_edge ~143
Verify gateway/edge release coherence for a deploy operation. Returns the canonical edge-coherence report, including pointer-update state, probed paths, stale-release evidence, and next actions. Set wait=true to poll until coherent or timeout_seconds elapses.
| Name | Type | Req | Description |
|---|---|---|---|
| operation_id | string | yes | Operation id returned by a prior `deploy` call. Must start with `op_`. |
| project_id | string | yes | Project ID that owns the operation. Required (apikey-gated endpoint). |
| timeout_seconds | integer | – | Maximum seconds to wait when `wait` is true. Defaults to 60. |
| wait | boolean | – | Poll until coherent or timeout. Defaults to false. |
No output schema declared.
No examples provided.
diagnose_public_url ~198
Returns the live CDN state for a public blob URL (probed once from gateway-us-east-1 — NOT a global view). Use this when a deployed asset shows the wrong version or you suspect cache staleness. The result includes `expectedSha256` (from gateway DB), `observedSha256` (what CloudFront just served), recent `invalidation` status, and a human-readable `hint` with actionable next-steps. The `probeMayHaveWarmedCache: true` field warns that the probe itself populates the cache, so subsequent reads from elsewhere may differ. URLs outside the requesting project return 403; non-`*.run402.com` URLs return 400 unless they're on one of your active custom domains.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID that owns the URL |
| url | string | yes | Full blob URL (e.g. https://app.run402.com/_blob/avatar.png) |
No output schema declared.
No examples provided.
domains_activate ~59
Activate custom mailbox addresses once ProjectDomain receive checks have passed. This switches addresses from managed fallback to the custom domain.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_apply ~64
Apply safe provider-managed ProjectDomain changes when authority is available. Manual-DNS domains return a typed next action instead of mutating external DNS.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_check ~64
Re-observe DNS/provider state for a ProjectDomain and return the current checks. Useful as a preflight and drift detector before validation cycles.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_disconnect ~51
Disconnect a ProjectDomain from the project and return mailbox addresses to managed fallback.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_ensure ~101
Create or update a project-scoped ProjectDomain desired state for web, email sending, inbound receive, mailbox addresses, and activation. Returns the aggregate with checks, DNS records, and next actions.
| Name | Type | Req | Description |
|---|---|---|---|
| desired | object | yes | Desired ProjectDomain state: web, email.send, email.receive, mailbox_addresses, and activation. |
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_get ~57
Get one ProjectDomain aggregate with desired, observed, effective, DNS records, checks, and next actions.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_list ~28
List all ProjectDomain aggregates for a project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_repair ~58
Repair Run402-owned ProjectDomain infrastructure, such as missing SES receipt-rule recipients, without changing external DNS.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
domains_test_receive ~93
Create a ProjectDomain receive test token for a mailbox address. Send mail to the returned address/token and poll domains_check for receive readiness.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The DNS domain, e.g. kysigned.com |
| project_id | string | yes | The project ID |
| to | string | yes | Local part or address to send the receive test to, e.g. info or info@kysigned.com |
No output schema declared.
No examples provided.
drain_signer ~110
Drain a KMS signer's entire native-token balance to a destination address. Works on suspended signers — the safety valve. Cost: chain gas + $0.000005 KMS sign fee.
| Name | Type | Req | Description |
|---|---|---|---|
| destination_address | string | yes | Where to send the entire native-token balance. Cost: chain gas + $0.000005 KMS sign fee. Works on suspended signers. |
| project_id | string | yes | The project ID |
| signer_id | string | yes | The KMS signer ID |
No output schema declared.
No examples provided.
errors_list ~544
Grouped, release-baselined error memory for a project, verdict-first: every page leads with a computed promote-vs-revert verdict (the gateway's numbers — never recomputed here), then the collapsed error identities. The post-promote watch: right after an apply/promote activates a release, call errors_list with new_in set to the just-activated release id (the promote response's next_actions carries a ready-made watch_errors command for the CLI equivalent). verdict.new_fingerprints > 0 means the release introduced NEW error identities — inspect errors[] (each row has samples with request ids + a runnable logs command) and consider reverting; new_fingerprints === 0 with healthy verdict.invocations_in_window means clean under real traffic (0 errors over 0 invocations is absence of signal, not proven health). Filter by since/until/function/kind/fingerprint; pass fingerprint_id to fetch one fingerprint's full detail (all samples + also_seen_in_functions). Quality tier coarse = the function predates the error side-channel; redeploy to upgrade fidelity. Read-only, own-project service-key auth; cursors are opaque.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque `next_cursor` from a prior page. Returns the next page. Never parse cursors. |
| fingerprint | string | – | Restrict the list to one exact fingerprint identity (`fp_…`). |
| fingerprint_id | string | – | Fetch ONE fingerprint's full detail (all samples, per-sample fetch_logs commands, also_seen_in_functions) instead of a page. When set, all filter params (since/until/function/kind/fingerprint/new_in/… |
| function | string | – | Restrict to one function by name. |
| kind | string | – | Restrict to one choke-point class: uncaught | boot_crash | invoke_failed | handled_5xx. |
| limit | integer | – | Page size (default 50, max 200). |
| new_in | string | – | A release id, or the literal "active" (gateway resolves the live release). Selects error identities FIRST seen under that release and drives the verdict's new_fingerprints / baseline — the promote-ga… |
| project_id | string | yes | Project whose errors to read. Authorized with the project's OWN service key; a key for a different project gets 403, never a 404. |
| since | string | – | ISO-8601 window start. Default window is the last 24h (gateway resolves `until` − 24h). |
| until | string | – | ISO-8601 window end. Defaults to now (gateway-side). |
No output schema declared.
No examples provided.
export_project_archive ~247
Export the supported Run402 Core runtime slice of a Cloud project as a portable .r402ar archive. Can wait for readiness and write the downloaded archive to a local path. Secrets, credentials, billing, allowance, logs, fleet, and Cloud operations are never exported.
| Name | Type | Req | Description |
|---|---|---|---|
| auth | string | – | Auth export mode. Default stubs; credentials are never exported. |
| consistency | string | – | Consistency mode. Default pause-writes, recorded as cloud_write_pause_v1. |
| idempotency_key | string | – | Retry-safe idempotency key for archive creation. |
| output_path | string | – | Optional local file path for the downloaded .r402ar archive. When set, the tool waits for readiness and writes bytes here. |
| poll_interval_ms | integer | – | Polling interval in milliseconds. Default 1000. |
| project_id | string | yes | Project ID to export from Run402 Cloud. |
| scope | string | – | Archive scope. v1 supports portable-runtime-v1. |
| timeout_ms | integer | – | Wait timeout in milliseconds. Default 600000. |
| wait | boolean | – | Poll until ready. Defaults true when output_path is set, otherwise false. |
No output schema declared.
No examples provided.
fork_app ~85
Fork a published app into a new project. Creates a full copy including database, functions, site, and optionally claims a subdomain.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name for the new forked project |
| subdomain | string | – | Optional subdomain to claim for the forked app |
| version_id | string | yes | The app version ID to fork (from browse_apps) |
No output schema declared.
No examples provided.
functions_rebuild ~245
Refresh function(s) onto the platform's current entry wrapper + bundled runtime WITHOUT changing source (capability function-runtime-rebuild, gateway v1.69+). Provide `name` to rebuild one function, or omit it to rebuild every function in the project. Re-bundles from each function's STORED source with deps pinned to the recorded exact versions, so the source `code_hash` is unchanged and no new release is created — this is how a gateway-side wrapper fix (e.g. an SSR auth.* fix) reaches an already-deployed function (a plain redeploy with unchanged source does NOT pick it up). Strictly opt-in; the platform never auto-rebuilds. Wallet-authed (project ownership; no service key) and allowed during billing grace. Functions deployed before dependency locking return CANNOT_REBUILD_UNLOCKED_DEPS — redeploy them from source with `deploy_function`. Use `list_functions` (runtime_stale) or `run402 doctor` to find stale functions.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Function name to rebuild. Omit to rebuild every function in the project (batch). |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
generate_image ~91
Generate a PNG image from a text prompt. Costs $0.03 USDC via x402. Aspect ratios: square (1:1), landscape (16:9), portrait (9:16).
| Name | Type | Req | Description |
|---|---|---|---|
| aspect | string | – | Aspect ratio: square (1:1), landscape (16:9), portrait (9:16) |
| prompt | string | yes | Image description. Max 1000 characters. |
No output schema declared.
No examples provided.
get_agent_contact_status ~36
Get the current agent contact assurance state: wallet_only, email_pending, email_verified, passkey_pending, or operator_passkey.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_app ~38
Inspect a specific published app — details, required secrets, fork pricing.
| Name | Type | Req | Description |
|---|---|---|---|
| version_id | string | yes | The version ID of the app to inspect |
No output schema declared.
No examples provided.
get_contract_call_status ~78
Look up a previously submitted contract call by call_id. Returns lifecycle state (pending/confirmed/failed), block number, gas used, gas cost in USD-micros, receipt, and any error.
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | The contract call ID (ccall_...) |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
get_email ~65
Get a sent email with details and any replies.
| Name | Type | Req | Description |
|---|---|---|---|
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox. |
| message_id | string | yes | The message ID to retrieve |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
get_email_raw ~143
Get the raw RFC-822 bytes of an inbound email message, base64-encoded. The decoded bytes are bit-identical to the DKIM-signed original — no parsing, normalization, or CRLF cleanup. Use this for cryptographic verification (DKIM checks, zk-email proofs). Inbound messages only; outbound returns 404. For display/threading, use get_email instead.
| Name | Type | Req | Description |
|---|---|---|---|
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox. |
| message_id | string | yes | The message ID to retrieve raw bytes for (must be an inbound message) |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
get_expose ~86
Get the current authorization manifest for a project (GET /projects/v1/admin/:id/expose). Returns the last-applied manifest from `internal.project_manifest`, or a manifest reconstructed by introspecting live DB state if none has ever been applied. The `source` field is `"applied"` or `"introspected"`.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
get_function_logs ~169
Get recent logs from a deployed function. Shows console.log/error output and error stack traces from CloudWatch.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Function name to get logs for |
| project_id | string | yes | The project ID |
| request_id | string | – | Only return logs correlated to this routed request id, function run id, or attempt id, such as req_abc123, fnrun_abc123, or fnatt_abc123. |
| since | string | – | Only return logs at or after this ISO 8601 timestamp (e.g. 2026-03-29T14:00:00Z). Invalid timestamps are rejected before the API call. |
| tail | number | – | Number of log lines to return (default: 50, max: 1000) |
No output schema declared.
No examples provided.
get_function_run ~46
Fetch one durable function run by fnrun_ id.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| run_id | string | yes | Function run id, fnrun_... |
No output schema declared.
No examples provided.
get_function_run_logs ~86
Fetch logs correlated to one durable function run.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| run_id | string | yes | Function run id, fnrun_... |
| since | string | – | Only include logs at or after this ISO timestamp or epoch ms. |
| tail | integer | – | Number of log entries to return (default 50, max 1000). |
No output schema declared.
No examples provided.
get_mailbox ~85
Get the project's mailbox info (ID, address, slug, default/readiness metadata, and footer-policy fields when returned). Use to check if a mailbox exists.
| Name | Type | Req | Description |
|---|---|---|---|
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox (otherwise returns an ambiguity error naming the slugs). |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
get_mailbox_webhook ~69
Get details of a specific webhook by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox. |
| project_id | string | yes | The project ID |
| webhook_id | string | yes | The webhook ID (whk_...) |
No output schema declared.
No examples provided.
get_notification_preferences ~31
Read the operator's notification preferences (channels, cadence, threshold/lifecycle/security toggles, locale, timezone).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_operator_status ~36
Compact operator-health snapshot: contact assurance, critical items, skipped notifications, organizations, projects, active thresholds. Read via run402 doctor.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_org ~101
Read one organization (GET /orgs/v1/:org_id) — its `org_id`, `display_name`, `tier`, `lease_started_at`, `lease_expires_at`, and your `role`. Any active member may read; a non-member (including a guessed id) gets the same non-revealing 403. Params: `org_id`.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | The org id, e.g. `org_...`. |
No output schema declared.
No examples provided.
get_project_snapshot ~43
Get one project data snapshot and its next actions.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID that owns the snapshot. |
| snapshot_id | string | yes | Snapshot ID. |
No output schema declared.
No examples provided.
What is the Run402 MCP server?
Run402 is an MCP server listed in the public MCP registry as com.run402/mcp. x402 pay-per-call infra for agents: $0.03 image generation, Postgres, auth, storage, functions. This page covers its npm package (run402-mcp).
Is the Run402 MCP server safe to use?
Run402 scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Run402 MCP server expose?
Run402 exposes 198 tools: provision_postgres_project, run_sql, rest_query, apply_expose, validate_manifest, and 193 more. Their descriptions and schemas cost roughly 22,855 tokens of context every time the server is loaded.
Is the Run402 MCP server still maintained?
Run402 is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Run402 MCP server under?
Run402 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.