SpendQuery

US federal spending, contracts, SAM.gov notices, FAR clauses and SBIR awards, in plain English.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
91%
Naming quality
92%
Poisoning risk
80%
Permission match
90%
Protocol compliance
100%

Findings (6)

  • HIGHTool poisoning patterns detected
  • LOWTool 'size_standard' description lacks action verbin size_standard
  • LOWTool 'naics_finder' description lacks action verbin naics_finder
  • LOWTool 'get_far_section' description lacks action verbin get_far_section
  • LOWTool description contains role marker that could confuse chat modelsin get_notice
  • LOWTool 'browse_codes' suggests web access but openWorldHint=falsein browse_codes

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,878Tokens (tool definitions)
~1.6 KBTypical response size
Significant attention impact (3.03% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "spendquery": {
      "url": "https://api.spendquery.com/mcp"
    }
  }
}

Remote endpoints

https://api.spendquery.com/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_catalog(section)

What SpendQuery can answer: data coverage, metrics, dimensions (with examples and whether they apply to contracts or assistance), analyses, the QueryPlan JSON schema, planning rules and example question -> plan pairs. Call this first (no arguments): the federal catalog. section: "states" (state, county and city checkbooks in brief: each jurisdiction, their dimensions, rules and examples), "state:<CODE>" (one jurisdiction in full, e.g. "state:MA"), "rules" (every planning rule), "examples" (every worked example) or "full" (everything).

Input Schema

{
  "type": "object",
  "properties": {
    "section": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Omit for the federal catalog. \"states\" (state, county and city checkbooks in brief), \"state:<CODE>\" for one jurisdiction in full (e.g. \"state:MA\"), \"rules\", \"examples\" or \"full\".",
      "title": "Section"
    }
  },
  "title": "get_catalogArguments"
}
🟢run_plan(plan)

Run a QueryPlan (see get_catalog.plan_schema). Returns status (ok | clarify | unsupported | error), a one-paragraph answer, columns, rows (max 100), the SQL that ran, caveats and how names were resolved to codes.

Input Schema

{
  "type": "object",
  "properties": {
    "plan": {
      "additionalProperties": true,
      "description": "A QueryPlan object in business terms, following get_catalog's plan_schema, e.g. {\"intent\": \"aggregate\", \"metric\": \"obligations\", \"group_by\": [\"agency\"], \"fiscal_years\": [2025], \"filters\": [{\"dimension\": \"award_category\", \"values\": [\"contract\"]}]}.",
      "title": "Plan",
      "type": "object"
    }
  },
  "required": [
    "plan"
  ],
  "title": "run_planArguments"
}
🟢search_codes(kind, query, limit)

Look up codes and official names. kind: agency | bureau | state | county | naics | psc | program. Matches names (substring, case-insensitive) or code prefixes. Plans can use either the names or the codes.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "description": "What to look up: agency, bureau (sub-agency), state, county, naics (industry), psc (product or service code) or program (Assistance Listing).",
      "enum": [
        "agency",
        "bureau",
        "state",
        "county",
        "naics",
        "psc",
        "program"
      ],
      "title": "Kind",
      "type": "string"
    },
    "query": {
      "description": "Words in the name, or the code itself, e.g. \"veterans affairs\", \"541511\", \"D302\".",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "description": "Most rows to return, 1-50.",
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "kind",
    "query"
  ],
  "title": "search_codesArguments"
}
🟢search_recipients(query, limit)

Find award recipients (companies, universities, governments) by name or UEI. Returns each registration's UEI, parent, listed-company ticker (if matched) and its OWN obligations across loaded years, largest first. A parent's money sits on its units, so a parent UEI's own obligations can be small or negative: for a company's total use run_plan with a company filter (name or ticker). A UEI that is a parent also returns parent_rollup (its units).

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "A company or recipient name, or a 12-character UEI, e.g. \"booz allen\" or \"ZFN2JJXBLZT3\".",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Most rows to return, 1-50.",
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "search_recipientsArguments"
}
🟢browse_codes(kind, group, query, fiscal_year, limit)

Browse what the government buys, with contract spend. kind: psc (products and services) | naics (industries). No group and no query -> the groups (PSC: services by letter, e.g. D = IT services, R = professional support; products by 2 digits, e.g. 84 = clothing and individual equipment; NAICS: 2-digit sectors), largest first. group -> the codes in it. query -> codes whose name contains the words. Default year: last complete fiscal year. Use a code or its name in a plan's psc / naics filter.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "default": "psc",
      "description": "psc (products and services) or naics (industries).",
      "enum": [
        "psc",
        "naics"
      ],
      "title": "Kind",
      "type": "string"
    },
    "group": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A group to list the codes in: a PSC letter or 2-character group (e.g. \"D\", \"84\") or a 2-digit NAICS sector (e.g. \"54\").",
      "title": "Group"
    },
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Words in a code's name, e.g. \"body armor\", \"janitorial\".",
      "title": "Query"
    },
    "fiscal_year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Federal fiscal year (October-September), e.g. 2025; default the last complete one.",
      "title": "Fiscal Year"
    },
    "limit": {
      "default": 50,
      "description": "Most rows to return, 1-200.",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "browse_codesArguments"
}
🟢get_notice(notice_id)

One SAM.gov contract notice as SpendQuery's brief sees it, no AI: the decision card (what the buyer needs, blockers, unknowns, a next step; each line labelled record / files / unknown), the timeline of the buy (planned buy, the contract it follows, earlier and newer notices, the award and the contract it became, each link confirmed / likely / possible) and what changed between versions of its public files. notice_id: from run_plan lists of contract_opportunities, or the id in a SAM.gov notice URL.

Input Schema

{
  "type": "object",
  "properties": {
    "notice_id": {
      "description": "A SAM.gov notice id: the 32-character hex id in a SAM.gov notice URL (sam.gov/opp/<id>/view) or from run_plan's contract_opportunities rows, e.g. \"0a1b2c3d4e5f60718293a4b5c6d7e8f9\".",
      "title": "Notice Id",
      "type": "string"
    }
  },
  "required": [
    "notice_id"
  ],
  "title": "get_noticeArguments"
}
🟢size_standard(query)

SBA small business size standards (13 CFR 121.201, the eCFR table): a NAICS code, a code prefix (5415) or industry words -> receipts ($ millions) or employees, exceptions and footnotes, and the programs that use them.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "A 6-digit NAICS code (e.g. \"541511\"), a code prefix (e.g. \"5415\") or industry words (e.g. \"custom software\").",
      "title": "Query",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "title": "size_standardArguments"
}
🟢naics_finder(description)

Describe the work in plain words -> the NAICS codes buyers actually use for it (codes on SAM.gov notices whose titles have the words and on federal contracts described with them), each with its SBA size standard.

Input Schema

{
  "type": "object",
  "properties": {
    "description": {
      "description": "The work in plain words, e.g. \"commercial janitorial and floor care\" or \"drone mapping surveys\".",
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "description"
  ],
  "title": "naics_finderArguments"
}
🟢vehicle_match(naics, agency)

For 6-digit NAICS codes (and an optional agency): the shared contract vehicles (GWACs, multiple-award IDIQs, GSA Schedule, BPAs) carrying last complete year's contract money in those codes, the share through each and who each is reserved for (read from its name).

Input Schema

{
  "type": "object",
  "properties": {
    "naics": {
      "description": "One or more 6-digit NAICS codes, e.g. [\"541511\", \"541512\"].",
      "items": {
        "type": "string"
      },
      "title": "Naics",
      "type": "array"
    },
    "agency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "An agency to limit to, by name or code, e.g. \"Department of Veterans Affairs\" or \"036\".",
      "title": "Agency"
    }
  },
  "required": [
    "naics"
  ],
  "title": "vehicle_matchArguments"
}
🟢search_far(query, reg)

Search the FAR and the DFARS (48 CFR chapters 1 and 2, as codified in the eCFR): sections whose title or text has every word, or a section number (e.g. 52.219-14) straight to it. reg: FAR | DFARS to limit. Returns section numbers, titles and a snippet; read one with get_far_section. The codified text lags the Revolutionary FAR Overhaul's class deviations.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Words that must all appear in the section's title or text (e.g. \"limitations on subcontracting\"), or a section number (e.g. \"52.219-14\").",
      "title": "Query",
      "type": "string"
    },
    "reg": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Limit to one regulation: FAR or DFARS; omit for both.",
      "enum": [
        "FAR",
        "DFARS",
        null
      ],
      "title": "Reg"
    }
  },
  "required": [
    "query"
  ],
  "title": "search_farArguments"
}
🟢get_far_section(section)

One FAR or DFARS section's full text (paragraphs), its part and subpart, the sections it refers to and the ones referring to it, and Federal Register rules changing its part. Cite it as FAR <section> (or DFARS) with the as-of date in source.

Input Schema

{
  "type": "object",
  "properties": {
    "section": {
      "description": "A FAR or DFARS section number, e.g. \"52.204-21\", \"19.502-2\" or \"252.204-7012\".",
      "title": "Section",
      "type": "string"
    }
  },
  "required": [
    "section"
  ],
  "title": "get_far_sectionArguments"
}
🟢search_local_bids(q, state, kind, source, limit)

State, county and city government bids and contracts (not federal awards), from the governments that publish them as open data: Los Angeles (the City, LA County, LADWP, LAUSD, airports, port, Metro), New York City, San Francisco, Washington DC, Chicago, Cook County, Austin, Detroit, Richmond, Sacramento, Baton Rouge, Montgomery County MD, Delaware, Texas DOT, California state departments (Cal eProcure), SUNY construction, E-Rate and others. kind: "open" (taking responses, soonest due first), "planned" (forecasts: TxDOT's planned lettings, Illinois CDB, San Diego County), "awarded" (contracts first awarded in the last year: who won, net amounts) or "current" (in force today, soonest ending first: the re-bids). q: words in the title or description; state: two-letter code (open and planned bids); source: one source key from the reply's sources. Coverage is partial: no tool has every state, county and city; say so when the place asked about isn't covered. Each row links to the government's own record (source_url).

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Words in the title or description, e.g. \"roofing\" or \"janitorial\".",
      "title": "Q"
    },
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Two-letter state code, e.g. \"TX\" (open and planned bids).",
      "title": "State"
    },
    "kind": {
      "default": "open",
      "description": "open (taking responses, soonest due first), planned (forecasts), awarded (contracts first awarded in the last year) or current (in force today, soonest ending first).",
      "enum": [
        "open",
        "planned",
        "awarded",
        "current"
      ],
      "title": "Kind",
      "type": "string"
    },
    "source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "One source key from the reply's sources, e.g. \"txdot\", \"nyc\", \"lacity\".",
      "title": "Source"
    },
    "limit": {
      "default": 25,
      "description": "Most rows to return, 1-50.",
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "search_local_bidsArguments"
}
🟢sbir_awards(agency, phase, program, state, q, ...)

SBIR and STTR awards since 1983 from SBA's SBIR.gov records, and who received them: totals, awards by year (Phase I / II), by agency, the companies with the most, and the latest awards (company, title, agency, phase, amount, year). Filters: agency (as SBIR.gov names it, e.g. "Department of Defense"), phase ("Phase I" or "Phase II"), program ("SBIR" or "STTR"), state (the winner's), q (words in the award title), company_uei, since (first award year). open_topics: also the SBIR/STTR solicitations open now (SAM.gov and Grants.gov). SBIR.gov counts awards by award year; USAspending (run_plan) counts money by fiscal year, so the two differ.

Input Schema

{
  "type": "object",
  "properties": {
    "agency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The awarding agency as SBIR.gov names it, e.g. \"Department of Defense\", \"National Science Foundation\".",
      "title": "Agency"
    },
    "phase": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The award phase: Phase I or Phase II.",
      "enum": [
        "Phase I",
        "Phase II",
        null
      ],
      "title": "Phase"
    },
    "program": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The program: SBIR or STTR.",
      "enum": [
        "SBIR",
        "STTR",
        null
      ],
      "title": "Program"
    },
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The winner's two-letter state code, e.g. \"VA\".",
      "title": "State"
    },
    "q": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Words in the award title, e.g. \"hypersonic\" or \"battery\".",
      "title": "Q"
    },
    "company_uei": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A winner's 12-character UEI, e.g. \"ZFN2JJXBLZT3\".",
      "title": "Company Uei"
    },
    "since": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "First award year to count, e.g. 2020.",
      "title": "Since"
    },
    "open_topics": {
      "default": false,
      "description": "Also list the SBIR/STTR solicitations open now (SAM.gov and Grants.gov).",
      "title": "Open Topics",
      "type": "boolean"
    }
  },
  "title": "sbir_awardsArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools