Tango MCP
Tango gives your agent structured, real-time access to the entire federal procurement graph — contracts, opportunities, entities, IDVs, OTAs, protests…
What it can do
- Resolve: Find entities, vehicles, NAICS/PSC codes, GSA MAS SINs, contracts, opportunities, IDVs, OTAs, OTIDVs, subawards, organizations, and GAO bid protests matching a search query. Use this tool fir
- Search: Search contracts, IDVs, vehicles, GSA eLibrary Schedule holders, CALC labor rates, OTAs, OTIDVs, subawards, organizations, protests, grants, and federal budget accounts. This is the primary da
- Search Opportunities: Search open opportunities and forecasts. Use this to find upcoming procurement opportunities by organization, NAICS code, set-aside type, or keyword. Args: keyword: Search text a
What data it sees
Do you need an account
No: the server works without sign-in
Tango gives your agent structured, real-time access to the entire federal procurement graph — contracts, opportunities, entities, IDVs, OTAs, protests, subawards, forecasts, budget accounts, vehicles, and GSA eLibrary — behind one auth boundary. No screen-scraping, no stitching together government APIs. Five tools (search, search_opportunities, resolve, get_details, fetch_api_docs) work from Claude, Cursor, the OpenAI Responses API, or any MCP client.
How to connect
How to connect Tango MCP to Claude
The server address to paste into Claude settings:
https://tango--makegov.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Tango MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://tango--makegov.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Tango MCP to Cursor
The server address to paste into Cursor settings:
https://tango--makegov.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (5)
Raw names from tools/list. Only developers need these.
| resolve | Find entities, vehicles, NAICS/PSC codes, GSA MAS SINs, contracts, opportunities, IDVs, OTAs, OTIDVs, subawards, organizations, and GAO bid protests matching a search query. Use this tool first when you have a name or keyword and need to discover what's in the data. Returns identifiers (UEI, organization key, etc.) you can use with other tools, plus a preview of matching contracts, opportunities, and protests. For company questions, resolve first to get UEI + related data including bid protests filed by or against the company. To look up a federal agency or department, use type="organization". Organizations represent the full federal hierarchy (departments, agencies, bureaus, offices) under a single abstraction. Filter by level (0–3), type, or CGAC code via the search tool for more precise results. To look up a GSA MAS SIN (Special Item Number), use type="sin". Returns the SIN title, description, mapped NAICS/PSC codes, and category information. Useful for understanding what services fall under a GSA Schedule SIN code. After resolving a SIN, use search with type="gsa_elibrary" and sin= to find MAS holders — not type="contract" with the SIN's NAICS codes, which returns orders across all vehicles (SEWP, STARS III, etc.), not just MAS. To look up a federal IT investment, use type="itdashboard". Full-text search across itdashboard.gov investment records; returns UIIs (Unique Investment Identifiers) for use with get_details(type="itdashboard"). Args: query: Free text search — company name, organization name, vehicle name, NAICS code or keyword, PSC code, SIN code, etc. type: Optional filter — "entity", "vehicle", "naics", "psc", "sin", "contract", "opportunity", "idv", "ota", "otidv", "subaward", "organization", "protest", or "itdashboard". "idv" searches the award-level IDV records (the contract-family parents, keyed by PIID); "vehicle" searches Tango's curated vehicle catalog — |
| search | Search contracts, IDVs, vehicles, GSA eLibrary Schedule holders, CALC labor rates, OTAs, OTIDVs, subawards, organizations, protests, grants, and federal budget accounts. This is the primary data tool. Use it to find contracts by vendor, organization, NAICS code, date range, or keyword. Set include_summary=true to get aggregate statistics (total obligated, vendor distribution, set-aside breakdown, etc.) computed across up to 500 matching records. For appropriations / budget questions ("how much was enacted vs. apportioned vs. obligated vs. available?"), use type="budget_account" — this is the only type carrying appropriations-level data (the contract/IDV/subaward types are transactional obligations only). Its default shape includes the full request -> enacted -> apportioned -> obligated -> outlayed lifecycle; call fetch_api_docs("budget_accounts") for ratios/trends/counts (request those via fields=). See tango://guides/federal-budget for a primer. For bid protests: use type="protest" with protester_name, outcome, agency (via awarding_org), docket_number, solicitation_identifier, or date range filters. Protests include GAO case records with outcomes, decision links, and digests. Important: when investigating a GSA MAS SIN, do NOT use type="contract" with NAICS/PSC/set-aside filters — contract search cannot filter by parent vehicle type, so results include orders from all vehicles (SEWP, STARS III, etc.), not just MAS. Instead, use type="gsa_elibrary" with sin= to find MAS Schedule holders, then get_details on their IDV key (with include_related=true) to see actual MAS orders and CALC labor rates. Args: type: What to search — "contract" (default), "idv", "vehicle", "all" (contracts + IDVs), "ota" (Other Transaction Awards), "otidv" (Other Transaction IDVs), "subaward", "organization", "protest" (GAO bid protests), "gsa_elibrary" (GSA Schedule holder contracts by SIN), "lcat" (CALC labor rates), "itdashboard" (f |
| search_opportunities | Search open opportunities and forecasts. Use this to find upcoming procurement opportunities by organization, NAICS code, set-aside type, or keyword. Args: keyword: Search text across titles and descriptions. org: Organization filter — accepts a code, name, or abbreviation (e.g. "VA", "CMS", "7500"). naics_codes: List of NAICS codes to filter by. psc_codes: List of PSC codes to filter by. set_aside_types: List of set-aside type codes to filter by (e.g. ["SBA", "8AN"]). See tango://reference/set-asides for valid codes. active: Filter active or inactive opportunities. notice_type: Filter by notice type. Accepts a single-letter code or a human-readable name. Codes: p (Pre solicitation), k (Combined Synopsis/Solicitation), o (Solicitation), a (Award Notice), m (Modification/Amendment/Cancel), r (Sources Sought), s (Special Notice), u (Justification), i (Intent to Bundle), g (Sale of Surplus Property). place_of_performance: Place of performance text filter. response_deadline_after: Only include opportunities due after this date (YYYY-MM-DD). response_deadline_before: Include opportunities due before this date (YYYY-MM-DD). first_notice_date_after: First notice date lower bound (YYYY-MM-DD). first_notice_date_before: First notice date upper bound (YYYY-MM-DD). last_notice_date_after: Last notice date lower bound (YYYY-MM-DD). last_notice_date_before: Last notice date upper bound (YYYY-MM-DD). ordering: Ordering field (for example: last_notice_date or -response_deadline). fiscal_year: Exact fiscal year match (forecasts only). fiscal_year_start: Fiscal year range start (forecasts only). fiscal_year_end: Fiscal year range end (forecasts only). naics_starts_with: NAICS code prefix filter (forecasts only). source_system: Source system filter (forecasts only). status: Status filter (forecasts only). Example |
| get_details | Get detailed information about a single item, with optional enrichment. Use this after search or resolve to drill into a specific entity, contract, IDV, vehicle, opportunity, OTA, OTIDV, organization, protest, SIN, or GSA eLibrary contract. When include_related is true, the tool makes multiple API calls and returns composite data: - entity: profile + socioeconomic status + 10 most recent contracts - contract: full detail + subawards - idv: full detail + child awards + transactions + labor rates (CALC) - vehicle: full detail + awardees - opportunity: full detail. The default response lists every attachment by name and resource_id (the manifest). To read the actual document text — the SOW/PWS, Section L instructions, Section M evaluation factors, CDRLs, Q&A — request it (Pro-tier): * attachment_ids="<resource_id>,<resource_id>" pulls full text for just those documents (the targeted, recommended path — pick the PWS/Section L/M off the manifest by name). * include_attachment_text=true pulls text for ALL file attachments, but a per-call character budget caps the total; documents over budget are listed as omitted with their resource_ids so you can fetch them via attachment_ids. Text lands inline under detail.attachments[].extracted_text. Under-tier callers get an upgrade pivot instead of the text. - ota: full OTA detail + transactions - otidv: full OTIDV detail + child OTAs + transactions - organization: organization detail + child organizations - protest: full protest detail + dockets; with include_related: related opportunities and contracts for the same solicitation - sin: MAS SIN detail; with include_related: GSA eLibrary contracts on this SIN (showing Schedule holders). To see a vendor's MAS orders: find their IDV key via search(type="gsa_elibrary"), then use get_details(type="idv", include_related=true) for orders and CALC labor rates. - gsa_elibrary_c |
| fetch_api_docs | Fetch detailed Tango API documentation for a specific section. Use this when you need information beyond what the tool descriptions provide — for example, the full list of filtering parameters for a resource type, valid enum values, ordering options, response shaping syntax, or advanced query patterns. Args: section: Documentation section to retrieve. Valid values: "budget_accounts", "contracts", "entities", "forecasts", "gsa-elibrary", "idvs", "itdashboard", "lcats", "metrics", "opportunities", "otas", "otidvs", "protests", "resolve", "response-shaping", "subawards", "vehicles" Returns: Dict with the section name and markdown content, or an error with the list of valid sections. |