run402-mcpBLOCK
Full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. TypeScript SDK, CLI and MCP server. Paid with x402/MPP. Open source.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
run402: full-stack backend infrastructure for AI agents
Postgres, auth, storage, serverless functions and staged deploys — provisioned, operated and paid for by an agent through the CLI, with a typed SDK for scripting and MCP for tool-native hosts. No cloud console, no signup. Open source.
[](https://github.com/kychee-com/run402/actions/workflows/test.yml) [](https://github.com/kychee-com/run402/actions/workflows/codeql.yml) [](https://www.npmjs.com/package/@run402/sdk) [](https://www.npmjs.com/package/run402) [](https://www.npmjs.com/package/run402-mcp) [](https://www.npmjs.com/package/@run402/functions) [](./LICENSE)
Run402 is open-source backend infrastructure for AI agents and coding agents — a backend-as-a-service addressed to a machine rather than to a person. An autonomous agent provisions a Postgres database, user auth, file storage, serverless functions and site hosting, ships them through one staged deploy workflow, and pays for the usage itself. Comparable in surface to Supabase, Firebase or Vercel; different in that there is no dashboard you have to sign into to get started (the console exists for people; the agent never needs it) and no human-issued API key to copy.
This is the backend Kychee's open products run on. We needed a layer an agent can drive e
b92e9c997669OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add sdk --env ACTIONS_ID_TOKEN_REQUEST_TOKEN=${ACTIONS_ID_TOKEN_REQUEST_TOKEN} --env ACTIONS_ID_TOKEN_REQUEST_URL=${ACTIONS_ID_TOKEN_REQUEST_URL} --env ANON_KEY=${ANON_KEY} --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} -- npx -y @run402/[email protected]{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@run402/[email protected]"
],
"env": {
"ACTIONS_ID_TOKEN_REQUEST_TOKEN": "${ACTIONS_ID_TOKEN_REQUEST_TOKEN}",
"ACTIONS_ID_TOKEN_REQUEST_URL": "${ACTIONS_ID_TOKEN_REQUEST_URL}",
"ANON_KEY": "${ANON_KEY}",
"AWS_ACCESS_KEY_ID": "${AWS_ACCESS_KEY_ID}"
}
}
}
}Exposed tools (10)
8 read · 2 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
demo-app | read | A demo |
deploy | write | |
docs | read | |
doctor | read | |
expand_result | read | |
name | read | |
run | write | |
status | read | |
up | read | |
whoami | read |
Trust audit
BLOCKgrade F · trust 25/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (4 observation(s))
- Network
- declared (11 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
`run402 messages wait [--addressed-to me] [--timeout <s>]` is the blocking alternative to polling `messages list` in a loop — it uses the gateway's held read when available and degrades to bounded pol
fn eval(&self, schema: &S, base: &str, inst: &Value) -> Result<bool, String> {s3:// destination (read from ~/.aws/credentials at USE
".netrc",
"id_ecdsa",
"id_ed25519",
~/.aws ... fetch(
source.heic
"Revocation does not undo already-deployed code, stop in-flight deploy operations, rotate exfiltrated keys, or remove deployed functions.",
"Revocation does not undo already-deployed code, stop in-flight deploy operations, rotate exfiltrated keys, or remove deployed functions.",
"callback_url": "https://hooks.example.com/jobs"
callback_url (optional) is an HTTPS URL pushed once on terminal state
const requestUrl = new URL(request.url, "http://127.0.0.1");
skill.url = `http://127.0.0.1:${port}${artifactPath}`;const baseUrl = `http://127.0.0.1:${server.address().port}`;"signature_preimage_hex": "72343032732f76302f686561640a7b22636170747572655f62696e64696e67223a6e756c6c2c22636865636b706f696e74223a6e756c6c2c22636865636b706f696e745f707572706f7365223a6e756c6c2c226372656
"preimage_hex": "72343032732f76302f7661756c745f67656e657369730a7b22636170747572655f62696e64696e67223a6e756c6c2c22636865636b706f696e74223a6e756c6c2c22636865636b706f696e745f707572706f7365223a6e756c6c2c2
const TOKEN = "grant-key.test.token.value";
token: "rt_aaaaaaaaaaaaaaaaaaaaaaaa",
const SESSION = { token: "cp_session_token_secret" };const PROOFS = { siwx: "siwx-proof", token: "cp_session_token_secret" };"projects.list": [{ all: true, token: "cp_session_token_secret" }],const note = baseNote({ tried: ["-----BEGIN RSA PRIVATE KEY-----\nMIIB...\n-----END RSA PRIVATE KEY-----"] });Notification routing is an OPTIONAL delivery state on top of an active community installation — report it beneath community installation, never as an identity or authority relationship, and never infe
.node-version
Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.
b92e9c997669full audit observations/trust-audit/mcp-server/kychee-com__run402.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | b92e9c997669 | BLOCK | F | 25 | first audit |
Questions
What is the run402-mcp MCP server?
Full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. TypeScript SDK, CLI and MCP server. Paid with x402/MPP. Open source.
What tools does run402-mcp expose?
10 in total: 8 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is run402-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (25/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does run402-mcp need?
It reads ACTIONS_ID_TOKEN_REQUEST_TOKEN, ACTIONS_ID_TOKEN_REQUEST_URL, ANON_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, BUYER_PRIVATE_KEY, BUZZ_AUTH_TAG, BUZZ_BOT_PRIVATE_KEY, FULLSTACK_TEST_SECRET, GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does run402-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @run402/sdk at 4.117.0.
How current is this page?
The grade is for one exact copy of the source (b92e9c997669), read on 2026-10-12. The repository is watched and re-audited when it changes.