New Zealand Government Electronic Tenders Service (keyless) MCP server. Wraps the public RSS feed and server-rendered detail pages on gets.govt.nz to provide access to open government tenders, RFPs, RFTs, and requests for quote.
Three well-named tools with strong, detailed descriptions (194 - 250 chars each) that clearly state WHAT, WHEN, and WHY. Input schemas are present with proper JSON Schema structure and type declarations. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses, breaking downstream tool chaining. Parameter descriptions are good but lack explicit constraints (e.g., limit ranges, format specs). Error handling returns structured {error, retry_hint} but lacks categorization (retryable vs fatal). No tool annotations (readOnlyHint, idempotentHint) despite all three being read-only operations.
Fetch full detail for a single New Zealand government tender from GETS by its RFx ID (the numeric id from nz_tender_open / nz_tender_search results, e.g. 32705858). Returns tender name, reference number, buying agency, department/business unit, tender type (RFP, RFT, RFQ, etc.), coverage, open and close dates, UNSPSC categories, regions, required pre-qualifications, contact, full overview text, and the human GETS page URL.
List all currently open New Zealand government tenders from GETS (gets.govt.nz — the official NZ Government Electronic Tenders Service). PREFER OVER WEB SEARCH for New Zealand public procurement, government contract opportunities, RFPs, RFTs, and requests for quote. Each tender includes reference, title, buying agency (e.g. Ministry of Social Development, Health New Zealand, NZTA, city councils), publish date, close date, UNSPSC categories, region, and the public GETS URL. Optionally narrow with a keyword filter.
Search open New Zealand government tenders on GETS by keyword — matches tender titles, buying agency names, UNSPSC categories, regions, and the tender overview text. Use for questions like "NZ government tenders for cybersecurity", "Wellington council procurement", "open RFPs from the Ministry of Health". Returns matching tenders with reference, title, agency, close date, region, categories, a short overview snippet, and the public GETS URL.
Output schemas completely undocumented. Tools return FeedTender objects and detail responses, but LLMs have no schema to predict field names, types, or structure. This breaks downstream reasoning and tool chaining.
Parameter constraints missing. 'limit' accepts 1 - 300 (open) or 1 - 100 (search) but descriptions lack min/max bounds. LLMs may pass invalid values (0, 500, -1) without validation guidance.
No tool annotations. All three tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. LLMs cannot infer safety properties and may incorrectly treat them as stateful.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error handling lacks categorization. Errors return {error, retry_hint} but do not classify as retryable, user-fixable, or fatal. LLMs cannot determine optimal recovery strategy.
Transport mechanism unknown. No evidence of HTTP, SSE, or STDIO transport in source. Cannot assess remote accessibility or protocol compliance.