fortytwo-mcp
# Fortytwo MCP
Calls Fortytwo Prime — a collective inference system where multiple independent AI agents collaborate on every question. Paid per-token via x402 escrow using USDC on Base or Monad.
## Prerequisites
The script signs on-chain payments using `evm_private_key` environment variable. Never ask the user to paste the key into chat — it must be set via shell:
```bash
export evm_private_key="0x..."
```
For full wallet setup and network details, see [setup.md](references/setup.md).
## Getting Started
Before the first query, or if the script fails with a setup error:
1. Explain that Prime is available and pricing is pay-per-token
2. Run preflight: `python scripts/preflight.py`
3. If preflight fails, guide user through [setup.md](references/setup.md)
4. Note which networks preflight reports as READY — pass the correct `--network` to the query script
## Instructions
### Querying Fortytwo Prime
Run the full MCP flow via script:
Run from the skill directory:
```bash
cd /path/to/skills/fortytwo-mcp
python scripts/fortytwo_query.py "your question here" --network base
```
- Answer goes to stdout, diagnostics to stderr
- Session is saved automatically to `/tmp/.fortytwo_session`
### Follow-up queries (session reuse, no new payment)
```bash
python scripts/fortytwo_query.py "follow-up question"
```
Session is auto-detected from the saved file — no need to pass `--session-id`. Sessions live up to 90 minutes (15 min idle timeout). If the session expired, the script automatically falls through to a new payment.
Use `--no-session` to force a new payment. Use `--session-id <uuid>` to override manually.
### Streaming (optional)
The bundled script does not support streaming. For incremental output on long queries, use curl with SSE directly — see [streaming.md](references/streaming.md) for the request format and parsing algorithm.
### Key details
- **Errors are not charged.** Failed requests cancel the budget reservation automatically.
- **Sessions are billing-only.** Prime does not remember previous questions — include context in each query.
- **Retries are built in.** The script retries up to 3 times on transient 400/502 with fresh signatures.
- **Timeout is 600s (10 minutes).** On-chain settlement + multi-agent inference takes time. Run the script with a sufficient timeout — do not kill it early or set shorter limits.
## How to Present the Answer
1. **Show the full answer** — do not summarize unless the user explicitly asks for a summary. The user is paying.
2. **Attribute it** — "Here's what Fortytwo Prime returned:"
3. **Add commentary if useful** — your perspective after the full answer.
4. **Offer follow-up** — "Want me to ask a follow-up?" (reuses session while budget remains).
## Troubleshooting
| Error | Cause | Fix |
|-------|-------|-----|
| `evm_private_key not set` | Env var missing | `export evm_private_key="0x..."` |
| `missing dependency` | Python packages | `pip install eth-account web3` |
| `low USDC balance` | Wallet empty | Transfer USDC on Base or Monad |
| Transient 400/502 | On-chain timing | Script auto-retries; if persistent, surface to user |
| 402 on session call | Budget exhausted | New payment needed (script handles this) |
| 409/410 | Session closed | Script falls through to new payment |
| Invalid signature | Wrong EIP-712 domain | See [payment.md](references/payment.md) — query `name()`/`version()` on-chain |
## References
- [setup.md](references/setup.md) — wallet setup, network config, and pricing. Read when guiding a new user through onboarding.
- [payment.md](references/payment.md) — EIP-712 signing details and common mistakes. Read when debugging signature errors or building a custom payment flow.
- [session.md](references/session.md) — session lifecycle, error codes, and idempotency. Read when troubleshooting 402/409/410 errors on follow-up queries.
- [streaming.md](references/streaming.md) — SSE streaming via progressToken. Read when the user wants incremental output on long queries (requires curl, not the bundled script).
标签
skill
ai