Rentcast MCP — wraps Rentcast API (api.rentcast.io/v1)
Two tools with clear verb-noun naming (get_rent_estimate, get_property) and reasonable descriptions (150-180 chars, within baseline 194 avg). Input schemas present with type definitions and parameter descriptions. However, critical gaps: (1) API key exposed as _apiKey parameter violates secret-injection pattern; (2) output schemas NOT documented, LLMs cannot plan downstream calls or validate response structure; (3) no error handling guidance, API errors return raw HTTP status + text with no recovery hints; (4) no pagination despite potentially large result sets (comparables array); (5) parameter descriptions lack format constraints (e.g., address format, ZIP code pattern).
Get property details for a US address. Returns bedrooms, bathrooms, square footage, lot size, year built, property type, and owner info when available.
Get a rental price estimate for a US property address. Returns estimated monthly rent, price range, and comparable rental data. Example: "1234 Main St, Austin, TX 78701".
API key exposed as _apiKey parameter. Credentials must never appear in tool parameters, they leak into agent traces, logs, and prompt history. Use server-side secret injection via environment variables or vault.
Output schemas not documented. LLMs cannot infer response structure, plan chaining, or validate results. Document return types for both tools (e.g., estimated_rent: number, comparables: array of objects with address, price, bedrooms, etc.).
No error handling guidance. API errors return raw HTTP status + text (e.g., 'Rentcast API error (404): ...'). Errors must guide recovery: 'Address not found. Ensure full street address with city, state, ZIP. Try search_properties() for partial matches.' Include invalid value and constraint violated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints. 'address' parameter says 'Full street address with city, state, and ZIP' but does not specify required format (e.g., '123 Main St, City, ST 12345'). Add regex pattern or explicit format rules to prevent LLM hallucination.
No pagination for comparables array. get_rent_estimate returns up to 10 comparables (hardcoded slice), but no limit parameter, offset, or total_count. If API returns 100+ comparables, LLM context bloats. Add limit (default 10, max 50) and next_cursor for large result sets.