Announce launches and distribute press releases to 500+ news sites. Pay per call in USDC (x402).
An 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. Each call is paid in USDC on Base over x402, from your own wallet. No account, no API key.
| Tool | Price | What it does |
|---|---|---|
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. |
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. |
get_release_status | Free | Status and live coverage links for a wire order. |
The service only charges when the job succeeds. Failed drafts, rejected topics and wire rejections are not charged.
Paid tools charge real USDC. Settings that control spending:
X402_PRIVATE_KEY: private key of your own Base wallet holding USDC. Without it the server only quotes.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.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.Paying 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.
A payment only happens when all of these hold:
MAX_SPEND_USD, and the lifetime total stays at or below MAX_TOTAL_SPEND_USD;confirm_token was passed and quote_only is not true;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.The per-call cap is enforced twice: by this server before signing, and by the x402 client's own spend controls.
If 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.
Examples: 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.
Requires Node 20+.
claude mcp add agent-press-wire \
-e X402_PRIVATE_KEY=0xYOUR_KEY -e MAX_SPEND_USD=1 -e MAX_TOTAL_SPEND_USD=5 \
-- npx -y agent-press-wire-mcp
Quote only (no wallet): claude mcp add agent-press-wire -- npx -y agent-press-wire-mcp
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"agent-press-wire": {
"command": "npx",
"args": ["-y", "agent-press-wire-mcp"],
"env": {
"X402_PRIVATE_KEY": "0xYOUR_KEY",
"MAX_SPEND_USD": "1",
"MAX_TOTAL_SPEND_USD": "5"
}
}
}
}
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"agent-press-wire": {
"command": "npx",
"args": ["-y", "agent-press-wire-mcp"],
"env": {
"X402_PRIVATE_KEY": "0xYOUR_KEY",
"MAX_SPEND_USD": "1",
"MAX_TOTAL_SPEND_USD": "5"
}
}
}
}
Other clients: run npx -y agent-press-wire-mcp as a stdio server with the same environment variables.
quote_only: true)confirm_token.{
"mode": "quote",
"paid": false,
"reason": "no confirm_token: this was a quote",
"quote": { "price_usd": 99, "asset": "USDC", "network": "Base mainnet (eip155:8453)", "pay_to": "0xF7887C1fAf0DbAedc80C78F9D396D594B69eba95" },
"spend": { "spent_total_usd": 0, "max_total_spend_usd": 99, "max_spend_usd": 99 },
"confirm_token": "ct1.1791069332201.6cba...d563",
"confirm_token_expires_in_seconds": 600
}
npm install
npm run build
npm test # offline guard-rail tests against a localhost mock x402 server; never pays
npm run test:quote # quote-mode smoke test against production; never pays
npx @modelcontextprotocol/inspector node dist/index.js
PRESS_API_URL overrides the API base URL for testing.
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y agent-press-wire-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-dylancaponi-agent-press-wire": {
"command": "npx",
"args": [
"-y",
"agent-press-wire-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceagent-press-wire-mcpnpmAgent Press Wire works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.