Headless MCP server for accessing Mindy's SAM (System for Award Management) opportunity search and balance checking capabilities via HTTP
Mindy MCP exposes 2 tools via HTTP Streamable transport. Both tools have descriptions and basic input schemas. get_balance has an empty input schema ({}), which is appropriate for a parameterless tool. search_sam_opportunities has a properly typed schema with 2 string parameters. However, parameter descriptions are minimal (under 50 chars each), and output schemas are not documented in the source. No error handling guidance, no tool annotations, and no indication of pagination support for search results. The server follows basic naming conventions (verb_noun) but lacks depth in parameter documentation and output structure guidance.
Check the account balance before spending on metered calls
Search for SAM (System for Award Management) opportunities with filtering by keyword and set-aside category
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields without knowing what search_sam_opportunities returns (e.g., does it return opportunity_id, title, agency, deadline?).
Parameter descriptions are minimal (under 50 chars). 'Search keyword for opportunities' and 'Set-aside category filter (e.g., 'SBA')' lack actionable detail. No guidance on valid set_aside values, keyword format, or expected result limits.
No pagination or result limit guidance. search_sam_opportunities may return hundreds of opportunities, but no mention of limit, offset, page_size, or total_count in the schema or description.
No error handling guidance. If a search returns no results or an invalid set_aside is provided, the LLM has no recovery path. Descriptions should hint at valid values or suggest fallback searches.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are READ_ONLY, but this is not declared in the schema or via tool annotations, forcing LLMs to infer safety from descriptions alone.