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 →
get_quote ~36
Get tier pricing for Run402 projects. Free, no auth required. Shows prices, lease durations, storage limits, and API call limits.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_schema ~55
Introspect the database schema — tables, columns, types, constraints, and RLS policies. Useful for understanding the database structure before writing queries.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | – | The project ID (defaults to the active project) |
No output schema declared.
No examples provided.
get_signer ~61
Get a KMS signer's metadata + live native-token balance + USD-micros (Chainlink-cached price).
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| signer_id | string | yes | The KMS signer ID (cwlt_...) |
No output schema declared.
No examples provided.
get_usage ~36
Get project usage report — API calls, storage usage, limits, and lease expiry.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
import_project_archive ~177
Import a verified portable archive into a new local Run402 Core project through the Core gateway. Automatically verifies before import, supports dry_run and require_runnable, and reports SECRET_VALUES_REQUIRED with next actions.
| Name | Type | Req | Description |
|---|---|---|---|
| archive_path | string | yes | Local archive directory or .r402ar tar path. |
| core_url | string | – | Core gateway URL. Default RUN402_CORE_URL or http://127.0.0.1:4020. |
| dry_run | boolean | – | Verify and plan without creating a project. |
| env_file | string | – | Env file containing required secret values. |
| name | string | – | New Core project name. Default imported-project. |
| require_runnable | boolean | – | Block import unless required secret values are supplied. |
| secret_values | object | – | Explicit secret values. Overrides env_file entries for duplicate names. |
No output schema declared.
No examples provided.
init ~60
Set up agent allowance, request faucet funding, and check tier status — single-call bootstrap. Idempotent, safe to re-run.
| Name | Type | Req | Description |
|---|---|---|---|
| rail | string | – | Payment rail: x402 (Base Sepolia, default) or mpp (Tempo Moderato) |
No output schema declared.
No examples provided.
initiate_project_transfer ~520
Initiate a project transfer (owned-org recipient shape v1.96+). Addressed to a WALLET (`to_wallet`, completed by `accept_project_transfer`), an EMAIL (`to_email`, completed by `claim_project_transfer`), OR an owned ORG (`to_org_id`, same-actor move that completes immediately in the first gateway release) — provide exactly one. You must currently own/admin the project; for `to_org_id` you must be an active owner of both the source and destination orgs. Wallet/email transfers create a `pending` row with 72h expiry and freeze owner-side mutations until completed, cancelled, or expired. The recipient gets the project under the `migrate` billing policy. Owner's tier lease is NOT refunded. GitHub repo ownership is NOT transferred. Calls POST /projects/v1/:project_id/transfers.
| Name | Type | Req | Description |
|---|---|---|---|
| billing_policy | string | – | Wallet rail only. Phase 1A supports only `migrate` (default). The project moves into the recipient's organization. |
| kysigned_record_id | string | – | Wallet rail only. Optional KySigned record id. Phase 1A stores this verbatim (no verification). |
| message | string | – | Optional free-text note shown to the recipient in the preview and notification emails. |
| project_id | string | yes | Project id to transfer. You must currently own or admin it (the gateway verifies against fresh DB state). |
| retain_collaborator_role | string | – | Email rail only (v1.91): keep a `developer` membership in the recipient's org after the transfer completes. The recipient must accept it at claim time (`accept_retained_collaborator`). Omit for a ful… |
| to_email | string | – | Recipient EMAIL. Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. An email recipient completes the transfer via `claim_project_transfer` (they claim it into an org they own). |
| to_org_id | string | – | Destination ORG id. Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. First gateway release is same-actor only: caller must be an active owner of the source org and destination org. Com… |
| to_wallet | string | – | Recipient WALLET address (any case — the gateway lowercases). Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. A wallet recipient completes the transfer via `accept_project_transfer`. |
No output schema declared.
No examples provided.
inspect_project_archive ~69
Inspect a local run402-project-archive.v1 directory or .r402ar tar offline. Reports digest, required secrets, auth stubs, export report, portability report, and compatibility diagnostics without Cloud credentials.
| Name | Type | Req | Description |
|---|---|---|---|
| archive_path | string | yes | Local archive directory or .r402ar tar path. |
No output schema declared.
No examples provided.
invite_auth_user ~103
Create/update a project auth user and send a trusted invite magic link. Requires service_key and an allowed redirect_url.
| Name | Type | Req | Description |
|---|---|---|---|
| client_state | – | – | Optional opaque state preserved through invite verification |
| string | yes | Email address of the auth user to invite | |
| is_admin | boolean | – | Set project_admin status before sending the invite |
| project_id | string | yes | The project ID |
| redirect_url | string | yes | Allowed auth redirect URL for the invite link |
No output schema declared.
No examples provided.
invoke_function ~222
Invoke a deployed function via HTTP. Free functions behave like the direct test path; paid functions require idempotency_key and may spend allowance, returning a result or pollable run_id. Stable errors preserve code and set isError=true.
| Name | Type | Req | Description |
|---|---|---|---|
| body | – | – | Request body (string or JSON object) |
| headers | object | – | Additional headers to send |
| idempotency_key | string | – | Stable Idempotency-Key required by paid function invocations. Reuse it for the same paid intent; use a new key only for a new paid intent. |
| method | string | – | HTTP method (default: POST) |
| name | string | yes | Function name to invoke |
| poll_interval_ms | integer | – | Polling interval in milliseconds when wait is true. |
| project_id | string | yes | The project ID |
| timeout_ms | integer | – | Maximum wait time in milliseconds when wait is true. |
| wait | boolean | – | When a paid invocation returns a 202 run handle, poll the run and replay the same idempotency key for the retained result. |
No output schema declared.
No examples provided.
jobs_cancel ~39
Cancel a queued or running managed job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Managed job run ID |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
jobs_download_artifact ~126
Download a completed managed job's artifact by filename to a local file. Discover the recorded filenames from the artifacts map returned by jobs_get; the legacy run402:// refs were retired in favor of these gateway URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | Artifact filename to download. Discover the recorded set from the artifacts map returned by jobs_get. |
| job_id | string | yes | Managed job run ID (must be completed) |
| output_path | string | yes | Local filesystem path to write the artifact bytes to. Parent directories will be created. |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
jobs_get ~39
Get a managed job run by id.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Managed job run ID |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
jobs_logs ~101
Read recent runner logs for a managed job. Use tail to cap entries and since for an ISO-8601 lower bound; legacy epoch milliseconds are still accepted.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Managed job run ID |
| project_id | string | yes | The project ID |
| since | – | – | Only include logs at or after this ISO-8601 timestamp. Legacy epoch milliseconds are also accepted. |
| tail | integer | – | Maximum number of log entries to return |
No output schema declared.
No examples provided.
jobs_purge ~36
Purge all managed job runs for a project, terminating known active runners first.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
jobs_submit ~75
Submit a platform-managed job. The request must match the gateway jobs API shape: job_type, input with input.json, and max_cost_usd_micros. The SDK supplies the required idempotency header.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
| request | object | yes | Gateway-shaped managed job submit request |
No output schema declared.
No examples provided.
link_wallet_to_organization ~70
Link a wallet to an existing email organization, enabling hybrid Stripe + x402 access. Fails if the wallet is already linked elsewhere.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | The organization ID (from create_email_organization) |
| wallet | string | yes | The wallet address to link (0x...) |
No output schema declared.
No examples provided.
list_emails ~138
List sent emails from the project's mailbox. Shows message ID, template, recipient, status, and timestamp.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Pagination cursor (message id from prior page) |
| direction | string | – | Filter to received (inbound) or sent (outbound) messages. Omit for both. 'inbound' is the reconciliation backstop for a missed reply_received webhook. |
| limit | integer | – | Max messages to return (server caps at 200) |
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox. |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_function_runs ~147
List durable runs for a function, filterable by status, event_type, time window, limit, and cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor returned by a prior list call. |
| event_type | string | – | Filter by event type |
| limit | integer | – | Maximum runs to return (max 100). |
| name | string | yes | Function name |
| project_id | string | yes | The project ID |
| since | string | – | Only include runs created/updated at or after this ISO timestamp or epoch ms. |
| status | string | – | Filter by run status |
| until | string | – | Only include runs created/updated before this ISO timestamp or epoch ms. |
No output schema declared.
No examples provided.
list_functions ~100
List all deployed functions for a project. Shows names, URLs, Node runtime, timeout, memory, resolved direct deps, and injected `@run402/functions` compatibility metadata: deployed `runtime_version`, gateway `runtime_current_version`, guaranteed `runtime_minimum_version`, and `runtime_stale`. Rebuild stale functions with `functions_rebuild`; an unchanged-source redeploy does not refresh the injected runtime.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_incoming_transfers ~86
List pending project transfers OFFERED TO the authenticated wallet (v1.59+). Each entry carries `preview_path` for deep-linking into the preview tool. Calls GET /agent/v1/transfers/incoming.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Opaque pagination cursor (next_cursor from a prior page). |
| limit | integer | – | Page size (default 50). |
No output schema declared.
No examples provided.
list_mailbox_webhook_deliveries ~172
List durable webhook delivery rows for the project's mailbox. Webhook delivery is at-least-once with bounded retries + backoff; failures land in 'failed_permanent' (the dead-letter queue). Filter by status to inspect what was lost. Consumers must dedupe on the envelope idempotency_key.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Pagination cursor (delivery id from a prior page) |
| limit | integer | – | Max rows to return (server caps at 200) |
| mailbox | string | – | Target mailbox by slug or id; omit only when the project has exactly one mailbox. |
| project_id | string | yes | The project ID |
| status | string | – | Filter by delivery status. 'failed_permanent' is the dead-letter queue (events that exhausted retries or failed permanently). |
No output schema declared.
No examples provided.
list_mailbox_webhooks ~55
List all webhooks registered on the project's mailbox.
| 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 |
No output schema declared.
No examples provided.
list_mailboxes ~86
List a project's mailboxes, including address/managed_address, default-role metadata (`is_default_outbound`, `is_auth_sender`), readiness (`can_send`, `can_receive`, `send_blocked_reason`, `domain_kind`), footer-policy fields, mailbox_settings, and next_actions. Use before choosing or repairing email defaults.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_notification_channels ~64
List every notification channel for the operator: email, webhook, and every live (non-revoked) Telegram binding with its id, status (pending/active/revoked), chat metadata, and label. Use this to find a telegram_binding_id for create_notification_rule.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_notification_rules ~51
List the operator's Telegram routing rules. Each rule ANDs its match dimensions (project_id, source, event_types, classes); an omitted dimension is a wildcard. One rule always targets exactly one Telegram binding.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_notifications ~107
List the operator's notification audit log (delivered, failed, and skipped attempts). Paginated; filter by event type or since timestamp.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Opaque pagination cursor (next_cursor from a prior page). |
| limit | integer | – | Page size (default 50, max 200) |
| since | string | – | ISO timestamp; only notifications at or after this time |
| type | string | – | Filter by event_type (e.g. project_past_due) |
No output schema declared.
No examples provided.
list_org_members ~44
List the members of an org and their roles. Params: `org_id`.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | The org id, e.g. `org_...`. |
No output schema declared.
No examples provided.
list_orgs ~35
List the orgs you are a member of, with each org's id, display name, your role, and membership status.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_outgoing_transfers ~87
List pending project transfers INITIATED BY the authenticated wallet (v1.59+). Each entry carries `preview_path` for deep-linking into the preview tool. Calls GET /agent/v1/transfers/outgoing.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Opaque pagination cursor (next_cursor from a prior page). |
| limit | integer | – | Page size (default 50). |
No output schema declared.
No examples provided.
list_passkeys ~41
List the authenticated user's active passkeys.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | string | yes | Authenticated user's access_token |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_project_branches ~31
List active contained branch projects for a parent project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Parent project ID. |
No output schema declared.
No examples provided.
list_project_events ~432
Catch up on what happened to a project since you last looked: the durable, cursored feed of deploy activations, mailbox suspensions, transfers, lifecycle cliffs, and verification outcomes, each with platform-suggested next_actions. The feed also carries app-emitted business facts (a deployed function's own events.emit calls) alongside the platform's own events — pass source:"app" to read just the app's facts, source:"platform" for just the platform's operational record, or event_type (comma-separated) to filter to one-or-more specific types; key on (source, event_type) together since app-chosen type names are free-form. Reach for this after any deploy (the apply/promote response hands you a positioned cursor) and at the start of a session on an existing project. Store the returned cursor and pass it back next time; an expired cursor returns reset:true + earliest_cursor instead of an error. Read-only; works even on frozen projects.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a prior page (the response's `cursor`, or any event's `id`). Returns events strictly after it. Omit on first contact to start from the earliest retained event. Never parse cursors. |
| event_type | string | – | Restrict to one or more event types, comma-separated (e.g. "signature_completed,booking_created"). Composes with source — e.g. source: "app" + event_type to watch for one specific business fact. |
| limit | integer | – | Page size (default 50, max 200). |
| org_id | string | – | Read the org-wide feed instead (union across the org's projects; requires an active org membership). |
| project_id | string | – | Project whose feed to read. Omit when passing org_id. |
| source | string | – | Restrict to one source: "app" (business facts a deployed function emitted itself via events.emit) or "platform" (every non-app source — the platform's own operational record). Omit to read both lanes… |
No output schema declared.
No examples provided.
list_project_snapshots ~77
List project data snapshots with optional kind filter and keyset pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Keyset pagination cursor from a previous response. |
| kind | string | – | Optional snapshot kind filter. |
| limit | integer | – | Page size, max 100. |
| project_id | string | yes | Project ID whose snapshots should be listed. |
No output schema declared.
No examples provided.
list_projects ~253
List projects from the named, domain-aware inventory (GET /projects/v1). Membership-scoped by default: every project owned by an org the agent's wallet is an active member of, with name, site_url, custom_domains, org (org_id), and status. SIWX wallet auth is signed automatically. Pass org_id to filter to one org (authorize-before-reveal: non-member/guessed → 403, non-UUID → 400), all:true to read the cross-wallet inventory across every wallet controlling your operator email, or limit/cursor to paginate.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | Read the cross-wallet inventory across every wallet controlling your operator email instead of just this wallet's membership-scoped slice. Mutually exclusive with org_id. |
| cursor | string | – | Pagination cursor from a previous response's next_cursor. |
| limit | integer | – | Page size for the membership-scoped read (server default 50, max 200). |
| org_id | string | – | Optional org (organization) id to filter to. Authorize-before-reveal: a non-member or guessed id returns the same 403 as a real-but-unauthorized org; a non-UUID id is a 400. |
No output schema declared.
No examples provided.
list_secrets ~46
List secret keys for a project. Values and value-derived hashes are never shown; use this only to check which keys are configured.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_signers ~35
List all KMS signers owned by the project, including deleted ones.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_subdomains ~29
List all subdomains claimed by a project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
list_tenant_payments ~142
List redacted tenant x402 payment records for priced function web routes on a project (GET /projects/v1/:project_id/tenant-payments). Requires project.tenant_payments.read: org developer+ or read-scoped project grant/delegate. Raw X-PAYMENT headers, authorization hashes, and internal metadata are never returned.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | Opaque keyset cursor from a previous next_cursor. |
| limit | integer | – | Page size. Server default 50, max 200. |
| project_id | string | yes | Project id, e.g. `prj_...`. |
| status | string | – | Optional status filter. |
No output schema declared.
No examples provided.
list_versions ~26
List published versions of a project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
passkey_login_options ~68
Create WebAuthn passkey login options for a project app origin.
| Name | Type | Req | Description |
|---|---|---|---|
| app_origin | string | yes | Exact app origin for the WebAuthn ceremony |
| string | – | Optional email hint. Does not expose allowCredentials. | |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
passkey_login_verify ~67
Verify a browser WebAuthn assertion and return a normal Run402 auth session.
| Name | Type | Req | Description |
|---|---|---|---|
| challenge_id | string | yes | challenge_id returned by passkey_login_options |
| project_id | string | yes | The project ID |
| response | – | – | PublicKeyCredential assertion response JSON from the browser |
No output schema declared.
No examples provided.
passkey_register_options ~64
Create WebAuthn passkey registration options for the authenticated user.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | string | yes | Authenticated user's access_token |
| app_origin | string | yes | Exact app origin for the WebAuthn ceremony |
| project_id | string | yes | The project ID |
No output schema declared.
No examples provided.
passkey_register_verify ~90
Verify a browser WebAuthn registration response and store the user's passkey.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | string | yes | Authenticated user's access_token |
| challenge_id | string | yes | challenge_id returned by passkey_register_options |
| label | string | – | Optional passkey label |
| project_id | string | yes | The project ID |
| response | – | – | PublicKeyCredential registration response JSON from the browser |
No output schema declared.
No examples provided.
pay_url ~187
Call an arbitrary HTTP(S) URL and automatically satisfy a supported x402 exact-payment challenge. Defaults to a $0.10 ceiling, uses the configured allowance wallet, forwards Idempotency-Key, and returns the HTTP response plus a structured payment receipt.
| Name | Type | Req | Description |
|---|---|---|---|
| body | – | – | Request body as text or a JSON object |
| idempotency_key | string | – | Stable Idempotency-Key forwarded to the seller; on Run402 pending, retry the identical call with the same payer and key |
| max_usd_micros | integer | – | Maximum payment in USD micros (default: 100000, or $0.10) |
| method | string | – | HTTP method (default: GET) |
| require_receipt | boolean | – | Require a verified wallet-rooted merchant offer before payment and a matching receipt after settlement |
| url | string | yes | The HTTP(S) URL to call |
No output schema declared.
No examples provided.
preview_project_transfer ~150
Fetch the preview document for a project transfer of any pending kind (v1.93+). Returns the safe review payload: project name, custom domains, subdomains, function names, secret NAMES (values are never returned), CI bindings that will be revoked at completion, mailbox summary, billing implications, and — on email transfers — the retain_collaborator offer. Caller must be a party to the transfer. Calls GET /agent/v1/transfers/:transfer_id.
| Name | Type | Req | Description |
|---|---|---|---|
| transfer_id | string | yes | Transfer id to preview. You must be a party to it (wallet signer, the addressed-email principal, or an offering-org member). Kind-agnostic — works for wallet and email transfers. |
No output schema declared.
No examples provided.
project_get ~78
Authoritative server read of a project — name, owning org, tier, effective status, active deploy, mailbox addresses, and usage vs. tier limits. Live API call; returns no keys (use project_key_cache_status/export for local cached keys).
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID to read (authoritative server view; no keys) |
No output schema declared.
No examples provided.
project_key_cache_export ~72
Export local cached anon/service keys for one project. Requires reveal:true and emits secret material; use only when a credential-required operation needs keys.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID to export from the local project-key credential cache |
| reveal | boolean | yes | Must be true to emit secret key material |
No output schema declared.
No examples provided.
project_key_cache_status ~55
Read redacted local project-key cache status for one project. Local cache only; not authoritative project inventory and never returns full keys.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID to inspect in the local project-key credential cache |
No output schema declared.
No examples provided.
project_use ~41
Server-validate a project and store its id as the active project pointer for this local profile.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project ID to set as active |
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.