Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Tango MCP connector

API KeySearchAnalytics

Connect to Tango MCP by makegov to search federal contracts, opportunities, vehicles, organizations, and protests, and pull competitive...

Tango MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Register your Tango API key with Scalekit so it can authenticate and proxy federal procurement data requests on behalf of your users. Tango MCP uses API key authentication — there is no redirect URI or OAuth flow.

    1. Get a Tango API key

      • Go to the Tango developer portal and sign in.
      • Click Manage Account in the top navigation.
      • Under API Keys, your Default Key is shown — click Click to copy to copy it.
      • To create additional keys, click Manage API keys →.

      Tango developer portal showing the API Keys section with the Default Key and rate limit information

    2. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKitConnectionsCreate Connection.
      • Search for Tango MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., tangomcp).
    3. Add a connected account

      Connected accounts link a specific user identifier in your system to a Tango API key. Add them via the dashboard for testing, or via the Scalekit API in production.

      Via dashboard (for testing)

      • Open the connection and click the Connected Accounts tab → Add account.
      • Fill in Your User’s ID and API Key, then click Save.

      Via API (for production)

      await scalekit.connect.upsertConnectedAccount({
      connectionName: 'tangomcp',
      identifier: 'user@example.com',
      credentials: { apiKey: 'your-tango-api-key' },
      })
  4. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'tangomcp'
    const identifier = 'user_123'
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'tangomcp_search',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Search opportunities — Search open federal procurement opportunities and forecasts
  • Resolve records — Find entities, vehicles, NAICS/PSC codes, GSA MAS SINs, contracts, opportunities, IDVs, OTAs, subawards, organizations, and GAO bid protests matching a search query
  • Get details — Get detailed information about a single item — entity, contract, IDV, vehicle, opportunity, OTA, OTIDV, organization, protest, SIN, GSA eLibrary contract, IT investment, NAICS/PSC code, or budget account
  • Fetch api docs — Fetch detailed Tango API documentation for a specific section

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

tangomcp_fetch_api_docs#Fetch detailed Tango API documentation for a specific section. Use when you need the full list of filtering parameters, valid enum values, ordering options, response shaping syntax, or advanced query patterns beyond what the tool descriptions provide.1 param

Fetch detailed Tango API documentation for a specific section. Use when you need the full list of filtering parameters, valid enum values, ordering options, response shaping syntax, or advanced query patterns beyond what the tool descriptions provide.

NameTypeRequiredDescription
sectionstringrequiredDocumentation 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'.
tangomcp_get_details#Get detailed information about a single item — entity, contract, IDV, vehicle, opportunity, OTA, OTIDV, organization, protest, SIN, GSA eLibrary contract, IT investment, NAICS/PSC code, or budget account. Use after search or resolve to drill into a specific record, optionally enriched with related data.8 params

Get detailed information about a single item — entity, contract, IDV, vehicle, opportunity, OTA, OTIDV, organization, protest, SIN, GSA eLibrary contract, IT investment, NAICS/PSC code, or budget account. Use after search or resolve to drill into a specific record, optionally enriched with related data.

NameTypeRequiredDescription
idstringrequiredThe identifier for the item — UEI, contract key, IDV key, vehicle UUID, opportunity ID, OTA key, OTIDV key, organization FH key, SIN code, GSA eLibrary contract UUID, IT investment UII, NAICS code, PSC code, or budget account id.
typestringrequiredThe item type to retrieve details for. Note: 'subaward' is not supported here — use the search tool with type='subaward' and award_key filter instead.
attachment_idsstringoptionalOpportunity only. Comma-separated attachment resource_ids (or exact filenames) to pull full extracted text for — the targeted alternative to include_attachment_text when you only need specific documents (Pro-tier).
fieldsstringoptionalResponse shape for the primary item — comma-separated field names with optional nesting syntax (same as the search tool). Omit for comprehensive defaults.
include_attachment_textbooleanoptionalOpportunity only. When true, pulls the full extracted text of ALL file attachments inline (Pro-tier), capped by a per-call character budget.
include_relatedbooleanoptionalWhen true, enriches the response with related data from multiple endpoints (e.g. child awards for IDVs, socioeconomic status for entities, related opportunities for protests).
monthsintegeroptionalTrailing window in months for spending-trend metrics (applies to entity, naics, and psc types). Default 24.
periodstringoptionalMetric bucketing period for time-series data — 'year', 'quarter', or 'month'. Default 'year'.
tangomcp_resolve#Find entities, vehicles, NAICS/PSC codes, GSA MAS SINs, contracts, opportunities, IDVs, OTAs, 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.3 params

Find entities, vehicles, NAICS/PSC codes, GSA MAS SINs, contracts, opportunities, IDVs, OTAs, 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.

NameTypeRequiredDescription
querystringrequiredFree text search — company name, organization name, vehicle name, NAICS code or keyword, PSC code, SIN code, etc.
limitintegeroptionalMaximum number of results to return per entity type. Defaults to 5.
typestringoptionalOptional filter to restrict search to a specific entity type. When omitted, searches all types except itdashboard.
tangomcp_search_opportunities#Search open federal procurement opportunities and forecasts. Filter by organization, NAICS code, PSC code, set-aside type, notice type, place of performance, response deadline, and more. Returns a list of matching opportunities with total count.29 params

Search open federal procurement opportunities and forecasts. Filter by organization, NAICS code, PSC code, set-aside type, notice type, place of performance, response deadline, and more. Returns a list of matching opportunities with total count.

NameTypeRequiredDescription
activestringoptionalFilter active or inactive opportunities.
award_date_afterstringoptionalAnticipated award date lower bound (YYYY-MM-DD, forecasts only).
award_date_beforestringoptionalAnticipated award date upper bound (YYYY-MM-DD, forecasts only).
fieldsstringoptionalResponse shape — specify which fields to return. Valid top-level fields: opportunity_id, title, description, solicitation_number, naics_code, psc_code, set_aside, response_deadline, first_notice_date, last_notice_date, active, award_number, notice_history, office, place_of_performance, primary_contact, attachments, meta, sam_url. Use "office(*)" to get agency, department, and office details. Omit for sensible defaults.
first_notice_date_afterstringoptionalFirst notice date lower bound (YYYY-MM-DD).
first_notice_date_beforestringoptionalFirst notice date upper bound (YYYY-MM-DD).
fiscal_yearstringoptionalExact fiscal year match (forecasts only).
fiscal_year_endstringoptionalFiscal year range end (forecasts only).
fiscal_year_startstringoptionalFiscal year range start (forecasts only).
keywordstringoptionalSearch text across titles and descriptions of opportunities.
last_notice_date_afterstringoptionalLast notice date lower bound (YYYY-MM-DD).
last_notice_date_beforestringoptionalLast notice date upper bound (YYYY-MM-DD).
limitintegeroptionalMax results to return (default 25).
modified_afterstringoptionalModified date lower bound (YYYY-MM-DD, forecasts only).
modified_beforestringoptionalModified date upper bound (YYYY-MM-DD, forecasts only).
naics_codesstringoptionalList of NAICS codes to filter by.
naics_starts_withstringoptionalNAICS code prefix filter (forecasts only).
notice_typestringoptionalFilter by notice type. Accepts a single-letter code or 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).
orderingstringoptionalOrdering field (for example: last_notice_date or -response_deadline).
orgstringoptionalOrganization filter — accepts a code, name, or abbreviation (e.g. "VA", "CMS", "7500").
place_of_performancestringoptionalPlace of performance text filter.
psc_codesstringoptionalList of PSC codes to filter by.
response_deadline_afterstringoptionalOnly include opportunities due after this date (YYYY-MM-DD).
response_deadline_beforestringoptionalInclude opportunities due before this date (YYYY-MM-DD).
set_aside_typesstringoptionalList of set-aside type codes to filter by (e.g. ["SBA", "8AN"]). See tango://reference/set-asides for valid codes.
solicitation_numberstringoptionalSolicitation number filter.
source_systemstringoptionalSource system filter (forecasts only).
statusstringoptionalStatus filter (forecasts only). Examples: "Draft", "Final".
typestringoptionalWhat to search — "opportunity" (default) or "forecast".