Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MatchAwards

PYPI · MATCHAWARDS-MCP · 2 COMPONENTS

Search US government contracts, grants and jobs from matchawards.com. Read-only, no key.

+4 this week 68 Trust /100

Last scanned (12 hours ago)

Scores higher than 67% of PyPI servers

Category CRM and Sales

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 31 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to matchawards/matchawards-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3018 tokens (~335/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 22 Oct 26 +4
    • Stability: unverified → 0.27 ▲ functional
  • 19 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 18 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 14 Oct 26 +30
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • First check of Destructive annotations: pass functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 100 functional
    • First check of Tool coverage: 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
  • 13 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.3.0 → 1.0.4 functional
    • Package version: 0.3.0 → 1.0.2 functional
  • 12 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 9 Oct 26 34

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Oct 2026 · Analysed pypi/matchawards-mcp@1.0.4

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo matchawards/matchawards-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/matchawards/matchawards-mcp/.github/workflows/publish.yml@refs/tags/v1.0.4
Rekor log index 3244978436
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:7bd192ef8a3c808e44e7bf7fd03e337ff71e238abbf59947b5ce61cb872ce8b7

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 31 packages
Packages resolved 31
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 9 exposed · ~2,821 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
assess_opportunity ~338

Use this when the user asks whether to bid on one opportunity, or wants a qualification brief on it: days left, set-aside, AI fit notes, similar past awards, the firms that typically win such work and the usual award value. Pass the id from a search result, and optionally my_naics (up to 10 codes) and my_set_aside to check the fit. Similar awards come from MatchAwards' award records for the same NAICS at the same agency, or at all agencies when that agency has none (basis says which); sample gives the dates covered and whether every matching record was read, so state that span rather than a longer one. Award records may be incomplete, so say so; ai text is AI-generated, so label it. Never call a firm the incumbent: these are firms that won similar work. Example: id="117412688283576625". Print url, sam_url and each award's url and source_url as markdown links. Do not use for searching (search_contracts, search_grants), for finding partners (find_teaming_partners) or for job postings.

NameTypeReqDescription
idstringyesThe id field of a search result.
my_naics––Up to 10 six-digit NAICS codes, comma-separated, e.g. '236220' or '541511,541512'. A record matches on its own codes (matched_naics says which). Unknown codes are ignored.
my_set_aside––The user's set-aside code, e.g. 'SBA' or 'SDVOSBC', to compare with the opportunity's.
NameTypeReqDescription
ai––AI-generated notes on this opportunity, or null. Label them as AI-generated when you show or quote them.
as_of–––
award_value_range––Quartiles of the similar awards' amounts (USD); null with fewer than 3 amounts.
basis––'same NAICS and agency', 'same NAICS, all agencies', or null (no NAICS).
coverage_note–––
naics_match––Whether the opportunity's NAICS is one of my_naics; null when my_naics was not given.
note–––
opportunity–yes–
sample–yes–
set_aside_match––Whether the opportunity is set aside for my_set_aside; null when it was not given. An opportunity without a set-aside is open to all firms.
similar_awardsarrayyesThe 5 newest similar awards.
typical_winnersarrayyesUp to 5 firms that won similar work, most awards first, then largest total.
warning––Set when the award lookup was cut short; the figures cover what was read.

No examples provided.

find_teaming_partners ~271

Use this when the user wants possible teaming partners, subcontractors or primes for one opportunity: firms that won similar awards in the same state or at the same agency. Pass the id from a search result, and optionally role (sub, prime or any). Returns up to 10 firms from MatchAwards' award records (same NAICS in the opportunity's state, then at its agency, else anywhere; sample gives the dates covered and whether every matching record was read), ranked by how many similar awards they won, each with a why line; get_company(uei) shows the history of a firm with a uei. No contact details. Award records may be incomplete, so say so; ai_subcontracting is AI-generated, so label it. Never call a firm the incumbent. Example: id="117412688283576625". Print the opportunity's url and sam_url as markdown links. Do not use for searching awards in general (search_awards), for one firm's history (get_company) or for job postings.

NameTypeReqDescription
idstringyesThe id field of a search result.
rolestring–sub: the user looks for subcontractors (smaller typical awards first among equals); prime: for a prime to join (larger first); any (default).
NameTypeReqDescription
ai_subcontracting––AI-generated notes on subcontracting angles for this opportunity, or null. Label them as AI-generated when you show them.
as_of–––
coverage_note–––
note–––
opportunity–yes–
partnersarrayyesUp to 10 firms that won similar work.
rolestringyes–
sample–yes–
warning––Set when the award lookup was cut short; the list covers what was read.

No examples provided.

get_company ~173

Use this when the user wants one firm's government award history and its UEI is known, e.g. from a search_awards row. Returns the firm's name and other spellings, location (city, state, country), totals for contract and grant awards, first and last award dates, top NAICS codes and agencies, and its 10 most recent awards. No contact details. Award records may be incomplete, so say so. Example: uei="C3KXNLTAAY98". Print each recent award's url and source_url as markdown links. Do not use for finding firms by name or NAICS (search_awards) or for contact details (none are available).

NameTypeReqDescription
ueistringyes12-character UEI, e.g. 'C3KXNLTAAY98'.
NameTypeReqDescription
as_of–––
coverage_note–––
duns–––
first_award_date–––
last_award_date–––
location–––
name–––
note–––
other_namesarray–Other spellings in award records.
recent_awardsarray–Up to 10, newest first.
top_agenciesarray––
top_naicsarray–From contract awards only.
totals–––
ueistringyes–

No examples provided.

get_opportunity ~172

Use this when the user wants the details of one search result, or who to contact about it. Pass the id from a search result. Returns the result's row plus its description (up to 2000 characters), published points of contact (name and title only) and, when MatchAwards has them, ai: AI-generated notes on fit, subcontracting and large-prime angles and a summary. AI text is AI-generated: label it as such whenever you quote it. Example: id="117402307943537453". Print url, and sam_url for federal notices, as markdown links. Do not use for searching (search_contracts, search_grants, search_jobs) or for contact details beyond the published names and titles.

NameTypeReqDescription
idstringyesThe id field of a search result.
NameTypeReqDescription
agency–––
agency_id––The agency's MatchAwards id.
ai––AI-generated notes on this opportunity, or null. Label them as AI-generated when you show or quote them.
ai_matched_naics––Only when you filtered by naics: requested codes this contract notice matched only because MatchAwards' AI suggested them, not its own codes. Call such a match AI-suggested.
as_of–––
city–––
contactsarray–Published points of contact; [] if none.
description––Up to 2000 characters.
idstringyesPass to get_opportunity for the description and contacts.
matched_naics––Only when you filtered by naics: the requested codes this record carries: its own code (in naics) or, for a grant or job, another code of its program or occupation.
naics––On state notices (type state) the naics code itself is AI-assigned.
no_fixed_deadline––true: the deadline is a placeholder date.
note–––
office–––
posted_at––Date, YYYY-MM-DD.
response_deadline––Date, YYYY-MM-DD; null if none.
sam_url––The SAM.gov notice (federal only). Show it as a markdown link.
set_aside–––
solicitation_number–––
state–––
title–––
type––federal, state, grant or job.
url––The posting on matchawards.com. Show it as a markdown link.

No examples provided.

lookup_naics ~196

Use this when the user describes a line of work in words and a NAICS code is needed, or asks what a code or code prefix covers. query is words (2 to 100 characters; common terms such as cybersecurity or janitorial list their usual codes first) or 2 to 6 digits (every six-digit code starting with them). limit is 1 to 25, default 10. Pass the codes as naics to search_contracts, search_grants, search_jobs or search_awards. Print each opportunities_url that is set as a markdown link. Do not use for searching opportunities or awards themselves (the search tools take the codes).

NameTypeReqDescription
limitinteger–Number of codes to return, 1 to 25.
querystringyesWords, e.g. 'cybersecurity', or the first 2 to 6 digits of a code, e.g. '5415'.
NameTypeReqDescription
as_of–––
note–––
resultsarrayyes–

No examples provided.

search_awards ~507

Use this when the user asks who won government contracts or grants: past awards by NAICS, agency, state, awardee name or UEI, with amounts and dates. Filters: type (contract_award, grant_award or any), naics (up to 10 codes), agency (a name; the note says which agency it matched), state, awardee (part of a name), uei, keyword (matched in the title; a grant award's title is its recipient's name), awarded_within_days (1 to 1095, default 365), limit (1 to 50, default 20). If has_more is true, call again with cursor=next_cursor and the same filters. Example: naics="541512", agency="Department of Veterans Affairs". Pass several NAICS codes in one call. Award records may be incomplete, so say so. Head a grant award with its awardee name and CFDA number, not its title. Pass an awardee's uei to get_company for its full history. Print each award's url and source_url as markdown links. Do not use for open opportunities to bid on (search_contracts, search_grants) or for one firm's history when its UEI is known (get_company).

NameTypeReqDescription
agency––Agency name, e.g. 'Department of Veterans Affairs'; matched to the closest MatchAwards agency, which the result note names.
awarded_within_daysinteger–Only awards from the last N days, 1 to 1095 (default 365).
awardee––Part of the awardee's name, 2 to 100 characters.
cursor––next_cursor from the previous response. Pass it with the same filters to get the next page.
keyword––2 to 100 characters matched against the title only.
limitinteger–Number of results to return, 1 to 50.
naics––Up to 10 six-digit NAICS codes, comma-separated, e.g. '236220' or '541511,541512'. A record matches on its own codes (matched_naics says which). Unknown codes are ignored.
state––Two-letter US state code of the place of performance.
typestring–contract_award (federal contracts), grant_award, or any (both).
uei––The awardee's 12-character UEI.
NameTypeReqDescription
as_of––When the API generated the results (ISO time).
has_morebooleanyestrue: call again with cursor=next_cursor and the same filters.
next_cursor–––
note–––
resultsarrayyes–
warning––Set when paging stopped early; the results so far are still valid.

No examples provided.

search_contracts ~504

Use this when the user wants US federal or state government contract opportunities to bid on: bids, RFPs, solicitations, set-asides. Filters: naics (up to 10 codes), state, keyword (title only), set_aside (federal only), type (federal or state), posted_within_days (1 to 180), open (default true), agency (a name; the note says which agency it matched), limit (1 to 50, default 20). If has_more is true, call again with cursor=next_cursor and the same filters. Example: naics="238160", state="VA", keyword="roof". Pass several NAICS codes in one call. Print each result's url, and sam_url for federal notices, as markdown links. Do not use for grants (search_grants), jobs (search_jobs) or one result's details (get_opportunity).

NameTypeReqDescription
agency––Agency name, e.g. 'Department of Veterans Affairs'; matched to the closest MatchAwards agency, which the result note names.
cursor––next_cursor from the previous response. Pass it with the same filters to get the next page.
keyword––2 to 100 characters matched against the title only.
limitinteger–Number of results to return, 1 to 50.
naics––Up to 10 six-digit NAICS codes, comma-separated, e.g. '236220' or '541511,541512'. A notice matches on its own codes (matched_naics says which), or through a code MatchAwards' AI suggested: that one…
open––true (the default): only items with a response deadline of today or later, US Eastern; an item with no deadline counts as closed. false: include closed ones.
posted_within_days––Only items posted in the last N days, 1 to 180 (default 180).
set_aside––Set-aside code, e.g. 'SBA' or 'SDVOSBC'. Federal contracts only.
state––Two-letter US state code, e.g. 'VA'. Many federal notices have no state, so this filter skips them.
type––Narrow to federal or to state contracts. Leave empty for both.
NameTypeReqDescription
as_of––When the API generated the results (ISO time).
has_morebooleanyestrue: call again with cursor=next_cursor and the same filters.
next_cursor–––
note–––
resultsarrayyes–
warning––Set when paging stopped early; the results so far are still valid.

No examples provided.

search_grants ~329

Use this when the user wants US federal grants or funding opportunities. Filters: naics (up to 10 codes), keyword (title only), posted_within_days (1 to 180), open (default true: open grants of any age), limit (1 to 50, default 20). Grant notices carry no state. If has_more is true, call again with cursor=next_cursor and the same filters. Example: keyword="broadband". Pass several NAICS codes in one call. Open status may lag for grants that closed recently, so check response_deadline. Print each result's url as a markdown link. Do not use for contracts to bid on (search_contracts) or jobs (search_jobs).

NameTypeReqDescription
cursor––next_cursor from the previous response. Pass it with the same filters to get the next page.
keyword––2 to 100 characters matched against the title only.
limitinteger–Number of results to return, 1 to 50.
naics––Up to 10 six-digit NAICS codes, comma-separated, e.g. '236220' or '541511,541512'. A record matches on its own codes (matched_naics says which). Unknown codes are ignored.
open––true (the default): only items with a response deadline of today or later, US Eastern; an item with no deadline counts as closed. false: include closed ones.
posted_within_days––Only items posted in the last N days, 1 to 180 (default 180).
NameTypeReqDescription
as_of––When the API generated the results (ISO time).
has_morebooleanyestrue: call again with cursor=next_cursor and the same filters.
next_cursor–––
note–––
resultsarrayyes–
warning––Set when paging stopped early; the results so far are still valid.

No examples provided.

search_jobs ~331

Use this when the user is looking for a job, or for hiring signals, among postings from the last 30 days. Filters: naics (up to 10 codes), state, keyword (title only), posted_within_days (posted within the last 1 to 30 days, default 30), limit (1 to 50, default 20). Rows carry title, agency (the employer), state, city, posted_at and url. If has_more is true, call again with cursor=next_cursor and the same filters. Example: keyword="electrician", state="TX". Pass several NAICS codes in one call. Print each result's url as a markdown link. Do not use for contracts (search_contracts) or grants (search_grants).

NameTypeReqDescription
cursor––next_cursor from the previous response. Pass it with the same filters to get the next page.
keyword––2 to 100 characters matched against the title only.
limitinteger–Number of results to return, 1 to 50.
naics––Up to 10 six-digit NAICS codes, comma-separated, e.g. '236220' or '541511,541512'. A record matches on its own codes (matched_naics says which). Unknown codes are ignored.
posted_within_daysinteger–Only jobs posted within the last N days, 1 to 30 (default 30).
state––Two-letter US state code, e.g. 'VA'. Many federal notices have no state, so this filter skips them.
NameTypeReqDescription
as_of––When the API generated the results (ISO time).
has_morebooleanyestrue: call again with cursor=next_cursor and the same filters.
next_cursor–––
note–––
resultsarrayyes–
warning––Set when paging stopped early; the results so far are still valid.

No examples provided.

Install

How do I install the MatchAwards MCP server?

MatchAwards runs locally as a PyPI package, launched with uvx matchawards-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · matchawards-mcp

# add to Claude Code
claude mcp add matchawards-matchawards-mcp -- uvx matchawards-mcp
Common questions

What is the MatchAwards MCP server?

MatchAwards is an MCP server listed in the public MCP registry as io.github.matchawards/matchawards-mcp. Search US government contracts, grants and jobs from matchawards.com. Read-only, no key. This page covers its PyPI package (matchawards-mcp).

Is the MatchAwards MCP server safe to use?

MatchAwards scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 22 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MatchAwards MCP server expose?

MatchAwards exposes 9 tools: search_contracts, search_grants, search_jobs, get_opportunity, lookup_naics, and 4 more. Their descriptions and schemas cost roughly 2,821 tokens of context every time the server is loaded.

Is the MatchAwards MCP server still maintained?

MatchAwards is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MatchAwards MCP server under?

MatchAwards declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.