{"_id":"agent-press-wire-mcp","_rev":"3-8ceec6e7944c5ff9522830dbc65706fb","name":"agent-press-wire-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"agent-press-wire-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","press-release","pr","launch","newswire","x402","usdc","base","ai-agents"],"author":{"name":"Dylan Caponi"},"license":"MIT","_id":"agent-press-wire-mcp@0.1.0","maintainers":[{"name":"dielund","email":"dylan.caponi@gmail.com"}],"homepage":"https://agent-press-wire.dylan-caponi.workers.dev","bin":{"agent-press-wire-mcp":"dist/index.js"},"dist":{"shasum":"f8d2cb1591ade5c22e4e5c7ad9458c81a418c033","tarball":"https://registry.npmjs.org/agent-press-wire-mcp/-/agent-press-wire-mcp-0.1.0.tgz","fileCount":6,"integrity":"sha512-w/3fZHkOylDQMRsSxCCvJ5KhZpEXN+hDjx3KTSsq0YYIAvSaxxuNwGYvM7V5sFlGppcPIv+dfXCvwnVtekwySQ==","signatures":[{"sig":"MEUCIA4qP2K5hIqHxFEVSd8zsM9sNgGMFxv4O7sjDmgr0Ym1AiEAkd30pIk2cdK8+ZIFIyBFSqdBvg3VUeU6hneMmhr2rvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36230},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"2fa08e3773ef75c46f0d396a803361c3a041aac5","mcpName":"io.github.dylancaponi/agent-press-wire","scripts":{"test":"npm run build && node --test test/hardening-test.mjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","test:quote":"node test/quote-test.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"dielund","email":"dylan.caponi@gmail.com"},"_npmVersion":"11.16.0","description":"MCP server for Agent Press Wire: AI agents announce launches and distribute press releases to 500+ news sites, paid per call in USDC over x402.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"4.6.5","viem":"2.57.2","@x402/evm":"2.28.0","@x402/core":"2.28.0","@x402/fetch":"2.28.0","@modelcontextprotocol/sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-press-wire-mcp_0.1.0_1791070662046_0.7246042243190074","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"agent-press-wire-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","press-release","pr","launch","newswire","x402","usdc","base","ai-agents"],"author":{"name":"Dylan Caponi"},"license":"MIT","_id":"agent-press-wire-mcp@0.1.1","maintainers":[{"name":"dielund","email":"dylan.caponi@gmail.com"}],"homepage":"https://agentpresswire.dev","bugs":{"url":"https://github.com/dylancaponi/agent-press-wire-mcp/issues"},"bin":{"agent-press-wire-mcp":"dist/index.js"},"dist":{"shasum":"6a51686f92c1aadd67dd43c8e76a48684cc3887e","tarball":"https://registry.npmjs.org/agent-press-wire-mcp/-/agent-press-wire-mcp-0.1.1.tgz","fileCount":6,"integrity":"sha512-ktxMGIaH0FJEOyWpAQuWbLXWPPtV+mfj6MawTgtRc6zw6eIVqStMgBlFmLuPYi9bB5SgKM8R36p6yLKxXKgznA==","signatures":[{"sig":"MEYCIQDJWzq10Z3W1vGx6s+LGE4OQkyyH9TeOVaPp3dW40u8aQIhANGWt2o+4XrQU6S/1+xNvQmg4oQjpUOVblx0GXIEoll2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDVFCnaIPyZD4zFJkWftZLdDX8ejpx402qKlPE+21/E3QIgfw81xasKY/E3Ivd31cZx/3XoUakUYD00mb0TECXJXAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36521},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"19beb987ee33473aeaf725662e46531126aba0fe","mcpName":"io.github.dylancaponi/agent-press-wire","scripts":{"test":"npm run build && node --test test/hardening-test.mjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","test:quote":"node test/quote-test.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"dielund","email":"dylan.caponi@gmail.com"},"repository":{"url":"git+https://github.com/dylancaponi/agent-press-wire-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Agent Press Wire: AI agents announce launches and distribute press releases to 500+ news sites, paid per call in USDC over x402.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"4.6.5","viem":"2.57.2","@x402/evm":"2.28.0","@x402/core":"2.28.0","@x402/fetch":"2.28.0","@modelcontextprotocol/sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-press-wire-mcp_0.1.1_1791074883368_0.359931137045171","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"_id":"agent-press-wire-mcp@0.1.2","bin":{"agent-press-wire-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/dylancaponi/agent-press-wire-mcp/issues"},"dist":{"shasum":"a6266e6f4ab05bc2b31301275bba84638ecea1b5","tarball":"https://registry.npmjs.org/agent-press-wire-mcp/-/agent-press-wire-mcp-0.1.2.tgz","fileCount":6,"integrity":"sha512-1Ou7x3N2/qf4T2TBmDEJE4LLfkcGI5mf6kc1IKMdYjRtKMYLAhImMFtWyAA76mQMQ//szB/+e+gSHtgT+XucjQ==","signatures":[{"sig":"MEUCIFPTizSlIAEwc4iw1mYUymbt0c0VHnntjaM/q5T4jGPVAiEA8lB5dyeujj2UL4MZTDpzsYtVRr5UBZ4QOmOSSwk0gWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH4q8kfmytVBbLwoaXu6rxJy4jlJ7lwEKqAx1XMjKtjQAiBz0ehrwDGQwKum+cFMzMPdnh2ZPkDmoKAVQGqBdy8xtQ=="}],"unpackedSize":38663},"main":"dist/index.js","name":"agent-press-wire-mcp","type":"module","author":{"name":"Dylan Caponi"},"engines":{"node":">=20"},"gitHead":"b2b2b84d5c088538c9a048f36b89fbccf86aeac1","license":"MIT","mcpName":"io.github.dylancaponi/agent-press-wire","scripts":{"test":"npm run build && node --test test/hardening-test.mjs","build":"tsc && chmod +x dist/index.js","start":"node dist/index.js","test:quote":"node test/quote-test.mjs","prepublishOnly":"npm run build"},"version":"0.1.2","_npmUser":{"name":"dielund","email":"dylan.caponi@gmail.com"},"homepage":"https://agentpresswire.dev","keywords":["mcp","model-context-protocol","press-release","pr","launch","newswire","x402","usdc","base","ai-agents"],"repository":{"url":"git+https://github.com/dylancaponi/agent-press-wire-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for Agent Press Wire: AI agents announce launches and distribute press releases to 500+ news sites, paid per call in USDC over x402.","directories":{},"maintainers":[{"name":"dielund","email":"dylan.caponi@gmail.com"}],"_nodeVersion":"25.6.1","dependencies":{"zod":"4.6.5","viem":"2.57.2","@x402/evm":"2.28.0","@x402/core":"2.28.0","@x402/fetch":"2.28.0","@modelcontextprotocol/sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.6.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-press-wire-mcp_0.1.2_1791686099713_0.9622294678550614"}}},"time":{"created":"2026-10-03T23:37:41.864Z","modified":"2026-10-11T02:35:00.006Z","0.1.0":"2026-10-03T23:37:42.219Z","0.1.1":"2026-10-04T00:48:03.457Z","0.1.2":"2026-10-11T02:34:59.789Z"},"bugs":{"url":"https://github.com/dylancaponi/agent-press-wire-mcp/issues"},"author":{"name":"Dylan Caponi"},"license":"MIT","homepage":"https://agentpresswire.dev","keywords":["mcp","model-context-protocol","press-release","pr","launch","newswire","x402","usdc","base","ai-agents"],"repository":{"url":"git+https://github.com/dylancaponi/agent-press-wire-mcp.git","type":"git"},"description":"MCP server for Agent Press Wire: AI agents announce launches and distribute press releases to 500+ news sites, paid per call in USDC over x402.","maintainers":[{"name":"dielund","email":"dylan.caponi@gmail.com"}],"readme":"# Agent Press Wire MCP server\n\nAn MCP server that lets AI agents (Claude Desktop, Claude Code, Cursor, any MCP client) announce product launches and distribute press releases through [Agent Press Wire](https://agentpresswire.dev). Each call is paid in USDC on Base over [x402](https://x402.org), from **your own wallet**. No account, no API key.\n\n## Tools\n\n| Tool | Price | What it does |\n| --- | --- | --- |\n| `announce_launch_newsroom` | $1 USDC | Drafts a 350-450 word AP-style press release from your product URL and publishes it on a public, search-indexed newsroom page. About 20 seconds. |\n| `distribute_press_release` | `tier: \"wire\"` $99 USDC, `tier: \"premium\"` $299 USDC | Drafts a 450-600 word release and distributes it over a newswire to 500+ news sites plus 100+ TV and radio network sites. Premium adds AP News, USA Today, Barchart and StreetInsider. Requires `city`, `country`, `contact_email`. Returns an `order_id`. |\n| `get_release_status` | Free | Status and live coverage links for a wire order. |\n\nThe service only charges when the job succeeds. Failed drafts, rejected topics and wire rejections are not charged.\n\n## Bring your own copy\n\nBoth paid tools accept optional `headline` and `body`. When both are given, Agent Press Wire skips drafting and publishes or distributes the text as written (only a media contact line may be appended). Requirements: plain English text, paragraphs separated by blank lines, body 150 to 900 words (380 to 900 for the wire tiers), a 3 to 20 word headline naming the announcing company, at most 5 links and only to the product's own site. The copy goes through the same safety checks as a drafted release (prohibited topics, market-moving claims on wire tiers, brand must match the page, link policy, model safety review); failures come back uncharged with the reasons.\n\n## Safety: quote mode by default\n\nPaid tools **charge real USDC**. Settings that control spending:\n\n- `X402_PRIVATE_KEY`: private key of your own Base wallet holding USDC. Without it the server only quotes.\n- `MAX_SPEND_USD`: the most the server may pay for a single call. Default `0`, which means quote only: every paid tool returns the x402 price terms and never pays.\n- `MAX_TOTAL_SPEND_USD`: lifetime cap across all calls and restarts. Defaults to `MAX_SPEND_USD`, so out of the box you get at most one paid call until you raise it. Spend is tracked in a ledger at `~/.agent-press-wire/spend.json` (override the directory with `AGENT_PRESS_WIRE_HOME`). Every signed payment authorization is counted, whatever the HTTP outcome, because the server could still settle it until it expires. If a call failed and your wallet shows no transfer for its nonce after `valid_before`, you can delete that entry from the ledger.\n\nPaying takes two calls. The first call (without `confirm_token`, or with `quote_only: true`) returns the price and a `confirm_token`. The agent shows the user the exact price, and after the user approves it calls again with the **same parameters** and that `confirm_token`. Tokens are single use, expire after 10 minutes, and are bound to the endpoint, a hash of the request parameters and the price.\n\nA payment only happens when all of these hold:\n\n- the key is set, the price is at or below `MAX_SPEND_USD`, and the lifetime total stays at or below `MAX_TOTAL_SPEND_USD`;\n- a valid `confirm_token` was passed and `quote_only` is not true;\n- the server's x402 terms match values pinned in this package: pay to `0xF7887C1fAf0DbAedc80C78F9D396D594B69eba95`, exactly $1 for `/v1/press-release`, $99 for `/v1/wire-release`, $299 for `/v1/wire-release/premium`, USDC on Base mainnet, scheme `exact` with an EIP-3009 transfer authorization, and `maxTimeoutSeconds` of 600 or less. Any mismatch is refused, so a compromised server or a wrong `PRESS_API_URL` cannot redirect funds or raise the price.\n\nThe per-call cap is enforced twice: by this server before signing, and by the x402 client's own spend controls.\n\nIf a paid call fails after the authorization was signed, the result says the payment was **not settled per the server** and includes the authorization `nonce`, `valid_before` and payer address. Check your wallet before retrying.\n\nExamples: `MAX_SPEND_USD=1 MAX_TOTAL_SPEND_USD=5` allows up to five $1 newsroom releases and only quotes the wire tiers. `MAX_SPEND_USD=99 MAX_TOTAL_SPEND_USD=99` allows one standard wire release. Use a dedicated wallet funded with only what you intend to spend.\n\n## Install\n\nRequires Node 20+.\n\n### Claude Code\n\n```bash\nclaude mcp add agent-press-wire \\\n  -e X402_PRIVATE_KEY=0xYOUR_KEY -e MAX_SPEND_USD=1 -e MAX_TOTAL_SPEND_USD=5 \\\n  -- npx -y agent-press-wire-mcp\n```\n\nQuote only (no wallet): `claude mcp add agent-press-wire -- npx -y agent-press-wire-mcp`\n\n### Claude Desktop\n\nEdit `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`, Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"agent-press-wire\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"agent-press-wire-mcp\"],\n      \"env\": {\n        \"X402_PRIVATE_KEY\": \"0xYOUR_KEY\",\n        \"MAX_SPEND_USD\": \"1\",\n        \"MAX_TOTAL_SPEND_USD\": \"5\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project):\n\n```json\n{\n  \"mcpServers\": {\n    \"agent-press-wire\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"agent-press-wire-mcp\"],\n      \"env\": {\n        \"X402_PRIVATE_KEY\": \"0xYOUR_KEY\",\n        \"MAX_SPEND_USD\": \"1\",\n        \"MAX_TOTAL_SPEND_USD\": \"5\"\n      }\n    }\n  }\n}\n```\n\nOther clients: run `npx -y agent-press-wire-mcp` as a stdio server with the same environment variables.\n\n## Example prompts\n\n- \"Announce my launch: https://example.com, we just shipped v2 with offline mode.\"\n- \"Write and distribute a press release for https://example.com. We're in Austin, United States, press@example.com.\"\n- \"How much would it cost to get press coverage for my product?\" (the agent calls with `quote_only: true`)\n- After the user approves a quoted price, the agent repeats the call with the returned `confirm_token`.\n- \"Check the status of press release w_3f9d0a1b2c.\"\n\n## Quote response\n\n```json\n{\n  \"mode\": \"quote\",\n  \"paid\": false,\n  \"reason\": \"no confirm_token: this was a quote\",\n  \"quote\": { \"price_usd\": 99, \"asset\": \"USDC\", \"network\": \"Base mainnet (eip155:8453)\", \"pay_to\": \"0xF7887C1fAf0DbAedc80C78F9D396D594B69eba95\" },\n  \"spend\": { \"spent_total_usd\": 0, \"max_total_spend_usd\": 99, \"max_spend_usd\": 99 },\n  \"confirm_token\": \"ct1.1791069332201.6cba...d563\",\n  \"confirm_token_expires_in_seconds\": 600\n}\n```\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test             # offline guard-rail tests against a localhost mock x402 server; never pays\nnpm run test:quote   # quote-mode smoke test against production; never pays\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\n`PRESS_API_URL` overrides the API base URL for testing.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}