Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Run402

NPM · RUN402-MCP · 2 COMPONENTS · SCANNED SEP 20

x402 pay-per-call infra for agents: $0.03 image generation, Postgres, auth, storage, functions.

0 this week 92 Trust /100
Trust breakdown (7 categories)

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
Install

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

# add to Claude Code
claude mcp add com-run402-mcp -- npx -y run402-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "com-run402-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "run402-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-run402-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "run402-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-run402-mcp -- npx -y run402-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-run402-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "run402-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-run402-mcp --command npx --arg -y --arg run402-mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-run402-mcp:
    command: "npx"
    args: ["-y", "run402-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-run402-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "run402-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-run402-mcp -t stdio -c npx -a -y run402-mcp
// mcp.json
{
  "mcpServers": {
    "com-run402-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "run402-mcp"
      ]
    }
  }
}
Changelog

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
Diagnostics

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 →

MCP tools · 198 exposed · ~22,855 tokens

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 →

Tool Tokens
accept_project_transfer ~204

Accept an incoming WALLET transfer (v1.93+). Your wallet must equal the transfer's to_wallet. The accept transaction atomically: (a) flips ownership to your wallet, (b) revokes the previous owner's CI bindings on the project, (c) enqueues notifications to both parties, (d) stamps a persistent `secrets_rotation_advised` advisory. Secret VALUES are inherited (rotation strongly advised via `set_secret` for each name). GitHub repo ownership is NOT part of the transfer. Email transfers complete via `claim_project_transfer`, not this tool. Calls POST /agent/v1/transfers/:transfer_id/accept.

NameTypeReqDescription
transfer_idstringyesWALLET transfer id to accept. Your wallet must equal the transfer's to_wallet. Atomically flips ownership, revokes the previous owner's CI bindings on the project, and stamps a `secrets_rotation_advi…

No output schema declared.

No examples provided.

add_org_member ~152

Add a member to an org BY WALLET (POST /orgs/v1/:org_id/members). A brand-new wallet is provisioned as a `human` principal. `role` defaults to `developer`. Requires you to hold an active `owner` membership. (Email-first invite is a separate, not-yet-shipped flow.)

NameTypeReqDescription
org_idstringyesThe org id to add the member to.
rolestringInitial role. Defaults to `developer` when omitted. Requires you to be an active `owner`.
walletstringyesEVM address (or named wallet) to add. A brand-new wallet is provisioned as a `human` principal.

No output schema declared.

No examples provided.

admin_archive_project ~128

Operator moderation action — archive a single project (sets `projects.archived_at = NOW()`). Independent of organization-level lifecycle: sibling projects on the same organization keep serving. No-op when the project is already archived. Platform-admin only. Calls POST /projects/v1/admin/:id/archive.

NameTypeReqDescription
project_idstringyesThe project ID to archive. Platform-admin only — sets `projects.archived_at = NOW()` and takes only this project down. Sibling projects on the same organization keep serving.
reasonstringFree-text moderation reason recorded in the audit log (recommended).

No output schema declared.

No examples provided.

admin_reactivate_project ~170

Operator un-archive — flips `projects.archived_at` back to NULL. In v1.57 this was narrowed: it no longer touches organization-level lifecycle. To reactivate a grace-state organization, subscribe a tier (`tier_set`) or enable lease-perpetual (`admin_set_lease_perpetual`). Platform-admin only. Calls POST /projects/v1/admin/:id/reactivate.

NameTypeReqDescription
project_idstringyesThe project ID to un-archive. Platform-admin only — flips `projects.archived_at` back to NULL. In v1.57 this was narrowed: it does NOT reactivate a grace-state organization. For that, subscribe a tie…

No output schema declared.

No examples provided.

admin_set_lease_perpetual ~286

Toggle an organization's `lease_perpetual` escape hatch (v1.57+). When `lease_perpetual: true`, the organization never advances past `active` regardless of lease expiry; every project in the organization inherits the pinned state. Enabling on a grace-state organization (past_due / frozen / dormant) reactivates inline and returns `reactivated: true`. Platform-admin only — uses the configured allowance wallet for admin auth. Replaces the v1.56 `pin_project` (gateway endpoint /projects/v1/admin/:id/pin was removed in v1.57). Calls POST /orgs/v1/admin/:org_id/lease-perpetual.

NameTypeReqDescription
lease_perpetualbooleanyestrue → pin every project in the organization (organization never advances past 'active' regardless of lease expiry). false → resume normal lifecycle advancement. Enabling on a grace-state organizatio…
org_idstringyesThe organization ID to toggle. Format: UUID. Platform-admin only — uses the configured allowance wallet for admin auth; project owners with a non-admin SIWX wallet will receive 403 admin_required.

No output schema declared.

No examples provided.

ai_moderate ~56

Run content moderation on text. Returns flagged status and category scores. Free for all projects, requires service key.

NameTypeReqDescription
project_idstringyesThe project ID
textstringyesText content to check for moderation

No output schema declared.

No examples provided.

ai_translate ~136

Translate text to a target language. Requires service key and active AI Translation add-on. Supports optional source language and context hint.

NameTypeReqDescription
contextstringContext hint for tone/register (max 200 chars, e.g. 'formal business email')
fromstringSource language (ISO 639-1 code). Auto-detected if omitted
project_idstringyesThe project ID
textstringyesText to translate (max 10,000 characters)
tostringyesTarget language (ISO 639-1 code, e.g. 'es', 'ja', 'fr')

No output schema declared.

No examples provided.

ai_usage ~38

Get AI translation usage for the current billing period — used words, quota, and remaining balance.

NameTypeReqDescription
project_idstringyesThe project ID

No output schema declared.

No examples provided.

allowance_create ~42

Create a new local agent allowance (Base Sepolia testnet). Generates a private key and derives the Ethereum address. Saved to ~/.config/run402/allowance.json.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

allowance_export ~69

Export the local agent allowance address. Safe to share publicly. This is also the MAINNET on-ramp: to pay with real USDC on Base mainnet, send USDC to this address — `request_faucet` only funds Base Sepolia testnet, which cannot settle a real payment.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

allowance_status ~22

Check local agent allowance status — address, network, and funding status.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

app_up ~291

Plan or run the canonical app-aware `run402 up` workflow from a local path or repo URL. Delegates to the SDK and returns the shared app-up result envelope with graph steps, resources, diagnostics, and next_actions.

NameTypeReqDescription
allow_prunebooleanApprove destructive managed-resource prune steps.
allow_shell_buildbooleanApprove shell-string build commands after review.
build_modestringOverride app build mode.
dirstringWorkspace directory to inspect when source is omitted.
dry_runbooleanPlan only. No gateway mutation, build execution, release commit, local link write, or prune.
idempotency_keystringRoot idempotency key for resumable app-up graph mutations.
manifeststringExplicit manifest path. Defaults to run402.json, then advanced release-only manifests.
max_spend_usdnumberMaximum spend app_up may approve for readiness steps.
namestringProject/app instance name, for example kysigned2.
project_idstringExisting project id to install into.
sourcestringLocal app directory or public Git repository URL. Defaults to the current directory.
tierstringBootstrap tier if account readiness is needed.
yesbooleanApprove non-interactive prerequisite, spend, and local-write prompts.

No output schema declared.

No examples provided.

apply_expose ~188

Apply a declarative authorization manifest to a project (POST /projects/v1/admin/:id/expose). The manifest describes the full authorization surface: tables (with policy, owner_column, force_owner_on_insert, i_understand_this_is_unrestricted, custom_sql), views (with base, select, filter), and rpcs (with signature, grant_to). Convergent: applying the same manifest twice is a no-op; items dropped between applies have their policies/grants/triggers/views revoked. Tables are dark by default — any table not declared with expose:true is unreachable via anon/authenticated.

NameTypeReqDescription
manifestobjectyesFull authorization manifest. Convergent: applying twice is a no-op; items removed between applies are dropped. Tables are dark by default — any table not listed with expose:true is unreachable via an…
project_idstringyesThe project ID

No output schema declared.

No examples provided.

assets_get ~87

Download a blob to a local file path. Writes bytes directly to disk (no context-window bloat). Returns size + SHA-256 header (if the blob has one stored).

NameTypeReqDescription
keystringyesBlob key to download
output_pathstringyesLocal filesystem path to write the bytes to. Parent directories will be created.
project_idstringyesProject ID

No output schema declared.

No examples provided.

assets_ls ~184

List blobs in a project with optional prefix filter over a flat key namespace. Supports pagination via cursor.

NameTypeReqDescription
cursorstringPagination cursor from a previous response's next_cursor. v1.50: cursor is sort-pinned — reuse with a different `sort` returns 400 INVALID_CURSOR_FOR_SORT.
filterobjectv1.50: media-picker filter. Unknown keys are rejected with INVALID_FILTER_KEY before any HTTP call.
limitintegerMax results (default 100, max 1000)
prefixstringFilter: only return blobs whose key starts with this prefix
project_idstringyesProject ID
sortstringv1.50: result ordering. Default 'key:asc' (legacy bare-key cursor). 'createdAt:*' variants use a base64url JSON cursor.

No output schema declared.

No examples provided.

assets_put ~437

Upload a blob (file or inline content) to project storage via direct-to-S3. Accepts local_path (any size up to 5 TiB) or content (≤ 1 MB inline). Public blobs get a CDN URL; private blobs require authenticated reads. Use `immutable: true` to produce a content-addressed URL that never needs cache invalidation. For image uploads (jpeg/png/webp/heic/heif), the gateway also returns width_px/height_px/blurhash/display_url and a `variants` map (thumb 320w, medium 800w, large 1920w WebP — plus display_jpeg for HEIC sources) so apps can render responsive thumbnails without re-encoding client-side. See the SDK docs for the full AssetRef shape.

NameTypeReqDescription
contentstringInline content to upload (UTF-8 string). For small blobs ≤ 1 MB. Mutually exclusive with `local_path`.
content_typestringMIME type (auto-detected from file extension if omitted).
exif_policystringv1.50: EXIF retention policy for image uploads. Default 'keep'. 'strip' discards EXIF from the stored bytes and the image_exif response field.
immutablebooleanWhen true, the returned URL includes a content-hash suffix so overwrites produce distinct URLs. CLI auto-computes sha256.
keystringyesDestination key (path in the project's blob namespace). No leading slash. Example: 'images/logo.png' or 'circuits/v1.zkey'.
local_pathstringPath to a local file to upload. Mutually exclusive with `content`.
metadataobjectv1.50: caller-provided flat metadata stored alongside the asset. Object with string / number / boolean / string[] leaves; ≤4 KB serialized. Nested objects rejected with INVALID_ASSET_METADATA (HTTP 4…
project_idstringyesProject ID
visibilitystringDefault: public. Public blobs get a CDN URL; private blobs require authenticated reads.

No output schema declared.

No examples provided.

assets_rm ~42

Delete a blob from project storage and decrement the project's storage_bytes.

NameTypeReqDescription
keystringyesBlob key to delete
project_idstringyesProject ID

No output schema declared.

No examples provided.

assets_sign ~97

Generate a time-boxed S3 presigned GET URL for a blob. Use this to share a private blob externally without exposing your apikey. Default TTL 1 hour, max 7 days.

NameTypeReqDescription
keystringyesBlob key to sign a GET URL for
project_idstringyesProject ID
ttl_secondsintegerURL lifetime in seconds (60 – 604 800, default 3600)

No output schema declared.

No examples provided.

auth_settings ~168

Update project auth settings: allow_password_set, preferred_sign_in_method, public_signup, and require_passkey_for_project_admin. Requires service_key.

NameTypeReqDescription
allow_password_setbooleanAllow passwordless users (magic link / OAuth) to set a password. Default: false.
allowed_email_domainsarrayRestrict hosted Google sign-in to these email domains, enforced at token issuance. [] or omitted = unrestricted; pass [] to clear. Normalized + domain-validated server-side.
preferred_sign_in_methodProject UI hint for the preferred sign-in method.
project_idstringyesThe project ID
public_signupstringPublic signup policy.
require_passkey_for_project_adminbooleanRequire eligible passkey login for project_admin sessions.

No output schema declared.

No examples provided.

billing_history ~78

View billing ledger history for the agent's allowance wallet. The wallet is resolved to its organization over SIWX (signed automatically); a wallet not linked to yours requires an admin key.

NameTypeReqDescription
limitnumberMax entries to return (default: 20)
walletstringyesWallet address (0x...) to get billing history for

No output schema declared.

No examples provided.

browse_apps ~44

Browse public apps available for forking. Optionally filter by tags.

NameTypeReqDescription
tagsarrayOptional tags to filter by (e.g. ['auth', 'rls'])

No output schema declared.

No examples provided.

cancel_function_run ~50

Cancel a scheduled/queued durable function run when it has not completed yet.

NameTypeReqDescription
project_idstringyesThe project ID
run_idstringyesFunction run id, fnrun_...

No output schema declared.

No examples provided.

cancel_project_transfer ~149

Cancel a pending project transfer of any kind (v1.93+). You must be authorized for the row's kind (a wallet signing party, an owner/admin of the offering org, or the addressed-email principal). Already-accepted/cancelled/expired transfers return 409 TRANSFER_ALREADY_PROCESSED. Calls POST /agent/v1/transfers/:transfer_id/cancel.

NameTypeReqDescription
reasonstringOptional free-text cancellation reason recorded on the audit row.
transfer_idstringyesTransfer id to cancel. You must be authorized for the row's kind (a wallet signing party, or an owner/admin of the offering org / the addressed-email principal). Kind-agnostic.

No output schema declared.

No examples provided.

check_balance ~70

Check the organization balance for the agent's allowance wallet — available and held funds. The wallet is resolved to its organization over SIWX (signed automatically); reading a wallet that is not linked to yours requires an admin key.

NameTypeReqDescription
walletstringyesWallet address (0x...) to check billing balance for

No output schema declared.

No examples provided.

ci_create_binding ~317

Create a GitHub Actions CI/OIDC deploy binding by sending a locally signed delegation to the SDK. This MCP wrapper does not sign or broaden authority; the signed delegation defines the repository/branch or environment, allowed events/actions, and optional route_scopes. Without route_scopes, CI cannot deploy route declarations.

NameTypeReqDescription
allowed_actionsarrayyesAllowed CI actions. V1 supports only deploy.
allowed_eventsarrayyesAllowed GitHub event names, typically push and workflow_dispatch.
expires_atstring|nullOptional ISO timestamp when this binding expires.
github_repository_idstring|nullNumeric GitHub repository id to pin the binding to, or null if absent.
noncestringyesLowercase hex nonce included in the signed delegation.
project_idstringyesProject ID the CI binding may deploy to.
providerstringCI provider. V1 supports only github-actions; omitted defaults to github-actions.
route_scopesarrayOptional route delegation scopes, normalized by the SDK. Use exact paths like /admin or final wildcard prefixes like /api/*. Omit or pass [] for no CI route authority.
signed_delegationstringyesBase64 SIGN-IN-WITH-X delegation signed locally by the allowance wallet. This MCP tool does not sign; it only sends the signed delegation to the SDK.
subject_matchstringyesGitHub Actions OIDC subject match, e.g. repo:owner/repo:ref:refs/heads/main.

No output schema declared.

No examples provided.

ci_get_binding ~56

Get one CI/OIDC deploy binding by id, including its subject, allowed events/actions, repository id, revocation state, and route_scopes.

NameTypeReqDescription
binding_idstringyesCI binding id, e.g. cib_...

No output schema declared.

No examples provided.

ci_list_bindings ~58

List CI/OIDC deploy bindings for a project, including route_scopes when delegated. Use this to inspect which GitHub Actions subjects can deploy before editing bindings.

NameTypeReqDescription
project_idstringyesProject ID whose CI bindings should be listed.

No output schema declared.

No examples provided.

ci_revoke_binding ~59

Revoke one CI/OIDC deploy binding. Revocation stops future CI gateway requests, but does not undo already deployed releases or rotate secrets.

NameTypeReqDescription
binding_idstringyesCI binding id to revoke. Revocation stops future CI requests only.

No output schema declared.

No examples provided.

claim_project_transfer ~224

Claim an incoming EMAIL transfer into an org (v1.93+) — the email analog of `accept_project_transfer`. The transfer's addressed email must match your verified email. Provide `org_id` to claim into an org you own/admin, or omit to create a new org. Atomically flips ownership and returns the new owner's project keys (persisted to the local keystore, symmetric with accept) so you can operate the project immediately. Calls POST /agent/v1/transfers/:transfer_id/claim.

NameTypeReqDescription
accept_retained_collaboratorbooleanAccept the sender's v1.91 retained-`developer`-membership offer (see the preview's retain_collaborator). Omit (the default) for a full severance.
org_idstringOrganization to claim the project into (you must own/admin it). Omit to claim into a brand-new org.
transfer_idstringyesEMAIL transfer id to claim. The transfer's addressed email must match your verified email. The email analog of `accept_project_transfer`.

No output schema declared.

No examples provided.

claim_subdomain ~134

Claim a custom subdomain (e.g. myapp.run402.com) and point it at an existing deployment. Free, requires service_key auth.

NameTypeReqDescription
deployment_idstringyesDeployment ID to point this subdomain at (e.g. 'dpl_1709337600000_a1b2c3')
namestringyesCustom subdomain name (e.g. 'myapp' → myapp.run402.com). 3-63 chars, lowercase alphanumeric + hyphens.
project_idstringOptional project ID for ownership tracking. Uses stored service_key for auth.

No output schema declared.

No examples provided.

contract_call ~199

Submit a smart-contract write call from a KMS signer. The gateway encodes via viem, signs the digest via AWS KMS, and broadcasts. Idempotent on optional idempotency_key. Cost: chain gas at-cost + $0.000005 KMS sign fee per call.

NameTypeReqDescription
abi_fragmentarrayyesABI fragment containing the function definition
argsarrayyesFunction arguments (must match ABI)
chainstringyesEVM chain
contract_addressstringyes0x-prefixed contract address
function_namestringyesFunction name to invoke
idempotency_keystringOptional idempotency key — same key returns same call_id without re-broadcasting
project_idstringyesThe project ID
signer_idstringyesThe KMS signer ID
valuestringOptional native-token value in wei (decimal string)

No output schema declared.

No examples provided.

contract_deploy ~275

Deploy a smart contract from a KMS signer (signs a contract-creation tx with `to: null + data: bytecode`). The `bytecode` is full creation calldata — creation bytecode + ABI-encoded constructor args, concatenated client-side (run402 does NOT compile Solidity). Returns the deterministic CREATE address synchronously in `contract_address` — known before confirmation, no polling needed to know where the contract lives. Same pricing as `contract_call`: chain gas at-cost + $0.000005 KMS sign fee.

NameTypeReqDescription
bytecodestringyesFull creation calldata as 0x-prefixed hex (creation bytecode + ABI-encoded constructor args, concatenated client-side). Non-empty, even-length, ≤ 128 KB. run402 does NOT compile Solidity.
chainstringyesEVM chain (must match the signer's chain)
idempotency_keystringOptional idempotency key — same key + same bytecode returns same call_id without re-broadcasting
project_idstringyesThe project ID
signer_idstringyesThe KMS signer ID (cwlt_...) that will sign + own the new contract
valuestringOptional native-token value in wei to attach to the deploy (decimal string)

No output schema declared.

No examples provided.

contract_read ~92

Read-only smart-contract call (view/pure functions). No signing, no gas, no billing — pure RPC convenience.

NameTypeReqDescription
abi_fragmentarrayyesABI fragment containing the view/pure function
argsarrayyesFunction arguments
chainstringyesEVM chain
contract_addressstringyes0x-prefixed contract address
function_namestringyesFunction name

No output schema declared.

No examples provided.

create_auth_user ~133

Create or update a project auth user with the service key. Can set project_admin and optionally send a trusted invite.

NameTypeReqDescription
client_stateOptional opaque state preserved through trusted invite verification
emailstringyesEmail address of the auth user to create or update
is_adminbooleanSet project_admin status for this user
project_idstringyesThe project ID
redirect_urlstringRequired when send_invite=true. Must be an allowed project auth redirect origin.
send_invitebooleanSend a trusted invite magic link after creating/updating the user

No output schema declared.

No examples provided.

create_checkout ~125

Create a Stripe checkout URL for an organization. Products: balance_topup, tier, email_pack.

NameTypeReqDescription
amount_usd_microsnumberRequired for product=balance_topup; amount in micro-USD (e.g. 5000000 = $5.00)
cancel_urlstringOptional checkout cancel redirect URL
org_idstringyesOrganization ID to bill
productstringyesCheckout product
success_urlstringOptional checkout success redirect URL
tierstringRequired for product=tier

No output schema declared.

No examples provided.

create_email_organization ~59

Create an email-based organization (Stripe-only, no wallet required). Sends a verification email. Idempotent — duplicate emails return the existing organization.

NameTypeReqDescription
emailstringyesEmail address to create an organization for (Stripe-only, no wallet)

No output schema declared.

No examples provided.

create_function_run ~305

Create a durable function run with a required idempotency key. Supports immediate, delayed, or run_at scheduling, expiry, retry policy, and optional wait. Use this instead of ad hoc cron/polling when work must survive retries or be redriven.

NameTypeReqDescription
delaystringDelay before first attempt, such as `10m`, `1h`, or `3d`. Mutually exclusive with run_at.
delay_secondsnumberDelay before first attempt in seconds. Mutually exclusive with delay and run_at.
event_typestringyesApplication event type delivered to the function run handler
expires_afterstringRelative expiry duration, such as `1d`.
expires_atstringAbsolute ISO-8601 expiry time.
idempotency_keystringyesRequired idempotency key. Reuse it when retrying the same logical work item.
namestringyesFunction name to run
payloadobjectJSON object payload delivered to the handler
poll_interval_msintegerPolling interval in milliseconds.
project_idstringyesThe project ID
retryobject
run_atstringAbsolute ISO-8601 first-attempt time. Mutually exclusive with delay/delay_seconds.
timeout_msintegerMaximum wait time in milliseconds.
waitbooleanWait until the run becomes terminal before returning.

No output schema declared.

No examples provided.

create_mailbox ~139

Create a project-scoped mailbox local part. The managed address is <slug>@<project-mail-host>.mail.run402.com; matching slugs in other projects are allowed. Returns mailbox_settings and next_actions when the gateway provides default-role repair guidance. Not idempotent: same-project slug conflicts/cooldowns/limit errors are surfaced.

NameTypeReqDescription
project_idstringyesThe project ID to create a mailbox for
slugstringyesProject-scoped mailbox local part (3-63 chars, lowercase alphanumeric + hyphens, no consecutive hyphens). Creates <slug>@<project-mail-host>.mail.run402.com

No output schema declared.

No examples provided.

create_notification_rule ~257

Create a Telegram routing rule: one match (project_id / source / event_types / classes, all ANDed, each optional — omitted = wildcard) routes to one Telegram binding. Requires operator_passkey assurance. An unusable or foreign telegram_binding_id returns the same 404 as a nonexistent one.

NameTypeReqDescription
classesarrayOnly match these notification classes (matches ANY listed value), e.g. 'lifecycle', 'app'. Omit to match any class. An empty array matches NOTHING (not a wildcard).
event_typesarrayOnly match these exact event_type names (matches ANY listed value). Omit to match any event_type. An empty array matches NOTHING (not a wildcard).
project_idstringOnly match events for this project. Omit to match every project (wildcard).
sourcestringOnly match events from this source: 'app' (a deployed function's events.emit(...) calls) or 'platform' (deploys, lifecycle, verification, ...). Omit to match both.
telegram_binding_idstringyesThe Telegram binding (chat) this rule routes matching events to. Must be an active binding owned by this operator — see list_notification_channels.

No output schema declared.

No examples provided.

create_org ~140

Create an empty organization on the prototype tier (POST /orgs/v1); you become its owner. Accepts only an optional `display_name` (no tier input); the response reports `tier`, `lease_started_at`, and `lease_expires_at`. Step-up gated; the soft per-owner free-org cap may return `FREE_ORG_OWNER_LIMIT_EXCEEDED`.

NameTypeReqDescription
display_namestringOptional free-text label (e.g. `Kychee`). Non-unique, not an id. Omit for an unlabeled org. There is no tier input at create; the response reports the created org's prototype tier/lease state.

No output schema declared.

No examples provided.

create_project_branch ~134

Create a contained branch project from a fresh or existing snapshot. Email is sandboxed/off and cron is off unless explicitly enabled.

NameTypeReqDescription
email_modestringBranch email containment. Default sandbox.
enable_cronbooleanEnable scheduled functions on the branch. Default false.
from_snapshot_idstringExisting ready snapshot to branch from. Omit to capture a fresh contained snapshot first.
namestringHuman-readable branch project name.
project_idstringyesParent project ID.
ttl_daysintegerBranch TTL in days. Default 7, max 30.

No output schema declared.

No examples provided.

create_project_grant ~174

Issue a per-project capability grant to a wallet (for agent/CI principals that aren't broad org members). Params: `project_id`, `wallet`, `capability` (e.g. `deploy`, `functions:write`), optional `policy` / `expires_at`. Requires you to be an owner of the project's org.

NameTypeReqDescription
capabilitystringyesCapability to grant, e.g. `deploy` or `functions:write`.
expires_atstringOptional ISO-8601 expiry. Omit for a non-expiring grant.
policyobjectOptional capability-scoping policy object (gateway-interpreted).
project_idstringyesProject id to grant access to.
walletstringyesEVM address (or named wallet) the grant is issued to.

No output schema declared.

No examples provided.

create_project_snapshot ~39

Capture a manual project data snapshot. Snapshots are internal restore points, not downloadable archives.

NameTypeReqDescription
project_idstringyesProject ID to snapshot.

No output schema declared.

No examples provided.

delete_function ~38

Delete a deployed function from a project.

NameTypeReqDescription
namestringyesFunction name to delete
project_idstringyesThe project ID

No output schema declared.

No examples provided.

delete_mailbox ~126

Delete the project's mailbox (irreversible — drops all messages and webhook subscriptions). Requires confirm=true. If mailbox_id is omitted, resolves the project's mailbox.

NameTypeReqDescription
confirmbooleanyesMust be true. Destructive: deleting a mailbox drops all messages and webhook subscriptions and is irreversible.
mailbox_idstringMailbox to delete — slug or id (mbx_...). If omitted, deletes the project's only mailbox; on a project with more than one mailbox, omitting it returns an ambiguity error naming the slugs.
project_idstringyesThe project ID

No output schema declared.

No examples provided.

delete_mailbox_webhook ~74

Delete a webhook. Idempotent — succeeds even if already deleted.

NameTypeReqDescription
mailboxstringTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idstringyesThe project ID
webhook_idstringyesThe webhook ID (whk_...)

No output schema declared.

No examples provided.

delete_notification_rule ~35

Delete a Telegram routing rule. Requires operator_passkey assurance.

NameTypeReqDescription
rule_idstringyesThe routing rule id to delete.

No output schema declared.

No examples provided.

delete_passkey ~56

Delete one authenticated-user passkey by id.

NameTypeReqDescription
access_tokenstringyesAuthenticated user's access_token
passkey_idstringyesPasskey ID to delete
project_idstringyesThe project ID

No output schema declared.

No examples provided.

delete_project ~124

Immediately and irreversibly delete a project: the gateway runs the full destructive cascade (drop tenant schema, delete Lambda functions, release subdomains, tombstone mailbox, remove sender domain, wipe secrets and app versions) and sets status=purged. This tool also removes the project from the local key store. Distinct from the automatic lease-expiry grace window — this action is the explicit purge and cannot be undone. To recover from a missed renewal use `set_tier` instead.

NameTypeReqDescription
project_idstringyesThe project ID to delete (irreversible cascade purge)

No output schema declared.

No examples provided.

delete_project_branch ~44

Delete a contained branch project and purge its resources.

NameTypeReqDescription
branch_project_idstringyesBranch project ID to delete.
project_idstringyesParent project ID.

No output schema declared.

No examples provided.

Common questions

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.