fpds-mcp
README.md
# fpds-mcp
x402-paid MCP server for the U.S. **Federal Procurement Data System (FPDS-NG)** — every federal contract action since 2001, no signup, no API key.
Live: <https://fpds-mcp.mtree.workers.dev>
## Endpoints
| Endpoint | Description | Price |
|---|---|---|
| `POST /v1/contracts/search` | FPDS contract actions by keyword / agency code / NAICS / signed-date window | **$0.04** |
| `POST /v1/contracts/by_vendor` | Recent FPDS contract actions for a vendor + aggregate (total obligated $, distinct agencies, distinct NAICS) | **$0.05** |
All paid endpoints settle USDC on **Base** via x402. First call returns HTTP `402` with the EXACT-scheme envelope; sign `X-PAYMENT` and retry.
## Discovery surfaces (unpaid)
- `/.well-known/agent-card.json` — Google A2A AgentCard
- `/.well-known/mcp.json` — MCP server manifest
- `/.well-known/ai-plugin.json` — OpenAI plugin manifest
- `/openapi.yaml` — OpenAPI 3.1 spec
- `/agent-discovery` — human-friendly landing
- `/mcp` — MCP Streamable HTTP transport (JSON-RPC 2.0)
## Quick start
```sh
# 1) Probe the 402 envelope:
curl -i -X POST https://fpds-mcp.mtree.workers.dev/v1/contracts/by_vendor \
-H 'content-type: application/json' \
-d '{"vendor":"Lockheed Martin","limit":10}'
# 2) Settle X-PAYMENT (USDC on Base, payTo as advertised) and retry.
```
## Sibling service
For live SAM.gov opportunities + USASpending.gov awards see [`procure-mcp`](https://procure-mcp.mtree.workers.dev).
## Run locally
```sh
npm install
npx wrangler dev
```
Set `PAY_TO_ADDRESS` (and optional CDP/facilitator credentials) via `wrangler secret put` before `wrangler deploy`.
## License
MIT — Money Tree.