{"openapi":"3.1.0","info":{"title":"G2X WebMCP read transport","version":"2026-09-01","description":"HTTP transport used by G2X's page-scoped WebMCP tools. Use document.modelContext on the active G2X page. The active catalog, account permissions, plan limits and meters remain authoritative. This schema grants no access and is not a bulk-data or background-automation API. Browser-only orientation tools and confirmed writes are described in the WebMCP tool index, not as HTTP operations in this schema."},"servers":[{"url":"https://g2x.com"}],"externalDocs":{"description":"G2X agent access and usage instructions","url":"https://g2x.com/llms.txt"},"paths":{"/api/webmcp/g2x_search_opportunities":{"post":{"operationId":"g2x_search_opportunities","summary":"Search G2X opportunities","description":"Searches bounded opportunity records using G2X procurement intelligence and returns resolvable record links. It does not expose notice bodies, hidden fields, bulk extracts, or an upstream API response. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["opportunity_search"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_search"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"naics":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":6,"pattern":"^[0-9]{2,6}$"}},"psc":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":4,"pattern":"^[A-Z0-9]{2,4}$"}},"fiscal_year":{"type":"array","maxItems":5,"items":{"type":"integer","minimum":2000,"maximum":2030}},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200},"set_aside":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":40,"pattern":"^[A-Za-z0-9()& ./'-]{1,40}$"}},"response_deadline_after":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"response_deadline_before":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_contracts":{"post":{"operationId":"g2x_search_contracts","summary":"Search G2X contracts and IDVs","description":"Searches bounded contract or IDV award records and returns resolvable G2X links. Choose one record family per call so results and pagination stay exact. Continuation is capped at four pages; further research continues in the signed-in product. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["awards_spend"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["awards_spend"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"naics":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":6,"pattern":"^[0-9]{2,6}$"}},"psc":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":4,"pattern":"^[A-Z0-9]{2,4}$"}},"fiscal_year":{"type":"array","maxItems":5,"items":{"type":"integer","minimum":2000,"maximum":2030}},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200},"record_type":{"type":"string","enum":["contract","idv"],"default":"contract","description":"The award record family to search."}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_awards":{"post":{"operationId":"g2x_search_awards","summary":"Search G2X awards","description":"Searches bounded federal award records using funding agency as the default agency scope. Awarding agency is returned only when it is explicitly requested. Continuation is capped at four pages; further research continues in the signed-in product. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["company_profile","awards_spend"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["company_profile","awards_spend"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"naics":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":6,"pattern":"^[0-9]{2,6}$"}},"psc":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":4,"pattern":"^[A-Z0-9]{2,4}$"}},"fiscal_year":{"type":"array","maxItems":5,"items":{"type":"integer","minimum":2000,"maximum":2030}},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200},"include_awarding_agency":{"type":"boolean","default":false,"description":"Include the agency that made each award as a separate field."}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_vehicles":{"post":{"operationId":"g2x_search_vehicles","summary":"Search G2X contract vehicles","description":"Searches bounded contract-vehicle definitions such as GWACs and BPAs. It returns linked vehicle records, not a list of vehicles held by a particular company. Continuation is capped at four pages; further research continues in the signed-in product. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["awards_spend"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["awards_spend"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"naics":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":6,"pattern":"^[0-9]{2,6}$"}},"psc":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":4,"pattern":"^[A-Z0-9]{2,4}$"}},"fiscal_year":{"type":"array","maxItems":5,"items":{"type":"integer","minimum":2000,"maximum":2030}},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_protests":{"post":{"operationId":"g2x_search_protests","summary":"Search G2X protests","description":"Searches bounded protest records and returns linked case metadata. It never exposes protected source digests or internal index text. Continuation is capped at four pages; further research continues in the signed-in product. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["opportunity_search"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_search"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"naics":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":6,"pattern":"^[0-9]{2,6}$"}},"psc":{"type":"array","maxItems":5,"items":{"type":"string","maxLength":4,"pattern":"^[A-Z0-9]{2,4}$"}},"fiscal_year":{"type":"array","maxItems":5,"items":{"type":"integer","minimum":2000,"maximum":2030}},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200},"outcome":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9()& ./'-]+$"},"case_type":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9()& ./'-]+$"},"source_system":{"type":"string","enum":["gao","sba_oha","cofc"]}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_grants":{"post":{"operationId":"g2x_search_grants","summary":"Search G2X federal grants","description":"Searches bounded federal financial-assistance opportunities and returns linked grant records. It does not mix grants with contract solicitations. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["opportunity_search"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_search"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"funding_agency":{"type":"string","minLength":1,"maxLength":120,"description":"Canonical agency name or 4-character FPDS code; shorter numeric codes are rejected."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200},"opportunity_number":{"type":"string","maxLength":80,"pattern":"^[A-Za-z0-9._/-]+$"},"cfda_number":{"type":"string","maxLength":20,"pattern":"^\\d{1,3}(?:\\.\\d{1,3})?$"},"status":{"type":"string","enum":["P","F"]},"posted_date_after":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"posted_date_before":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"response_date_after":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"response_date_before":{"type":"string","maxLength":10,"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_companies":{"post":{"operationId":"g2x_search_companies","summary":"Search G2X companies","description":"Resolves a company name to linked SAM legal entities in G2X. Multiple UEIs remain explicit alternatives so the caller can choose the intended entity. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]},{}],"x-g2x-surfaces":["marketing"],"x-g2x-capability":"public_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["marketing"]},"input":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10}},"required":["query"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_small_business_programs":{"post":{"operationId":"g2x_search_small_business_programs","summary":"Search G2X small-business programs","description":"Searches one bounded SBIR/STTR, SLED, or DIBBS opportunity family per call. Every result links to its own G2X record and keeps the source family explicit. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["opportunity_search"],"x-g2x-capability":"procurement_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_search"]},"input":{"type":"object","properties":{"program":{"type":"string","enum":["sbir_sttr","sled","dibbs"]},"query":{"type":"string","minLength":1,"maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","minLength":1,"maxLength":200}},"required":["program","query"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_search_intel":{"post":{"operationId":"g2x_search_intel","summary":"Search G2X editorial intelligence","description":"Searches published intelligence from G2X analysts and returns linked, preview-only post records. It never returns article bodies or unpublished posts. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]},{}],"x-g2x-surfaces":["marketing"],"x-g2x-capability":"public_search","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["marketing"]},"input":{"type":"object","properties":{"query":{"type":"string","maxLength":200},"vertical":{"type":"string","enum":["defense","fedciv","health"],"description":"Optionally limit results to one G2X market."},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10},"cursor":{"type":"string","maxLength":200}},"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_get_graph_neighborhood":{"post":{"operationId":"g2x_get_graph_neighborhood","summary":"Get linked G2X relationships","description":"Returns a bounded one-hop relationship neighborhood with a G2X record link for every result. It never returns raw graph nodes, private account identifiers, unlinked records, or multi-hop paths. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["marketing","opportunity_search","opportunity_detail","company_profile","awards_spend","pipeline","lumen_thread"],"x-g2x-capability":"graph_context","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["marketing","opportunity_search","opportunity_detail","company_profile","awards_spend","pipeline","lumen_thread"]},"input":{"type":"object","properties":{"record_type":{"type":"string","enum":["opportunity","award","contract","idv","vehicle","agency","company"]},"id":{"type":"string","maxLength":200},"limit_per_relation":{"type":"integer","minimum":1,"maximum":8,"default":5}},"required":["record_type","id"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_get_record":{"post":{"operationId":"g2x_get_record","summary":"Get a G2X record","description":"Returns the projection of one linked G2X record that the signed-in record page shows. It does not return article bodies, attachments, hidden fields, or an upstream payload. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]},{}],"x-g2x-surfaces":["opportunity_detail","company_profile","awards_spend"],"x-g2x-capability":"record_detail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_detail","company_profile","awards_spend"]},"input":{"type":"object","properties":{"record_type":{"type":"string","enum":["opportunity","award","contract","idv","vehicle","agency","company","protest","post","grant"]},"id":{"type":"string","maxLength":200}},"required":["record_type","id"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_get_record_documents":{"post":{"operationId":"g2x_get_record_documents","summary":"Get G2X opportunity documents","description":"Returns bounded opportunity-document metadata and readiness with authenticated G2X viewer or download links. It never returns document bodies, raw source URLs, parser details, or hidden attachment fields. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]},{}],"x-g2x-surfaces":["opportunity_detail"],"x-g2x-capability":"record_detail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_detail"]},"input":{"type":"object","properties":{"id":{"type":"string","maxLength":200},"limit":{"type":"integer","minimum":1,"maximum":25,"default":10}},"required":["id"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_profile_incumbent":{"post":{"operationId":"g2x_profile_incumbent","summary":"Profile company past performance","description":"Returns a bounded QS14-owned company award profile with numeric obligations and linked agencies, categories, and recent awards. It does not infer an incumbent, return raw award rows, or turn an unreadable source into an empty history. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]}],"x-g2x-surfaces":["opportunity_detail","company_profile"],"x-g2x-capability":"incumbent_profile","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_detail","company_profile"]},"input":{"type":"object","properties":{"uei":{"type":"string","maxLength":12,"pattern":"^[A-Za-z0-9]{12}$"}},"required":["uei"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}},"/api/webmcp/g2x_compare_records":{"post":{"operationId":"g2x_compare_records","summary":"Compare G2X records","description":"Compares two through five records of one type against a fixed field set with explicit nulls and record links. It does not score the records, mix record types, or expose fields hidden from the current viewer. Invoke from an enabled G2X page surface. A signed-in account receives the same fields and results the G2X page shows that account; a signed-out viewer receives the public projection. Follow a returned continuation cursor instead of increasing the limit.","security":[{"browserSession":[]},{}],"x-g2x-surfaces":["opportunity_search","opportunity_detail","pipeline"],"x-g2x-capability":"record_detail","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schema_version","surface","input"],"properties":{"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string","enum":["opportunity_search","opportunity_detail","pipeline"]},"input":{"type":"object","properties":{"record_type":{"type":"string","enum":["opportunity","award","contract","idv","vehicle","agency","company","protest","post"]},"ids":{"type":"array","minItems":2,"maxItems":5,"items":{"type":"string","maxLength":200}}},"required":["record_type","ids"],"additionalProperties":false}}}}}},"responses":{"200":{"description":"Bounded result with source provenance and linked citations, carrying the fields the signed-in G2X page shows. Data is specific to the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Success"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}}}},"400":{"description":"Invalid input or schema version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"403":{"description":"Sign-in, plan or product permission required, or the account's daily record allowance is used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"404":{"description":"Tool, surface or record unavailable, including disabled access or missing product permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"409":{"description":"Ambiguous input or revision conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"413":{"description":"Request or result exceeds the bounded transport limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"429":{"description":"Usage limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"RateLimit-Policy":{"description":"Usage policies that counted this call, as quota (q) per window in seconds (w), following the IETF RateLimit header fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Calls remaining (r) and seconds until each usage window resets (t).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}},"499":{"description":"Request aborted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}}},"503":{"description":"Upstream source unavailable or timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"Retry-After":{"description":"Seconds to wait when supplied by the server.","schema":{"type":"integer","minimum":0}}}}}}}},"components":{"securitySchemes":{"browserSession":{"type":"apiKey","in":"cookie","name":"__session","description":"The signed-in G2X browser session, managed by Clerk. Sign in at /app/login; do not copy session cookies into an agent or share them. Same-origin requests and active account permissions are enforced by the server. Public preview operations may also permit anonymous access."}},"schemas":{"Success":{"type":"object","required":["ok","schema_version","surface","data","citations","entitlement","provenance"],"properties":{"ok":{"const":true},"schema_version":{"type":"string","const":"2026-09-01"},"surface":{"type":"string"},"data":{"description":"Operation-specific bounded JSON result. Withheld values are not implied by missing fields."},"revision":{"type":"integer","minimum":0},"next_step":{"type":"object","required":["tool","input"],"properties":{"tool":{"enum":["g2x_get_lumen_task","g2x_get_access_options"]},"input":{"type":"object"}}},"citations":{"type":"array","items":{"type":"object","required":["label","record_url"],"properties":{"label":{"type":"string"},"record_url":{"type":"string","format":"uri"}}}},"entitlement":{"type":"object","required":["tier","withheld_count","withheld_fields","reason","next_step"],"properties":{"tier":{"type":"string"},"withheld_count":{"type":"integer","minimum":0},"withheld_fields":{"type":"array","items":{"type":"string"}},"reason":{"enum":["plan_limit","meter_limit",null]},"next_step":{"type":["object","null"]}}},"provenance":{"type":"object","required":["source","read_at","record_count","truncated"],"properties":{"source":{"type":"string"},"read_at":{"type":"string","format":"date-time"},"record_count":{"type":"integer","minimum":0,"maximum":25},"truncated":{"type":"boolean"}}}}},"Failure":{"type":"object","required":["ok","schema_version","error"],"properties":{"ok":{"const":false},"schema_version":{"type":"string","const":"2026-09-01"},"error":{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"field":{"type":"string"},"constraint":{"type":"string"},"retry_after_seconds":{"type":"integer","minimum":0}}}}}}}}