MCP server for ordering LandFirst property analysis reports
Single tool with solid schema and clear description, but lacks error recovery guidance and output documentation. Tool name follows verb_noun pattern (order_landfirst_report). Description is 287 chars (within 10-1024 baseline) and explains WHAT, WHEN, and WHAT it returns. All 5 parameters have type definitions and descriptions. However, no documented output schema, no error classification guidance, and no recovery hints for common failure modes (API down, invalid address, payment failure). Missing idempotency declaration for a write operation.
Order a LandFirst property analysis report. Submits the order and returns a Stripe payment link. The report costs $29.99 and will be delivered within 24 hours after payment. LandFirst reports analyze land value, area hierarchy, demand drivers, planning optionality, and pricing discipline using a land-first investment framework. Covers properties in the US, Australia, Canada, New Zealand, and UK.
No documented output schema. Response structure is inferred from code (text content with payment_url, order_id, price). LLMs cannot plan downstream actions or extract structured data without explicit schema documentation.
Error responses lack recovery guidance. Generic 'Order failed' and 'Failed to connect' messages do not tell the LLM what to do next (retry? ask user? check address format?). No error classification (retryable vs user-fixable vs fatal).
Write operation lacks idempotency declaration and confirmation pattern. Calling order_landfirst_report twice with same address will create two orders and charge twice. No dry-run or confirmation step to prevent accidental duplicate orders.
API_URL exposed as environment variable without validation. If LANDFIRST_API_URL is misconfigured or hijacked, the tool silently sends customer data to wrong endpoint. No URL validation or allowlist.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No timeout configured on fetch() call. If LandFirst API hangs, the MCP server blocks indefinitely, freezing the agent. External service calls must have explicit timeouts with retry guidance.