Federal data your agents can rely on.
17 federal sources and 142 tools behind one MCP endpoint. We hold the upstream keys, absorb the rate limits and serve what we can from cache, so your agent keeps working when a government API does not.
Early access. Signup needs a code, and we will send you one.
Authorization: Bearer YOUR_API_KEY
{
"method": "tools/list"
}
200 OK
{
"servers": 18,
"tools": 142,
"sample": [
"entity_dossier",
"award_by_piid",
"agency_spend_velocity",
"expiring_pipeline"
]
}
Every source is a public US government API, proxied with its licence terms enforced at the gateway. One of the 18 servers is a first party account endpoint that never touches an upstream API.
Every federal API is its own project
Different keys, different auth, different pagination, different limits. Wiring them together is a month of work that is not your product.
Why it holds up
Upstream government APIs are slow, rate limited and occasionally down. We absorb that so your agent does not have to.
Served from cache
Repeated queries come back from our cache instead of the source. Your agent gets an answer in milliseconds, and popular federal data stays fast for every account.
Fair under load
Per tenant limits and queued retries sit in front of every upstream call. One heavy account cannot starve the rest, and a slow agency does not become your timeout.
One key, scoped per machine
Bearer authentication on every endpoint. Issue a key per machine, revoke one without touching the others, and read usage per key from your dashboard.
17 federal sources, one connection
Procurement, spending, regulatory, economic, energy, climate and health data. Same key, same authentication, same response shape. The full tool list for every source lives in the documentation.
3 sources
Each source also has a focused endpoint at /servers/<slug>/mcp. Same key, fewer tools loaded at once.
The procurement core: SAM.gov
Five servers and 30 tools covering the federal procurement lifecycle end to end, from a sources sought notice to the award that closes it, plus the exclusion check that belongs before any teaming decision.
| Server | Tools | Endpoint |
|---|---|---|
| SAM.gov Agency Hierarchy Agency and sub-agency codes, the cross-API join key for every other federal dataset. |
4 | /servers/sam-federal-hierarchy/mcp |
| SAM.gov Contract Awards Contract award data (CDAS), the FPDS replacement. |
6 | /servers/sam-contract-awards/mcp |
| SAM.gov Entity Entity registration dossiers: the vendor side of the market. |
6 | /servers/sam-entity/mcp |
| SAM.gov Exclusions Debarment and exclusion records, a compliance gate before any teaming decision. |
5 | /servers/sam-exclusions/mcp |
| SAM.gov Opportunities The federal procurement firehose: pre-solicitations, solicitations, sources sought, awards. |
9 | /servers/sam-opportunities/mcp |
Pricing
Start free. Move up when your agent goes to production. Prices in USD, per month, cancel any time.
Free
For evaluation and side projects.
- 60 calls / hour
- 500 calls / rolling 24 h
- 12 federal sources, SAM.gov excluded
- 90 day history window
- 1 API key
- Community only
Builder
For an agent in production.
- 1,000 calls / hour
- 24,000 calls / rolling 24 h
- All 17 sources including SAM.gov
- 365 day history window
- 3 API keys
- Email, 48h
Team
For a team that needs headroom.
- 5,000 calls / hour
- 250,000 calls / rolling 24 h
- All 17 sources including SAM.gov
- Full history, no window
- 10 API keys
- Email, 24h
Enterprise
For volume, procurement and a named contact.
- Volume and concurrency set to fit
- All 17 sources including SAM.gov
- Full history, no window
- Custom API keys
- Named contact
Every plan includes
All 12 non SAM federal sources. Keys scoped per machine. A usage dashboard with per key metering. Cache backed responses wherever the licence allows. Licence conditions enforced before data leaves the gateway.
SAM.gov on any plan
Need SAM.gov without moving up a tier? The add-on grants the five SAM.gov servers on any account. SAM.gov carries a strict upstream ceiling, so talk to us if you expect heavy use.
Three steps to a working call
The same path on every source. One key, one handshake, one tool call shape from exploration to production.
Sends one MCP request with a bearer key. No per agency signup.
Checks quota, serves from cache where the licence allows, retries fairly.
Sees a well formed request inside its limits. Your agent gets the answer.
Get a key
Create an account and we issue your first key immediately. No card, no sales call.
Point your client
One command, or one block of JSON, depending on what you already use.
claude mcp add --transport http \
harbor-port https://port.harborgovcon.com/mcp \
--header "Authorization: Bearer $HARBOR_KEY"
Call tools
Start at the aggregate endpoint, or aim at a single source when you know the dataset you need.
Connect in one line
Grab a key from your dashboard, then paste one of these. Replace $HARBOR_KEY with the real thing.
Claude Code
claude mcp add --transport http harbor-port \
https://port.harborgovcon.com/mcp \
--header "Authorization: Bearer $HARBOR_KEY"Cursor ~/.cursor/mcp.json
{
"mcpServers": {
"harbor-port": {
"url": "https://port.harborgovcon.com/servers/usaspending/mcp",
"headers": { "Authorization": "Bearer \${env:HARBOR_KEY}" }
}
}
}VS Code .vscode/mcp.json
{
"inputs": [{ "type": "promptString", "id": "harbor-key", "description": "HARBOR Port API key", "password": true }],
"servers": {
"harbor-port": {
"type": "http",
"url": "https://port.harborgovcon.com/servers/usaspending/mcp",
"headers": { "Authorization": "Bearer \${input:harbor-key}" }
}
}
}Raw JSON-RPC bash
# MCP is session based. Initialize first and keep the session id, or every
# later request is rejected with "Missing session ID".
SID=$(curl -sD - -o /dev/null https://port.harborgovcon.com/servers/usaspending/mcp \
-H "Authorization: Bearer $HARBOR_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' \
| tr -d '\r' | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}')
curl -s https://port.harborgovcon.com/servers/usaspending/mcp \
-H "Authorization: Bearer $HARBOR_KEY" \
-H "Mcp-Session-Id: $SID" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl -s https://port.harborgovcon.com/servers/usaspending/mcp \
-H "Authorization: Bearer $HARBOR_KEY" \
-H "Mcp-Session-Id: $SID" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"resolve_recipient_id","arguments":{"name":"accenture"}}}'/mcp exposes all 142
tools, which is the fastest way to explore. Once you know which dataset you need, point at that single
source at /servers/<slug>/mcp. A shorter tool list is measurably more reliable for tool
selection and costs less context. Both work with the same key.
Paste this into your agent
No SDK and no client config. Give your agent the endpoint and a key and it speaks MCP for itself. This is the prompt we run against production before a deploy.
Agent prompt Claude Code, Cursor, Codex, any agent
You have access to HARBOR Port, a hosted MCP gateway for US government data.
It speaks MCP Streamable HTTP. Connect and answer one question with live data.
Endpoint: https://port.harborgovcon.com/mcp
Auth: Authorization: Bearer YOUR_API_KEY
If I have not given you a key, ask me for one and stop.
Every request is a POST with:
Content-Type: application/json
Accept: application/json, text/event-stream
Do the handshake on one session:
1. initialize
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"agent","version":"1"}}}
Keep the Mcp-Session-Id response header. Every later request needs it.
2. notifications/initialized (no id)
{"jsonrpc":"2.0","method":"notifications/initialized"}
3. Verify the key before asking anything. Call harbor_meta_ping and show me the
result. It must return pong. If it does not, stop and tell me the key is wrong.
Then call harbor_meta_list_servers and tell me how many servers there are.
4. Answer this with the usaspending tools, not a web search:
In NAICS 541512, who won the most federal contract dollars in fiscal year 2025,
and is that market concentrated or fragmented?
Call usaspending_naics_market_share with {"naics":"541512","fy":2025,"top_n":5}
Show me every request you sent and the figures that came back. If a call fails,
print the error instead of guessing.Works with any agent that can make an HTTP request. Keys come from the signup flow. Prefer a native client, or want the per-source endpoint instead? The snippets above register the same gateway.
Questions worth asking
What happens when I hit my quota?
Calls beyond your rolling 24 hour limit return a tool error naming the limit, and nothing is charged as overage. The hourly cap exists to stop a runaway loop. The daily cap is the budget you bought.
Is this official government data?
No. Every source proxies a public US government API. HARBOR Port is not affiliated with, endorsed by or acting for any agency, and attribution notices travel with the data.
Which sources can you cache?
It depends on each source licence, and the answer is enforced per source rather than applied as one policy. Where terms permit caching we serve from cache. Where they do not, the request passes through live and we retain nothing.
Why is SAM.gov a premium source?
SAM.gov is the deepest procurement dataset we carry, and it caps how much any account may draw each day. We price and ration it accordingly: included from Builder upward, or available as an add-on on any plan. If you expect a large volume, talk to us and we will size it.
Can I use this commercially?
Yes, subject to each source terms. The licence conditions are enforced at the gateway before data leaves it, per source.
What about uptime?
We publish live status rather than a number we have not measured. Support response times are stated on each paid plan, and a formal availability commitment comes once there is a measured history behind it.
How do I cancel?
From the billing portal, at any time. Access continues to the end of the paid period, then your keys stop.
Do you offer annual billing or invoicing?
For Team and Enterprise, yes. Get in touch and we will set it up.
One key. 17 federal sources. Start free.
HARBOR Port is in early access. Ask for a code and we will send one. Your first key is issued immediately after that.