Agents · MCP server

Federal procurement records your agents can cite.

Give Claude, Cursor, and custom agents stable opportunity, award, entity, exclusion, document, history, and analysis records through MCP. Streamable HTTP / JSON-RPC 2.0 at mcp.boringdataplatform.com. Same API key and monthly quota as REST.

MCP server operationalREST + MCP same key and quotaTransport Streamable HTTP · JSON-RPC 2.0
MCP tool surfaceMCP
JSON-RPC
https://mcp.boringdataplatform.com/mcp
tools/list
MCPHTTP
Response map
32 tools
search_opportunities
search_documents
list_changes
get_opportunity
Contract
Auth
Bearer token on every request.
Quota
Tool calls count against the same monthly budget.
Records
MCP wraps the same source-backed REST surfaces.
Same key as RESTtools/list
Agent workflows

Real agent work, backed by stable records.

Agents are useful when they can retrieve the same source-linked records your application uses. MCP gives them that path without a separate integration.

Capture brief

Ask for a target opportunity, then pull the source notice, documents, history, likely incumbent context, and buyer profile without switching systems.

Supplier check

Start from a UEI, CAGE, or vendor name and let the agent retrieve registration, exclusions, responsibility records, and award context for review.

Market monitor

Use changes, opportunity analysis, and award rollups to answer what moved in a market before the team exports data.

Setup

Connect with one config snippet.

Pick your client, paste the config, and restart. The MCP tools use the same Boring Data Platform account as REST.

  1. Grab your API key

    From the console. Use the same key for REST and MCP.
  2. Open your config file

    Create it if it doesn't exist.
    macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    Windows: %APPDATA%\Claude\claude_desktop_config.json
  3. Paste the snippet

    Merge with your existing mcpServers block if you have one.
  4. Restart Claude Desktop

    The tools appear under Available tools in any conversation.
claude_desktop_config.json
{
  "mcpServers": {
    "boring-data-platform": {
      "url": "https://mcp.boringdataplatform.com/mcp",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Tool catalog

32 read-only tools.

Names are short and specific so LLMs can choose the right tool. Each maps to a REST endpoint: same data, same quota.

GroupToolWhat it does
Opportunitiessearch_opportunitiesSearch canonical opportunity threads.
Opportunitiesget_opportunityFetch one merged opportunity thread.
Opportunitiesget_opportunity_historyReturn amendment and lifecycle history.
Opportunitiesget_opportunity_documentsList documents and extraction status.
Opportunitiessearch_documentsSearch extracted document text across opportunities.
Opportunitiessearch_opportunity_documentsSearch document text for one opportunity.
Opportunitiesget_opportunity_document_textFetch bounded extracted document text.
Opportunitiesget_opportunity_document_requirementsReturn requirement evidence from documents.
Opportunitieslist_opportunity_relatedList related cross-source opportunities.
Opportunitiesget_opportunity_incumbentsReturn likely incumbents and recompete status.
Opportunitiesget_opportunity_buyer_profileReturn buyer contacts and related market signals.
Opportunitieslist_opportunity_analysisFilter opportunities by structured fields.
Opportunitiesget_opportunity_analysis_rollupAggregate opportunity analysis facets.
Awardssearch_awardsSearch federal contract awards.
Awardsget_awardFetch one award transaction.
Awardsget_award_hierarchyReturn parent IDVs and child award actions.
Awardslist_award_rollupsAggregate awards by agency, vendor, NAICS, or PSC.
Entitiessearch_entitiesSearch SAM.gov entity registrations.
Entitiesget_entityFetch one registration by UEI.
Entitiesget_entity_profileConnect registration, awards, exclusions, and integrity.
Compliancesearch_exclusionsSearch SAM.gov exclusion records.
Complianceget_exclusionFetch one exclusion record.
Compliancelist_entity_exclusionsCheck exclusions for one UEI.
Compliancesearch_integrity_recordsSearch public responsibility and integrity records.
Complianceget_integrity_recordFetch one integrity record.
Referencesearch_agenciesSearch SAM.gov Federal Hierarchy agencies.
Referenceget_agencyFetch one agency by organization id.
Referencesearch_assistance_listingsSearch Assistance Listings programs.
Referenceget_assistance_listingFetch one Assistance Listing.
Notices & changeslist_noticesList source-verbatim notices.
Notices & changesget_noticeFetch one raw notice.
Notices & changeslist_changesRead the incremental change feed.
How it plays out

One question. Three tool calls. No stitching.

Representative exchange built from committed example fixtures. Same agent, same key — real tool names and source-backed shapes.

Claude · boring-data-platform · MCP tools
You

Search opportunity documents for evaluation criteria. Pick one matching record, show the source notice, and tell me whether there is incumbent context.

Claude
search_documents query: "evaluation criteria", source: "sam_current", limit: 3
→ Section M — Evaluation Factors for Award
get_opportunity recordId: "00000000-0000-4000-8000-0000000000a1"
→ IT Service Management Platform Operations & Maintenance
get_opportunity_incumbents recordId: "00000000-0000-4000-8000-0000000000a1", limit: 5
→ Cascade Federal Technologies LLC · Likely recompete

I found a matching document on IT Service Management Platform Operations & Maintenance. The opportunity record includes document context and source links. The incumbent tool returns Cascade Federal Technologies LLC as the fixture-backed candidate.

You

Show me the record ID so I can fetch the same result through REST.

Claude

Use 00000000-0000-4000-8000-0000000000a1 with /v1/opportunities/00000000-0000-4000-8000-0000000000a1. REST and MCP return the same source-backed record model.

What's happening under the hood

Claude can select the MCP tools directly from their names, descriptions, and schemas. The visible example uses committed fixture values, not a live claim.

  • Fixture record. 00000000-0000-4000-8000-0000000000a1 · Section M — Evaluation Factors for Award
  • Search first, expand second. The model searches extracted document text, then fetches full detail only for the one record the user cares about.
  • Incumbents are a separate tool. get_opportunity_incumbents returns likely incumbent candidates and award evidence for the same record ID.
  • History is first-class. The “what changed from the original” question is a single field on the response, not a diff Claude has to synthesize.
  • Shared quota. Three tool calls = three REST requests against the same monthly budget.
Technical details

Boring on purpose.

Transport

Streamable HTTP / JSON-RPC 2.0

Standard MCP streamable HTTP. Works over HTTPS, no websockets required. Responses stream progressively for long tools; short tools return in a single frame.

Auth

Bearer token on every request

Same strata_live_… keys as the REST API. Create and rotate keys from the console.

Quota

One monthly budget

A tool call counts as one API request against your plan. Switching between REST and MCP uses the same per-key rate limit and monthly quota.

Tool design

Tuned for selection

Tool names are short and verb-first. Descriptions state the tool's job in one sentence. Parameter names mirror the REST query params so switching between surfaces stays mechanical.

FAQ

Quick answers.

Do I need a separate account or billing plan for MCP?
No. Any BDP API key works on both surfaces, and quota is shared. If REST is provisioned, MCP is provisioned.
Which MCP clients are supported?
Anything that speaks streamable HTTP / JSON-RPC 2.0. We test Claude Desktop, Claude.ai Connectors, Cursor, and generic JSON-RPC clients.
Is the data identical to the REST API?
Yes. MCP tools are thin wrappers around the same REST endpoints. Same schema, same source coverage, same history coverage.
How do you handle rate limits for agents that call tools in parallel?
Per-key sliding-window limits apply across both transports. REST responses include rate-limit headers; MCP tool errors include the same rate_limited code and reason values from the REST API.
Can I restrict which tools are exposed?
Not per key today. Sandbox, Starter, Growth, and Developer expose the standard toolset by default.

Ready for agents that use source-linked procurement records?

Start with Sandbox, connect an MCP client, and test the same records your REST integration would use.