MCP App Store
by KeenEthics
Tango MCP icon

Tango MCP

By MakeGov Inc.

Get New App Alerts

Overview

Tango provides a unified API and MCP for federal procurement data. Tango is built by govcon experts and software developers who understand the pain of stitching together multiple government data sources. Designed specifically for public-sector builders and for AI-ready data consumers.

Tools

fetch_api_docs

ChatGPT
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", "contract-appeals", "contracts", "dibbs", "ebuy", "entities", "exclusions", "federal-budget", "federal-register", "forecasts", "gsa-elibrary", "idvs", "itdashboard", "lcats", "metrics", "opportunities", "otas", "otidvs", "protests", "resolve", "response-shaping", "sbir", "set-asides", "sled", "subawards", "vehicles" Returns: Dict with the section name and markdown content, or an error with the list of valid sections.

get_details

ChatGPT
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 + transactions (modifications) - idv: full detail + child awards + transactions + labor rates (CALC) - vehicle: full detail + awardees (100 per page) + orders. When awardees.next_awardee_page is set, call again with that awardee_page to read the rest, or narrow with awardee_search. - opportunity: full detail. Where SAM.gov posted an award notice it carries awarded, award_date, award_amount, awardee and awardee_uei; on a solicitation, award_count and awards list up to 10 recent linked awards, and on an award, solicitation_opportunity_id names the solicitation it answers. An award links to its solicitation only when the award notice references it. 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 (not included on every plan): 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). A selected document always returns text: one larger than the per-call budget arrives in budget-sized chunks — follow attachment_text.partial[].next_offset with attachment_offset to read the rest. include_attachment_text=true pulls text for ALL file attachments, but a per-call character budget caps the total; documents that don't fit are listed as omitted with their resource_ids so you can fetch them via attachment_ids. Text lands in attachment_text.documents[] (name, resource_id, extracted_text); with attachment_ids the attachment list is cut to name + resource_id. fields narrows the rest of the record. When the account's plan does not include document text, attachment_text says so and the rest of the record still returns. - 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 - contract_appeal: one CBCA/ASBCA Contract Disputes Act decision, keyed by uuid. include_related is a no-op — a decision carries no PIID or UEI to join on. The decision body is not in the default: name it with fields="...,decision_text" (Enterprise only; roughly 100K characters). text_status and text_char_count say on every plan whether a body exists before you ask for it. - 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_contract: GSA eLibrary contract detail - itdashboard: Federal IT investment detail by UII. Rich nested context (cio_evaluation, contracts, projects, funding, performance_metrics, etc.) is available via the `fields parameter on Pro/Business+ plans — include_related is a no-op. - naics: NAICS code record + time-series obligation/award metrics over the trailing months window, bucketed by period`. - psc: PSC (Product Service Code) record + time-series metrics (same shape as naics). - budget_account: Federal budget account (appropriations) record; with include_related: quarterly SF-133 cash flow + per-recipient contract-flow detail. - dibbs_rfq / dibbs_rfp: one DLA RFQ or solicitation, keyed by uuid; with include_related: the other DIBBS families sharing that solicitation number (notably the award it produced). - dibbs_award: one DLA award LINE ITEM, keyed by uuid. Its total_contract_price …

resolve

ChatGPT
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 — the two are different data, mirroring search and get_details. When omitted, searches all types except itdashboard. limit: Max results per type (default 5). Returns: Matching results grouped by type with identifiers and context.

search_opportunities

ChatGPT
Search pre-award procurement — everything you can still bid on. Nine families share this tool because they answer the same question ("what is open?") from different systems: - opportunity SAM.gov notices (default) - forecast planned procurements, pre-solicitation - dibbs_rfq DLA small-purchase requests for quote - dibbs_rfp DLA solicitations (RFP/IFB) - sbir_topic SBIR/STTR research topics - sbir_solicitation SBIR/STTR solicitation cycles (parent of topics) - sled_opportunity state / local / education solicitations - sled_forecast planned state procurements - ebuy GSA eBuy RFQs/RFPs/RFIs posted to GSA Schedule holders All but the two sled_ families are FEDERAL. The two sled_ families are STATE, LOCAL and EDUCATION buyers — a separate market with its own portals, so a federal search never returns them and vice versa. Post-award data lives in search instead — including DIBBS awards (search(type="dibbs_award")). Two date filters are normalized across every family, so the same argument works whatever you are searching: - response_deadline_after/before — when the window CLOSES. Maps to return_by_date (dibbs_rfq), closes_date (dibbs_rfp), close_date (sbir_topic, ebuy), end_date (sbir_solicitation). - first_notice_date_after/before — when it was POSTED/opened. Maps to issue_date (dibbs_rfq, ebuy), issued_date (dibbs_rfp), open_date (sbir_topic), start_date (sbir_solicitation), posted_date (sled_opportunity), estimated_advertisement_date (sled_forecast — a QUARTER START, not a posting date). DIBBS RFQs/RFPs are scoped to a part: filter by nsn or part_number, not NAICS/PSC (which DIBBS does not carry). SLED coverage is partial and grows one jurisdiction at a time, so a thin per-state result is at least as likely to be a portal Tango does not read as a quiet market. You do not have to go looking: any state-scoped SLED search that comes back thin carries a _coverage block with that state's real corpus totals, which is what tells the two apart. Never read a per-state count as market size without it. eBuy (not included on every plan) shows only the requests posted under the GSA Schedule contracts the caller's account is linked to — it is the account's own inbox, not a market-wide feed. An account with no linked contract sees an empty list, not an error, so a zero-result eBuy search checks access and says when the empty result means "cannot see" rather than "nothing posted". status is frozen at the last-seen state: GSA only lists active requests, so one that closes stops appearing rather than turning "Closed" — "Open" means open when last seen (see last_seen). To find requests still open, filter response_deadline_after=<today> rather than trusting status. Open one with get_details(type="ebuy", id=<rfq_id>) for its description, contacts and attachments. Args: keyword: Search text across titles and descriptions. org: Organization filter — accepts a code, name, abbreviation, or organization UUID (e.g. "VA", "CMS", "075", or a UUID from resolve(type="organization")). Matches the organization and all of its descendants, so a department returns records from its sub-agencies and offices. A value that matches no organization is an error, not an empty result — the response carries error and total_count: 0. Resolution is fuzzy, so a near-miss can match an organization you did not intend and silently scope the search to it; prefer a code or a UUID from resolve(type="organization") when the name is ambiguous. For SBIR this is instead the agency's raw text, matched partially — "DOD", "NSF", "HHS" (note NIH topics are filed under HHS). Not used by DIBBS, which is always DLA; use organization to narrow within DLA. naics_codes: List of NAICS codes; matches any of them (OR). psc_codes: List of PSC codes; matches any of them (OR). set_aside_types: List of set-aside type codes; matches any of them (e.g. ["SBA", "8AN"]). Call fetch_api_docs("set-asides") for valid codes. active: Filter active/open or inactive/closed records. For opportunities, omitting it searches open notices only, unless solicitation_number, notice_type, awa…

send_feedback

ChatGPT
Tell the Tango team how its tools worked for you — your own assessment, not the user's. Call this when a tool made the task harder than it should have been: a result was wrong or implausible, data you expected was missing, a parameter or error message misled you, you needed several retries to find the right call, or the tools could not do what the user asked. Also welcome when something worked notably well. One call per distinct issue, at the moment you notice it; do not wait until the end of the conversation. Do not include secrets or personal details about the user. Args: message: What happened and what you expected instead. Name the calls, parameters, and values involved. category: wrong_data, missing_data, confusing_tool, bug, feature_request, worked_well, or other. tool: The tool the feedback is about (e.g. "search_opportunities"), if any. goal: One sentence on what the user was trying to accomplish. follow_up: True only if the user said they want to hear back about this, or asked to be told when it's fixed. Never ask the user just to fill this in, and never set it on your own judgment. When true, the Tango team may email the account holder once the issue is resolved.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps