MCP 서버

PubSec Radar

io.github.Kabrawala/pubsec-sales-mcp

이 MCP로 할 수 있는 일

Supports federal sales prospecting with agency spending profiles, expiring-contract alerts, incumbent research, discovery questions, and opportunity qualification.

agency_spend_profile
Profile a federal agency's contract spending
Use this to answer "what does this agency actually buy, and from whom?" before a first call: total contract obligations, 3-year trend, top 10 vendors, and top 10 NAICS categories for one fiscal year. Good queries name one agency, e.g. agency="HHS". Figures come from a daily snapshot of USAspending covering the current fiscal year plus a 3-year trend; freshness is stated in the response. Federal only. Read the coverage caveats — current-FY totals are partial-year and intel-agency spend is never published.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agency'], 'properties': {'agency': {'type': 'string', 'description': 'Federal agency name, acronym, or code â\x80\x94 e.g. "HHS", "Department of Veterans Affairs", "075".'}}}
find_expiring_contracts
Find expiring federal contracts
Use this when prospecting or prepping a federal account and you want sales triggers: contracts at an agency that end soon, with the incumbent vendor, dollar values, and contracting office. Expiring contracts mean upcoming recompetes — the best time to displace an incumbent. Good queries name one agency and optionally a NAICS code, e.g. agency="DHS", naics_code="541512", window_days=90. Federal only (no state/local). Every response includes data-freshness and coverage caveats — read them; no data ≠ no spend.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agency'], 'properties': {'limit': {'type': 'integer', 'default': 15, 'maximum': 25, 'minimum': 1, 'description': 'Max contracts to return (top by obligated amount). Default 15.'}, 'agency': {'type': 'string', 'description': 'Federal agency name, acronym, or code â\x80\x94 e.g. "DHS", "Department of Defense", "070". Federal only; SLED is out of scope.'}, 'naics_code': {'type': 'string', 'pattern': '^\\d{2,6}$', 'description': 'Optional NAICS code to narrow by category, e.g. "541512" (computer systems design).'}, 'window_days': {'type': 'integer', 'default': 90, 'maximum': 365, 'minimum': 1, 'description': 'How far ahead to look for contract end dates, in days from today. Default 90, max 365.'}}}
generate_discovery_questions
Generate public-sector discovery questions
Use this when prepping a meeting with a federal agency: it returns discovery questions tuned to public-sector selling (fiscal-year timing, contract vehicles, FedRAMP/ATO, incumbents), grounded in the agency's live spending data where possible — each data-backed question cites the number that motivated it with a source URL. Good queries name the agency, what you sell, and the meeting type, e.g. agency="DHS", product_category="zero-trust network security", meeting_context="first_call". Add naics_code to surface expiring-contract questions.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agency', 'product_category'], 'properties': {'agency': {'type': 'string', 'description': 'Federal agency the meeting is with â\x80\x94 name, acronym, or code, e.g. "DHS".'}, 'naics_code': {'type': 'string', 'pattern': '^\\d{2,6}$', 'description': 'Optional NAICS code for your category â\x80\x94 adds questions about specific expiring contracts.'}, 'meeting_context': {'enum': ['first_call', 'technical_deep_dive', 'procurement_discussion'], 'type': 'string', 'default': 'first_call', 'description': 'What kind of meeting you are prepping for.'}, 'product_category': {'type': 'string', 'minLength': 3, 'description': 'What you sell, in plain words â\x80\x94 e.g. "data analytics platform", "zero-trust network security".'}}}
incumbent_lookup
Look up an incumbent vendor's federal contracts
Use this to answer "who am I displacing and when?": a vendor name (plus optional agency scope) returns their current and recent awards with values and end dates, flagging awards that end within 12 months as displacement windows. Good queries use the vendor's registered name or a distinctive fragment, e.g. vendor="Booz Allen", agency="DHS". Federal only. Zero results ≠ no presence — check the caveats for name-matching tips.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['vendor'], 'properties': {'limit': {'type': 'integer', 'default': 15, 'maximum': 25, 'minimum': 1, 'description': 'Max awards to return (largest first). Default 15.'}, 'agency': {'type': 'string', 'description': 'Optional federal agency to scope the lookup, e.g. "DHS". Omit to search government-wide.'}, 'vendor': {'type': 'string', 'minLength': 2, 'description': 'Vendor/incumbent name as registered in federal awards, e.g. "Booz Allen Hamilton", "CACI". FPDS matches it as a phrase â\x80\x94 shorter fragments match more.'}}}
qualify_opportunity
Qualify a federal opportunity (public-sector MEDDPICC)
Use this to pressure-test a federal deal: pass what you know per MEDDPICC dimension (leave unknowns empty) and get back an evidence-scored scorecard adapted for public sector — budget authority instead of generic economic buyer, procurement vehicle as the paper process — with gap-closing questions and public-record evidence pulled automatically (name the incumbent_vendor and their real awards/end dates at the agency get attached). Scores measure evidence specificity, not truth; the response says what verified evidence looks like for each dimension.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agency', 'product_category'], 'properties': {'agency': {'type': 'string', 'description': 'Federal agency the deal is at â\x80\x94 name, acronym, or code, e.g. "DHS".'}, 'deal_facts': {'type': 'object', 'properties': {'metrics': {'type': 'string', 'description': 'Quantified mission outcome the buyer expects (their numbers, not your pitch).'}, 'champion': {'type': 'string', 'description': "Who sells for you internally â\x80\x94 name, role, what they've done for you so far."}, 'competition': {'type': 'string', 'description': 'Who else is in â\x80\x94 incumbent, other bidders, or internal do-nothing option.'}, 'paper_process': {'type': 'string', 'description': 'Procurement path â\x80\x94 vehicle, contract type, contracting office, ceiling.'}, 'economic_buyer': {'type': 'string', 'description': "Who has budget/obligation authority â\x80\x94 name, role, what they've said."}, 'identified_pain': {'type': 'string', 'description': 'The forcing function â\x80\x94 mandate, audit finding, incident, failed program.'}, 'decision_process': {'type': 'string', 'description': 'Steps and dates to award â\x80\x94 RFI, evaluation, decision milestones.'}, 'decision_criteria': {'type': 'string', 'description': "How they'll evaluate â\x80\x94 technical factors, past performance, price weighting."}}, 'description': 'What you know so far, one field per MEDDPICC dimension. Omit entirely (or leave fields empty) for pure-discovery scoring â\x80\x94 gaps are the output.'}, 'incumbent_vendor': {'type': 'string', 'description': 'Competitor/incumbent vendor name if known â\x80\x94 their real awards at this agency get pulled as evidence.'}, 'product_category': {'type': 'string', 'minLength': 3, 'description': 'What you are selling, e.g. "SIEM platform".'}, 'estimated_value_usd': {'type': 'number', 'description': 'Rough deal size in USD, if known.', 'exclusiveMinimum': 0}}}
추가됨
qualify_opportunity
2026년 9월 17일 12:42 PM
추가됨
generate_discovery_questions
2026년 9월 17일 12:42 PM
추가됨
incumbent_lookup
2026년 9월 17일 12:42 PM
추가됨
agency_spend_profile
2026년 9월 17일 12:42 PM
추가됨
find_expiring_contracts
2026년 9월 17일 12:42 PM