ATTOM MCP has 8 tools with complete input schemas and descriptions, but critical gaps limit production readiness. All tools follow verb_noun naming (attom_*) and have 50-150 char descriptions meeting baseline length (p10=34, p90=392). However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameters lack type constraints (all strings, no enums for known-value fields like propertyType, interval). The _apiKey parameter violates secret-injection pattern by exposing credentials as a tool parameter. Error handling is minimal, no recovery guidance, no categorization. No tool annotations (readOnlyHint, idempotentHint). Descriptions are functional but lack dependency hints and WHEN-to-use guidance. Per-tool average: 52/100.
Get property tax assessment details — assessed value, market value, tax amount, tax year, and assessment history.
Get automated valuation (AVM) for a property — estimated market value, confidence score, value range (low/high).
Get full property characteristics by address — lot size, square footage, bedrooms, bathrooms, year built, construction type, heating/cooling, and more.
Search properties by location with optional filters. Search by postal code or by latitude/longitude with a radius.
Get rental property AVM — estimated monthly rent, rental yield, and rental value range.
Get complete sales history for a property (up to 10 years) — sale dates, prices, deed types, seller/buyer info.
Output schemas completely undocumented. LLMs cannot infer response structure, field names, or types. Breaks tool chaining and forces agents to guess at downstream parameter mappings.
_apiKey exposed as tool parameter violates secret-injection pattern. Credentials appear in agent traces, logs, and prompt history. Must use server-side injection via environment variables.
No enum constraints on known-value parameters. propertyType accepts free-form strings instead of enum [SFR, CONDO, APARTMENT, ...]. interval accepts free-form instead of enum [monthly, quarterly, yearly]. Invites hallucinated invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Get market sales trends by ZIP code — average/median sale price, volume, and price changes over time.
Search schools near a location — name, type (public/private), grades, distance, and rankings.
No error handling guidance. attomGet() throws raw HTTP errors with no recovery hints. LLMs cannot distinguish retryable (timeout) from user-fixable (invalid address) from fatal (auth failure) errors.
No tool annotations. All tools are read-only but lack readOnlyHint. Agents cannot distinguish safe tools from destructive ones. Missing idempotentHint guidance.