Skip to main content
TeamingIndex

DEVELOPERS

TeamingIndex API & MCP server

Put verified teaming intelligence inside your own tools. Search partners by CMMC status, blind SPRS bracket, clearance and contract vehicle, pull capability statements, track recompetes and live SAM.gov solicitations, and let AI agents do the same through the Model Context Protocol. One organization API key works for all of it.

OVERVIEW

Three ways to build on TeamingIndex

Every option reads the same verified index and the same blind-SPRS privacy rules. Pick the one that fits your stack; one organization API key covers all three.
JSON · CSV

REST API

14 keyed endpoints for contractors, vehicles, NAICS directories, recompetes, the Teaming Board and live SAM.gov opportunities, for your CRM, capture pipeline or data warehouse.
STREAMABLE HTTP

MCP server for AI agents

10 read-only tools that let Claude and other agents find partners, check team fit and run FAR 52.219-14 workshare math, with citations back to each profile.
POST

AI analysis API

Run Intelligence Hub analyses such as RFP fit, partner shortlists, compliance matrices and recompete briefs from your own systems, and get the saved report back.

QUICKSTART

From zero to your first result in two minutes

Three steps, no SDK required. Any HTTP client works; the examples use curl.
  1. Create a key

    An organization admin on Verified Pro or Enterprise Capture creates keys in Dashboard → API keys. The full key is shown once: keep it in your secret manager, never in source code or a URL.

    Open API keys
    ShellStore the key in an environment variable
    export TEAMINGINDEX_API_KEY="ti_live_…"   # paste the key shown once in Dashboard → API keys
  2. Check the key

    The account endpoint confirms the key works and shows your plan, this month's usage and what the plan unlocks.

    Shellcurl example for Your key, plan and usage
    curl -sS "https://teamingindex.com/api/v1/me" \
      -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
  3. Run your first search

    Same filters and meaning as the directory: CMMC level, blind SPRS bracket, clearance, vehicle, socio-economic status and NAICS. Each result links to its profile, Markdown capability statement and API record.

    Shellcurl example for Search contractors
    curl -sS "https://teamingindex.com/api/v1/contractors?cmmc=L2C3PAO&sprs=85&naics=541512&vehicle=oasis-plus.prime" \
      -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

AUTHENTICATION

One organization key, sent in a header

Every endpoint except the index and the OpenAPI document needs a key. The same key authenticates the MCP server.

Rules of the road

  • Send the key as Authorization: Bearer ti_live_…. The x-api-key header also works; when both are sent, Authorization wins.
  • Keys belong to your organization, not a person, and every response is shaped for that organization exactly as in the app. Exact SPRS scores and CMMC certificate IDs appear only for your own profile or a mutual NDA counterparty; BD contact email and phone are included because API callers count as signed-in members.
  • Never put a key in a URL. Requests with api_key, key or token parameters are rejected with 400 invalid_request; if that happens, revoke the key, because URLs end up in logs and browser history.
  • Rotate without downtime: create a second key, deploy it, then revoke the old one. Revoked keys fail at once with 401 revoked_api_key.
  • ti_test_ keys work only against development environments; production accepts ti_live_ keys.
HTTPAuthenticated request headers
GET /api/v1/contractors?naics=541512&cmmc=L2 HTTP/1.1
Host: teamingindex.com
Authorization: Bearer ti_live_YOUR_API_KEY
Accept: application/json

# Alternative header (Authorization wins when both are sent):
x-api-key: ti_live_YOUR_API_KEY

Server-side only: no CORS, by design

Keyed endpoints send no Access-Control-Allow-Origin header, so browsers refuse cross-origin calls. That is deliberate: a key in browser code would let every visitor spend your quota and read NDA-gated data. Call the API from your backend, a serverless function or an MCP client. The index and the OpenAPI document allow any origin for GET so API tools can load the spec.

Learn more about how blind SPRS brackets and NDA reveals work

QUOTAS BY PLAN

One monthly quota for REST and MCP

REST requests and MCP tool calls draw from one quota per organization. It resets at 00:00 UTC on the first day of each month. Limits below are live: they reflect your plan settings today.
API, MCP and AI limits by plan
PlanPriceREST + MCP queries / monthCSV exportRecompete RadarTeaming Board detailsAI analyses / monthOwn Anthropic key
Registered Entity$0 per monthFree foreverNo API accessNot includedPreview (top 3 rows)Titles only10Not available
Verified Pro$149 per month500Not includedYour primary NAICSFull posts200Not available
Enterprise Capture$499 per month2,500IncludedEvery NAICS, agency and windowFull posts2,000Allowed (uncapped)
Prime Corporate / API$999 per month15,000IncludedEvery NAICS, agency and windowFull posts5,000Allowed (uncapped)

Burst limit

60 requests per minute per key. Going over returns 429 rate_limited with a Retry-After header and does not use quota. MCP protocol messages have their own allowance of 120 per minute.

What counts as a query

Each keyed REST request counts once, including a CSV export of up to 1,000 rows. On MCP only tools/call counts; initialize, tools/list and ping are free. Requests rejected for invalid parameters, the index and the OpenAPI document never count.

AI analyses

POST /api/v1/ai/analyze uses one query and one AI credit. Enterprise Capture organizations that run on their own Anthropic key are not capped on credits.
Compare plans and upgrade

REST ENDPOINTS

Endpoint reference

Base URL https://teamingindex.com/api/v1. Every endpoint is a GET except AI analysis, and returns JSON unless noted. The full contract, including every field, is in the OpenAPI 3.1 document.

All REST endpoints
MethodEndpointWhat it returnsAccess
GET/api/v1API indexNo key
GET/api/v1/openapi.jsonOpenAPI 3.1 documentNo key
GET/api/v1/meYour key, plan and usageAPI key
GET/api/v1/contractorsSearch contractorsAPI key
GET/api/v1/contractors.csvExport search results as CSVAPI key · Enterprise Capture
GET/api/v1/contractors/{uei}Contractor profileAPI key
GET/api/v1/contractors/{uei}/capability.mdCapability statement (Markdown)API key
GET/api/v1/vehiclesContract vehiclesAPI key
GET/api/v1/vehicles/{slug}Vehicle holdersAPI key
GET/api/v1/naicsNAICS codes in the indexAPI key
GET/api/v1/naics/{code}NAICS industry directoryAPI key
GET/api/v1/recompetesRecompete RadarAPI key · Full radar: Enterprise Capture
GET/api/v1/opportunitiesOpen teaming opportunitiesAPI key
GET/api/v1/rfpsLive SAM.gov opportunitiesAPI key
GET/api/v1/rfps/{noticeId}One SAM.gov opportunityAPI key
POST/api/v1/ai/analyzeRun an AI analysisAPI key · AI credits by plan

Overview

GET/api/v1

API index

Lists every endpoint, the authentication scheme, quotas by plan and links to these docs and the OpenAPI document. No key needed.

  • No key needed
  • Not metered
  • JSON
Shellcurl example for API index
curl -sS "https://teamingindex.com/api/v1"
GET/api/v1/openapi.json

OpenAPI 3.1 document

Machine-readable description of the REST API, including the AI analysis endpoint. Import it into Postman, Insomnia or a code generator. No key needed.

  • No key needed
  • Not metered
  • JSON
Shellcurl example for OpenAPI 3.1 document
curl -sS "https://teamingindex.com/api/v1/openapi.json"

Account

GET/api/v1/me

Your key, plan and usage

Confirms a key works and returns its organization, plan, this month's usage and what the plan unlocks. A good first call.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Your key, plan and usage
curl -sS "https://teamingindex.com/api/v1/me" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

Contractors

GET/api/v1/contractors

Search contractors

Faceted directory search with the same filters as /directory: CMMC level, blind SPRS bracket, facility clearance, ITAR/EAR, contract vehicles (with role), socio-economic status, NAICS, size-by-NAICS, ISO/AS certifications, verified-only and teaming availability. 20 results per page; excluded and inactive SAM registrations are hidden unless inactive=1.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Search contractors
curl -sS "https://teamingindex.com/api/v1/contractors?cmmc=L2C3PAO&sprs=85&naics=541512&vehicle=oasis-plus.prime" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
Filter parameters (21)
Directory filter parameters for GET /api/v1/contractors
ParameterWhat it doesValues
qFree text: company name, UEI, CAGE, NAICS, vehicle or capability keywords (max 200 characters).Text
sectorMission sectors (any), derived from SAM.gov NAICS and PSC codes. Details per sector at /sectors.cyber-c5isr-it, aerospace-autonomous, space-satcom, ai-deeptech-rd, manufacturing-maritime, seta-engineering, logistics-sustainment, milcon-infrastructure, medical-readiness
cmmcMinimum CMMC 2.0 level. L2C3PAO = Level 2 assessed by a C3PAO (or DIBCAC).L1, L2, L2C3PAO, L3
sprsMinimum blind SPRS bracket (">= N"). Filters on brackets; raw scores are never exposed.0, 50, 70, 85, 95, 105, 110
fclMinimum facility clearance. Paid plans only (NISPOM 32 CFR 117.9: levels are never public); ignored for other keys, with a notice in meta.confidential, secret, top_secret, ts_sci
vehicleVehicle slugs (any), optionally with a role suffix: oasis-plus.prime.Up to 10 slugs from GET /vehicles; roles: prime, subcontractor, joint_venture, mentor_protege
socioSocio-economic codes (any).SB, SDB, 8A, HUBZONE, WOSB, EDWOSB, VOSB, SDVOSB, ANC, TRIBAL
naicsNAICS codes or 2-5 digit prefixes (any).Up to 20, e.g. 541512 or 5415
stateTwo-letter USPS state of the physical address.e.g. VA
itarRequire an ITAR (DDTC) registration.1 or 0 (true/false also accepted)
earRequire EAR compliance.1 or 0 (true/false also accepted)
scifRequire a SCIF. Paid plans only; ignored for other keys, with a notice in meta.1 or 0 (true/false also accepted)
claimedOnly profiles claimed by the contractor.1 or 0 (true/false also accepted)
verifiedEvery active compliance filter must be met by a credential verified by TeamingIndex (not a self-attestation).1 or 0 (true/false also accepted)
smallforOnly entities SAM.gov reports as small under this six-digit NAICS.e.g. 541512
inactiveAlso include expired/inactive SAM registrations and entities with an active exclusion (hidden by default; FAR 9.4).1 or 0 (true/false also accepted)
isoISO/AS certifications (all required).AS9100D; ISO 9001:2015; ISO/IEC 27001:2022; ISO 14001:2015; ISO/IEC 20000-1; AS9110; AS9120; CMMI-DEV ML3; CMMI-SVC ML3
acceptingTeaming availability: sub = accepting subcontracts, prime_jv = open to prime/JV roles.sub, prime_jv
sortResult order.relevance, obligated, name, recent
page1-based page (20 results per page, max page 500).1-500
facetsInclude facet counts (cmmc, sprs, fcl, vehicles, socio, states, naics, iso, plus federal: sbir, screened, gsamas, fedramp, primes) in meta.facets.1 or 0 (true/false also accepted)

Lists accept commas or repeated parameters. Unknown parameters and malformed values return 400 invalid_request naming the parameter, so a typo never silently widens your results. The CSV export takes the same filters plus limit (up to 1,000 rows) instead of page.

GET/api/v1/contractors.csv

Export search results as CSV

The same filters as /contractors, exported as one CSV file (up to 1,000 rows, one query) for CRM and spreadsheet import.

  • API key
  • Counts 1 query
  • Enterprise Capture
  • CSV
Shellcurl example for Export search results as CSV
curl -sS "https://teamingindex.com/api/v1/contractors.csv?socio=SDVOSB&cmmc=L2&limit=500" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -o teamingindex-contractors.csv
GET/api/v1/contractors/{uei}

Contractor profile

Full profile by SAM UEI: compliance posture with provenance, vehicles, past performance, capabilities and BD contact. NDA rules apply exactly as in the app: the exact SPRS score and CMMC certificate ID appear only for your own organization or a mutual NDA counterparty.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Contractor profile
curl -sS "https://teamingindex.com/api/v1/contractors/TQ7M2KXR4LJ9" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
GET/api/v1/contractors/{uei}/capability.md

Capability statement (Markdown)

The Markdown capability twin of a profile (YAML front matter + sections), ready for LLM context windows and RAG pipelines. Identical to the public /contractor/{uei}/capability.md page.

  • API key
  • Counts 1 query
  • Markdown
Shellcurl example for Capability statement (Markdown)
curl -sS "https://teamingindex.com/api/v1/contractors/TQ7M2KXR4LJ9/capability.md" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

Vehicles

GET/api/v1/vehicles

Contract vehicles

Every GWAC, MAC, IDIQ, GSA Schedule and OTA consortium in the catalog with distinct holder, prime-holder and verified-holder counts.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Contract vehicles
curl -sS "https://teamingindex.com/api/v1/vehicles" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
GET/api/v1/vehicles/{slug}

Vehicle holders

One vehicle with its holders: contract number, pools/SINs, role, verification, CMMC and blind SPRS bracket. Filter by role (prime, subcontractor, joint_venture, mentor_protege).

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Vehicle holders
curl -sS "https://teamingindex.com/api/v1/vehicles/oasis-plus?role=prime&limit=50" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

NAICS

GET/api/v1/naics

NAICS codes in the index

Every six-digit NAICS code present in the index with contractor counts and titles.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for NAICS codes in the index
curl -sS "https://teamingindex.com/api/v1/naics" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
GET/api/v1/naics/{code}

NAICS industry directory

Contractors listing a NAICS code (primary holders first), small-under-this-code counts and co-listed industries.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for NAICS industry directory
curl -sS "https://teamingindex.com/api/v1/naics/541512?pageSize=50" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

Recompetes

GET/api/v1/recompetes

Recompete Radar

Expiring incumbent awards from USAspending (default window: next 18 months) with agency, NAICS, set-aside and text filters. Enterprise Capture sees everything; Verified Pro tracks its primary NAICS; preview plans see the top rows.

  • API key
  • Counts 1 query
  • Full radar: Enterprise Capture
  • JSON
Shellcurl example for Recompete Radar
curl -sS "https://teamingindex.com/api/v1/recompetes?naics=541512&to=12&sort=value_desc" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

Teaming Board

GET/api/v1/opportunities

Open teaming opportunities

Open RFP Teaming Board posts (response deadline today or later). Gap descriptions, gates and the posting company are included for plans with board details.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Open teaming opportunities
curl -sS "https://teamingindex.com/api/v1/opportunities?naics=5415&seeking=subcontractor" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

Live RFPs

GET/api/v1/rfps

Live SAM.gov opportunities

Open SAM.gov contract opportunities (solicitations, sources sought, presolicitations) with NAICS, set-aside, notice type, state and deadline filters. Soonest deadline first.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for Live SAM.gov opportunities
curl -sS "https://teamingindex.com/api/v1/rfps?naics=541512,541519&setAside=SDVOSB&dueWithinDays=30" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"
GET/api/v1/rfps/{noticeId}

One SAM.gov opportunity

A single notice by SAM.gov notice ID, with links to create a teaming post, start a bid team or analyze it with AI.

  • API key
  • Counts 1 query
  • JSON
Shellcurl example for One SAM.gov opportunity
curl -sS "https://teamingindex.com/api/v1/rfps/a1b2c3d4e5f60718293a4b5c6d7e8f90" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY"

AI analyst

POST/api/v1/ai/analyze

Run an AI analysis

Runs one Intelligence Hub task (teaming analysis, partner shortlist, RFP fit, compliance matrix, proposal section, recompete brief...) grounded in TeamingIndex data and returns the saved report. Uses one AI credit (bring-your-own-key Enterprise organizations are not capped).

  • API key
  • Counts 1 query
  • AI credits by plan
  • JSON
Shellcurl example for Run an AI analysis
curl -sS -X POST "https://teamingindex.com/api/v1/ai/analyze" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{"kind":"rfp_analysis","noticeId":"a1b2c3d4e5f60718293a4b5c6d7e8f90","instructions":"Focus on CMMC Level 2 flow-down and small-business teaming options."}'

RESPONSE FORMAT

Predictable JSON envelopes

Success is { "data": …, "meta": … }; errors are { "error": { … } }. Keyed responses are never cached (Cache-Control: no-store) because they depend on your organization.

JSONExample: GET /api/v1/contractors (abridged)
{
  "data": [
    {
      "uei": "TQ7M2KXR4LJ9",
      "cageCode": "8Z4K1",
      "legalBusinessName": "Example Aerospace Systems, LLC",
      "city": "Huntsville",
      "state": "AL",
      "primaryNaics": "541512",
      "socioEconomic": [
        "SB",
        "SDVOSB"
      ],
      "tier": "verified_pro",
      "cmmcShortLabel": "L2 C3PAO",
      "sprsHighestThreshold": 85,
      "sprsOnFile": true,
      "fcl": {
        "visible": false
      },
      "vehicles": [
        {
          "slug": "oasis-plus",
          "role": "prime"
        }
      ],
      "samStatus": "active",
      "hasActiveExclusion": false,
      "urls": {
        "profile": "https://teamingindex.com/contractor/TQ7M2KXR4LJ9",
        "capabilityMarkdown": "https://teamingindex.com/contractor/TQ7M2KXR4LJ9/capability.md",
        "api": "https://teamingindex.com/api/v1/contractors/TQ7M2KXR4LJ9"
      }
    }
  ],
  "meta": {
    "total": 37,
    "page": 1,
    "pageSize": 20,
    "pageCount": 2,
    "links": {
      "self": "https://teamingindex.com/api/v1/contractors?cmmc=L2C3PAO&sprs=85&naics=541512",
      "next": "https://teamingindex.com/api/v1/contractors?cmmc=L2C3PAO&sprs=85&naics=541512&page=2",
      "prev": null
    },
    "query": "cmmc=L2C3PAO&sprs=85&naics=541512",
    "directoryUrl": "https://teamingindex.com/directory?cmmc=L2C3PAO&sprs=85&naics=541512",
    "engine": "typesense",
    "tookMs": 12
  }
}

Reading responses

  • Lists return meta.total, page, pageSize, pageCount and absolute meta.links (self, next, prev). Follow next until it is null.
  • Dates are ISO 8601: YYYY-MM-DD for calendar dates, UTC timestamps otherwise. Money is a decimal string such as "1250000.00", so no precision is lost.
  • SPRS is a blind bracket: sprsHighestThreshold: 85 means a score of at least 85. An exact score appears only as compliance.sprs.exactScore, always next to revealReason (public, owner or nda).
  • Every compliance badge carries its provenance: verified by TeamingIndex, self-attested by the contractor, or synced from SAM.gov or USAspending, with dates. Treat self-attested facts as unverified until you confirm them.
  • Markdown and CSV endpoints return the raw document on success; errors are always JSON. Every REST and MCP response carries an X-Request-Id.
  • The v1 contract only grows: new endpoints, parameters and fields can appear at any time, so ignore fields you do not recognize.

ERRORS

Error codes

Branch on error.code, not on the message. invalid_request errors list every problem in details, each with the parameter name.
JSONExample: 400 invalid_request
{
  "error": {
    "code": "invalid_request",
    "message": "Invalid parameter \"cmmc\": Use one of L1, L2, L2C3PAO, L3.",
    "details": [
      {
        "param": "cmmc",
        "message": "Use one of L1, L2, L2C3PAO, L3."
      }
    ],
    "docs": "https://teamingindex.com/developers#errors"
  }
}

The MCP server answers with JSON-RPC error objects instead; error.data.code carries the same code. The AI analysis endpoint uses a smaller envelope, { "error": { "code", "message" } }, described in its own section.

REST API error codes
CodeHTTPMeaning and what to do
invalid_request400A parameter is missing, malformed or unknown. `details` lists every problem with the parameter name.
missing_api_key401No API key was sent. Send it as "Authorization: Bearer ti_live_…" (or the x-api-key header).
invalid_api_key401The key is malformed or unknown, or a ti_test_ key was used in production.
revoked_api_key401The key was revoked in the dashboard. Create a new key and update your integration.
api_access_not_included403Your organization's plan does not include API or MCP access (Verified Pro and Enterprise Capture do).
plan_upgrade_required403This endpoint or filter needs a higher plan, for example CSV export or the full Recompete Radar.
not_found404Nothing exists at that UEI, slug, NAICS code or path.
method_not_allowed405The HTTP method is not supported on this path (see the Allow header).
payload_too_large413The request body is larger than the endpoint accepts.
rate_limited429Burst limit reached (60 requests per minute per key). Wait for Retry-After seconds, then retry.
quota_exceeded429The monthly query quota is used up. It resets at the start of the next UTC month (X-RateLimit-Reset).
internal_error500Something failed on our side. Retry with exponential backoff and quote the X-Request-Id to support.
feature_disabled503TeamingIndex operations temporarily switched this surface off. Retry later.
maintenance503Scheduled maintenance. Retry after the Retry-After seconds.

RATE-LIMIT HEADERS

Know where you stand on every response

Every keyed response, including MCP tool calls, reports your organization's quota in standard headers.
Rate-limit and request headers
HeaderMeaning
X-RateLimit-LimitYour organization’s monthly query quota.
X-RateLimit-RemainingQueries left this month after this request.
X-RateLimit-ResetUnix time (seconds) when the quota resets: the start of the next UTC month.
Retry-AfterSeconds to wait before retrying (429 and 503 responses).
X-Request-IdUnique id of a REST or MCP request. Quote it when you contact support.
HTTPExample response headers
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: no-store
X-RateLimit-Limit: 15000
X-RateLimit-Remaining: 13050
X-RateLimit-Reset: 1796083200
X-Request-Id: 7d1f4c2a-5b3e-4e8a-9c61-2f0b8d4e6a13

# Monthly quota used up:
HTTP/1.1 429 Too Many Requests
Retry-After: 86400
X-RateLimit-Limit: 15000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1796083200

{"error":{"code":"quota_exceeded","message":"Monthly API quota of … queries reached …","docs":"…/developers#errors"}}

Retrying well

  • 429 rate_limited: you exceeded the per-key burst limit. Wait for Retry-After seconds; no quota was used.
  • 429 quota_exceeded: the month’s quota is used up. Requests succeed again after X-RateLimit-Reset, or sooner after an upgrade.
  • 5xx: retry with exponential backoff and jitter (for example 1 s, 2 s, 4 s, 8 s, then stop) and quote the X-Request-Id if it persists.
  • Watch X-RateLimit-Remaining in your client and slow down before it reaches zero.

MCP SERVER

Connect Claude and other AI agents

The Model Context Protocol server gives AI agents the same data as the REST API through ten read-only tools. It uses the same organization key.
Endpoint
https://teamingindex.com/api/mcp
Transport
Streamable HTTP, stateless, JSON responses. POST only: GET and DELETE return 405 because there are no sessions or event streams.
Authentication
Header Authorization: Bearer ti_live_… (or x-api-key), the same key as REST.
Metering
Each tools/call counts one query. initialize, tools/list and ping are free (up to 120 per minute per key). Send one tools/call per HTTP request.

Set up your client

Claude Desktop

Claude Desktop reaches key-authenticated remote servers through the open-source mcp-remote bridge (Node.js 18 or later). Open Settings → Developer → Edit Config, add the entry below with your key, save, and restart Claude Desktop.

JSONclaude_desktop_config.json
{
  "mcpServers": {
    "teamingindex": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://teamingindex.com/api/mcp",
        "--header",
        "Authorization:${TEAMINGINDEX_AUTH_HEADER}"
      ],
      "env": {
        "TEAMINGINDEX_AUTH_HEADER": "Bearer ti_live_YOUR_API_KEY"
      }
    }
  }
}

Claude Code

Add the server from a terminal, or commit a project .mcp.json that reads the key from the environment.

Shellclaude mcp add command
claude mcp add --transport http teamingindex https://teamingindex.com/api/mcp \
  --header "Authorization: Bearer $TEAMINGINDEX_API_KEY"
JSON.mcp.json for Claude Code
{
  "mcpServers": {
    "teamingindex": {
      "type": "http",
      "url": "https://teamingindex.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${TEAMINGINDEX_API_KEY}"
      }
    }
  }
}

Claude API (MCP connector)

Let Claude call TeamingIndex tools directly from a Messages API request. Send it with the anthropic-beta: mcp-client-2025-11-20 header; authorization_token is forwarded to TeamingIndex as the Bearer key, so keep this request on your server.

JSONMessages API request body with the MCP connector
{
  "model": "claude-opus-5-5",
  "max_tokens": 16000,
  "mcp_servers": [
    {
      "type": "url",
      "url": "https://teamingindex.com/api/mcp",
      "name": "teamingindex",
      "authorization_token": "ti_live_YOUR_API_KEY"
    }
  ],
  "tools": [
    {
      "type": "mcp_toolset",
      "mcp_server_name": "teamingindex"
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": "Find SDVOSB firms with CMMC Level 2 (C3PAO) and SPRS >= 85 under NAICS 541512."
    }
  ]
}

Other MCP clients and custom connectors

Any client that speaks Streamable HTTP and can send a request header works: point it at the endpoint and add the Authorization header. Field names vary by client.

TeamingIndex authenticates with organization API keys, not OAuth. If a client only offers an OAuth sign-in for remote servers, connect it through the mcp-remote bridge shown for Claude Desktop.

JSONGeneric MCP client configuration
{
  "mcpServers": {
    "teamingindex": {
      "url": "https://teamingindex.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ti_live_YOUR_API_KEY"
      }
    }
  }
}

Try it from a terminal

Each request is independent, so you can list tools or call one without a session. Only the last request counts against your quota.

ShellMCP initialize
curl -sS "https://teamingindex.com/api/mcp" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
ShellMCP tools/list
curl -sS "https://teamingindex.com/api/mcp" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
ShellMCP tools/call search_contractors
curl -sS "https://teamingindex.com/api/mcp" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_contractors","arguments":{"cmmc":"L2C3PAO","sprs":85,"naics":["541512"],"socio":["SDVOSB"]}}}'

Tools

  • Search contractors

    search_contractors

    Faceted directory search by CMMC level, blind SPRS bracket, vehicle, socio-economic status and NAICS (clearance on paid plans).

    Try asking: Find SDVOSB firms with CMMC Level 2 (C3PAO) and SPRS ≥ 85 under NAICS 541512 that hold OASIS+.

    What the agent reads: full description of search_contractors

    Search the TeamingIndex directory of federal, defense and aerospace contractors to find teaming partners or subcontractors. Combine free text (capabilities, company name, UEI, CAGE) with compliance filters: minimum CMMC 2.0 level (L2C3PAO = Level 2 assessed by a C3PAO), minimum blind SPRS bracket, facility clearance (keys on paid plans only; other keys get a notice and unfiltered results, and every company shows "Facility clearance: visible to paid members"), ITAR/EAR, contract vehicles (slug, optionally with a role such as "oasis-plus.prime"), socio-economic status (SDVOSB, 8A, HUBZONE, WOSB...), NAICS codes or prefixes, small-business size under a NAICS, ISO/AS certifications, state, claimed or verified-only. Returns 20 companies per page with UEI, CMMC and SPRS bracket, clearance, vehicles, socio-economic status, SAM status and a profile URL. Entities with an active SAM exclusion or an expired/inactive registration are hidden unless includeInactive is true. SPRS is shown as a bracket ("SPRS ≥ 85"), never a raw score unless the contractor published it. Next steps: get_contractor_profile for one company, evaluate_team_fit to check several against a solicitation.

  • Get contractor profile

    get_contractor_profile

    The Markdown capability statement of one UEI plus key facts, each with its provenance.

    Try asking: Pull the capability statement for UEI TQ7M2KXR4LJ9 and summarize its past performance with the Air Force.

    What the agent reads: full description of get_contractor_profile

    Get one contractor's capability statement by SAM.gov UEI. Returns the Markdown capability twin (identifiers, location, NAICS and size, socio-economic status, SAM registration and exclusion screening, CMMC/SPRS/FCL/ITAR/ISO posture, contract vehicles, past performance, capabilities, teaming preferences, BD contact, corporate hierarchy) followed by key facts as JSON. Every compliance fact carries its provenance: verified by TeamingIndex, self-attested by the contractor, or from SAM.gov/USAspending, with dates. Self-attested facts are not verified; tell the user to confirm them before award. Exact SPRS scores appear only when the contractor published them.

  • List contract vehicles

    list_contract_vehicles

    GWACs, IDIQs, GSA MAS and OTA consortia in the catalog with holder and prime-seat counts.

    Try asking: Which GWACs and OTA consortia does TeamingIndex track, and how many primes hold each?

    What the agent reads: full description of list_contract_vehicles

    List the contract vehicles in the catalog (GWACs such as OASIS+, Alliant 3, CIO-SP4 and SEWP VI, GSA MAS, IDIQs, Other Transaction programs such as DIU, SpEC and C5, and the AFWERX and SpaceWERX SBIR/STTR programs) with managing agency, ceiling, ordering-period end and how many companies hold each (total, prime seats, verified holdings). Use a vehicle slug with get_vehicle_holders, or as the vehicles filter of search_contractors.

  • Get vehicle holders

    get_vehicle_holders

    Who holds a vehicle, in which role and pool, with CMMC, SPRS bracket and exclusion status.

    Try asking: Who holds a prime seat on SEWP VI and is HUBZone certified?

    What the agent reads: full description of get_vehicle_holders

    List the companies that hold a contract vehicle (slug from list_contract_vehicles), optionally only one role (prime, subcontractor, joint_venture, mentor_protege): contract number, pools or SINs, whether TeamingIndex verified the holding, CMMC status, blind SPRS bracket, facility clearance (keys on paid plans only), socio-economic status and SAM/exclusion status. Primes first, then verified holdings; entities with an active exclusion are flagged and listed last.

  • Get NAICS directory

    get_naics_directory

    Companies registered under a six-digit NAICS code, who is small under it, and adjacent codes.

    Try asking: Show companies under NAICS 336414 and which of them are small under that code.

    What the agent reads: full description of get_naics_directory

    List contractors that register a six-digit NAICS code (primary-NAICS holders first, then plan weight and obligations), with how many SAM.gov reports as small under that code (what a small-business set-aside requires) and the NAICS codes most often co-listed by these companies (adjacent industries for teaming). Entities with an active exclusion or inactive SAM registration are hidden unless includeInactive is true.

  • Find recompetes

    find_recompetes

    Expiring incumbent awards from USAspending, with the incumbent, value and recompete date.

    Try asking: What Army IT services contracts under 541512 expire in the next 12 months, and who are the incumbents?

    What the agent reads: full description of find_recompetes

    Find expiring federal awards from USAspending to position a team before the recompete: incumbent (UEI, socio-economic status, SAM/exclusion status), agency and office, NAICS, set-aside program, obligated and base-plus-options value, the recompete date (potential end of performance, else current end) and months remaining. Default window: today to 18 months ahead (fromMonths/toMonths change it). Depth depends on the plan of the API key: Enterprise Capture sees every NAICS, Verified Pro its primary NAICS only, other plans a short preview.

  • List teaming opportunities

    list_teaming_opportunities

    Open RFP Teaming Board posts where primes and subs advertise teaming gaps.

    Try asking: Are any primes looking for subcontractors with an FCL for Navy work right now?

    What the agent reads: full description of list_teaming_opportunities

    List open posts on the TeamingIndex RFP Teaming Board, where primes and subcontractors advertise teaming gaps for specific solicitations: title, agency, NAICS, roles sought and response deadline. On plans with board details, also the gap description, solicitation number, required gates (CMMC level, minimum SPRS, facility clearance, ITAR, vehicles, socio-economic status, technical tags), workshare estimate and the posting company.

  • Search live RFPs

    search_live_rfps

    Open SAM.gov solicitations and sources-sought notices by NAICS, set-aside and deadline.

    Try asking: Find open SDVOSB set-aside solicitations for cybersecurity due in the next 30 days.

    What the agent reads: full description of search_live_rfps

    Search open federal contract opportunities from SAM.gov (solicitations, combined synopsis/solicitations, sources sought, presolicitations) by keyword, NAICS codes or prefixes, set-aside (SB, 8A, HUBZONE, SDVOSB, WOSB, EDWOSB, VOSB, or NONE for full and open), notice type, place-of-performance state, agency, days until the response deadline and posting recency. Soonest deadline first. Each result includes the SAM.gov link and TeamingIndex links to create a teaming post, start a bid team or run an AI analysis.

  • Evaluate team fit

    evaluate_team_fit

    Gate-by-gate eligibility and a 0-100 fit score for up to 25 candidate partners.

    Try asking: Check these three UEIs against a CMMC Level 2, Secret FCL, SDVOSB set-aside under 541330 and rank them.

    What the agent reads: full description of evaluate_team_fit

    Check up to 25 candidate partners (SAM UEIs) against a solicitation's requirements and rank them. Hard gates: SAM registration, exclusions, CMMC level and third-party assessment, minimum SPRS (evaluated on blind brackets, plus DFARS 252.204-7019 assessment currency), facility clearance, ITAR registration, contract vehicle, socio-economic status and size under a NAICS. Soft fit: NAICS, technical tags, past performance with the agency, verification, location and teaming availability. Each result has eligible, a 0-100 score, gate-by-gate results with who vouches for each fact, strengths and risks ('unknown' means confirm before teaming, not a failure). Planning aid: confirm facts with the partner before teaming.

  • Check limitations on subcontracting

    check_limitations_on_subcontracting

    FAR 52.219-14 workshare math for a set-aside team, member by member.

    Try asking: On an 8(a) services set-aside, can we give 45% to a large sub and 20% to another 8(a) firm?

    What the agent reads: full description of check_limitations_on_subcontracting

    Test a proposed workshare split against FAR 52.219-14 Limitations on Subcontracting (13 CFR 125.6) for a set-aside: at most 50% (services, supplies), 85% (general construction) or 75% (special trade construction) of the amount paid may go to subcontractors that are not similarly situated. Give the work type, set-aside program, solicitation NAICS and each member with role and workshare percent. Members with a UEI are looked up in SAM data (socio-economic status, size by NAICS) to decide whether they are similarly situated; members without one need name, socio and smallFor. Returns compliant (true/false, or null when it depends on unknown facts), shares by category, margin under the limit and per-member reasoning. Planning aid, not legal advice.

Built for agents, private by default

  • Exact SPRS scores never leave through MCP, not even your own or an NDA counterparty's: agents may pass results to other models. Scores a contractor published are included.
  • CMMC certificate IDs are never sent. Team-fit gates evaluate SPRS on blind brackets.
  • Free-text arguments pass the Zero-CUI guard; a tool answers with an error instead of searching on marked text.
  • Every tool is read-only: agents can look things up but never change your profile, posts or teams.

AI ANALYSIS API

Run grounded AI analyses from your systems

POST /api/v1/ai/analyze runs one Intelligence Hub task with Claude, grounded in TeamingIndex data, and returns the saved report. The same reports appear in the Intelligence Hub.

Endpoint
POST https://teamingindex.com/api/v1/ai/analyze
Body
JSON (Content-Type: application/json), at most 512 KiB.
Timing
Not streamed: the request returns when the analysis finishes, which can take a few minutes. Set a client timeout of at least five minutes.
Metering
One API query plus one AI credit per analysis. Enterprise organizations on their own Anthropic key are not capped on credits.
Shellcurl example for Run an AI analysis
curl -sS -X POST "https://teamingindex.com/api/v1/ai/analyze" \
  -H "Authorization: Bearer $TEAMINGINDEX_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 300 \
  -d '{"kind":"rfp_analysis","noticeId":"a1b2c3d4e5f60718293a4b5c6d7e8f90","instructions":"Focus on CMMC Level 2 flow-down and small-business teaming options."}'
JSONExample response (abridged)
{
  "report": {
    "id": "3c9e1b52-8f0a-4d7e-a6b1-5e2f9c0d4a77",
    "kind": "rfp_analysis",
    "title": "RFP fit analysis: Enterprise cyber operations support",
    "status": "completed",
    "model": "claude-opus-5-5",
    "usedOwnKey": false,
    "inputTokens": 18432,
    "outputTokens": 2911,
    "createdAt": "2026-11-08T15:04:05.000Z",
    "completedAt": "2026-11-08T15:05:41.000Z",
    "inputRefs": {
      "noticeId": "a1b2c3d4e5f60718293a4b5c6d7e8f90"
    },
    "prompt": "Focus on CMMC Level 2 flow-down and small-business teaming options.",
    "outputMarkdown": "## Bid / no-bid summary\n…",
    "outputJson": null,
    "errorMessage": null
  }
}

Analysis kinds

AI analysis kinds and their inputs
AnalysiskindRequiredOptional
Teaming analysisScore candidate partners against a pursuit and recommend a compliant team structure.teaming_analysisNoneopportunityId, noticeId, workspaceId, targetUeis, instructions
Best companies to team withRank the best-fit partners in the index for your pursuit, with gate checks and gaps each one fills.partner_shortlistNoneopportunityId, noticeId, workspaceId, instructions
RFP fit analysisBid/no-bid view of a live solicitation: requirements, gates, gaps, competition and teaming needs.rfp_analysisNonenoticeId, opportunityId, sourceText, instructions
Proposal section draftFirst draft of a proposal section grounded in your profile, past performance and the requirement.proposal_sectionsectionnoticeId, opportunityId, workspaceId, sourceText, instructions
Compliance matrixTurn pasted Section L/M (or a PWS) into a requirement-by-requirement compliance matrix.compliance_matrixsourceTextnoticeId, instructions
Past performance analysisWhich awards to cite (recency, relevance, size, scope), how to write them up, and what is missing.past_performanceNonenoticeId, opportunityId, awardPiid, instructions
Recompete briefIncumbent position, timeline, likely acquisition strategy and a capture plan for an expiring award.recompete_briefawardPiidinstructions
Capability statement narrativeSharpen your capability summary and differentiators from your verified profile data.capability_narrativeNoneinstructions
Teaming pitch / NDA requestDraft a concise pitch or NDA request to a prime or partner, grounded in fit and past performance.pitch_draftNoneopportunityId, noticeId, targetUeis, instructions

Request fields

AI analysis request fields
FieldTypeDescription
kindstring, requiredThe analysis to run (table below).
noticeIdstringSAM.gov notice ID from GET /rfps: grounds the analysis in a live solicitation.
opportunityIdUUIDTeaming Board post id from GET /opportunities.
awardPiidstringAward PIID from GET /recompetes (required for recompete_brief).
workspaceIdUUIDOne of your Team Builder workspaces: the analysis uses its members and gate results.
targetUeisstring[] (max 15)Specific companies to assess, by SAM.gov UEI.
sectionstringProposal section for proposal_section: executive_summary (Executive summary), technical_approach (Technical approach), management_approach (Management approach), staffing_plan (Staffing & key personnel), past_performance_volume (Past performance volume), quality_control (Quality control plan), transition_plan (Transition / phase-in plan), small_business_participation (Small business participation plan).
sourceTextstring (max 60,000)Public solicitation text you paste, such as Section L/M or a PWS excerpt (required for compliance_matrix).
instructionsstring (max 4,000)Extra direction for the analyst, such as the focus or the audience.

AI errors

AI analysis error codes
CodeHTTPMeaning
invalid_input400The body is not valid JSON, does not match the fields above, misses a field the kind requires, or is too long (413).
forbidden403The plan does not include AI analyses, or the organization profile is not claimed.
not_found404A referenced notice, post, award or workspace does not exist or is not yours.
cui_detected422The Zero-CUI guard found CUI, classification or export-control markings in sourceText or instructions. Nothing was sent.
refused422The model declined the request. Rephrase the instructions or remove unrelated text.
quota_exceeded429Monthly AI credits (or the API quota) are used up. Retry-After says when they reset.
rate_limited429Too many requests right now, from your key or at the model provider. Wait for Retry-After.
provider_error502The model provider failed or timed out. Retry with backoff.
ai_disabled503The AI analyst is temporarily switched off. Saved reports stay available.
feature_disabled503The REST API is temporarily switched off.
no_api_key503The AI analyst is not configured on this environment yet.

Errors use { "error": { "code", "message" } }. Key problems pass through with the REST codes (missing_api_key, invalid_api_key, revoked_api_key, api_access_not_included).

Guardrails on every analysis

  • Prompts contain only TeamingIndex data (public-safe profile facts, match results, award and solicitation facts) plus text you send.
  • Private SPRS scores are never sent to the model; it sees blind brackets only.
  • Recommendations may name only organizations from the candidate list the platform supplied, so the analyst cannot invent partners.
  • sourceText and instructions are screened for CUI, classification and export-control markings before anything is sent. Paste public solicitation text only.
  • Reports are planning aids: verify facts with partners and the solicitation before you rely on them.

AGENT CONVENTIONS

llms.txt, capability.md and JSON-LD

Public, key-free formats for crawlers and AI research tools. Use them for discovery and citations; use the API when you need filters, NDA-aware data or volume.
PUBLIC

/llms.txt

A plain-text guide written for AI agents (llmstxt.org format): what TeamingIndex is, how to build directory searches, profile and Markdown URL patterns, provenance and SPRS privacy rules, and links to the REST API, the OpenAPI document and the MCP server.
PUBLIC

/contractor/{UEI}/capability.md

Every profile has a raw Markdown twin with YAML front matter and fixed sections, ready for context windows and RAG pipelines. It states the same facts as the profile's JSON-LD, the same for every reader: exact SPRS only when published, never BD email or phone. Example: https://teamingindex.com/contractor/TQ7M2KXR4LJ9/capability.md
EMBEDDED

schema.org JSON-LD

Each server-rendered profile page embeds schema.org Organization and EducationalOccupationalCredential JSON-LD that states the same facts as its Markdown twin, so search engines and answer engines read what people see.
PUBLIC

/api/v1 and /api/v1/openapi.json

The JSON index lists every endpoint, plan limits and links; the OpenAPI 3.1 document describes every parameter, field and error. Import it into Postman, Insomnia or a client generator. Neither needs a key or counts against quota.

Citation and privacy rules for agents

  • Identify companies by their 12-character SAM.gov UEI and cite the profile URL when you present one.
  • Present SPRS as the bracket you were given (for example "SPRS ≥ 85"). Never estimate or infer an exact score.
  • Say who vouches for a fact: verified by TeamingIndex, self-attested by the contractor, or synced from SAM.gov or USAspending.
  • Treat entities with an active SAM exclusion as ineligible to team, and tell users to confirm facts before award.

CHANGELOG

What changed

The v1 contract only grows: new endpoints, parameters and fields. A breaking change would ship under a new version path and be announced here first.
  1. v1.0: Initial release

    • REST API v1 with 16 endpoints, OpenAPI 3.1 document and a public JSON index.
    • MCP server (Streamable HTTP) with 10 read-only tools, metered per tool call.
    • AI analysis endpoint for every Intelligence Hub task, metered in AI credits.
    • Enterprise Capture CSV export of directory searches (up to 1,000 rows per file).

Ready to build?

Create a key in your dashboard and make your first call in minutes. API and MCP access come with Verified Pro and Enterprise Capture.

Developers: REST API & MCP Server | TeamingIndex