FastMCP server for Google Maps search, details, reviews, photos, posts, and contributors using Playwright
Six tools with clear verb-noun naming (google_maps_search, google_maps_place_details, etc.). All have descriptions (avg ~80 chars, baseline 194). Input schemas present with types and descriptions. However, critical gaps: (1) No output schemas documented, LLMs cannot predict response structure for chaining; (2) Parameter descriptions lack format constraints (e.g., 'll' format '@lat,lng,zoomz' stated but not validated); (3) No error handling guidance, tools return dict but no recovery hints; (4) Mutually exclusive parameters (placeId|dataId|query) not clearly marked as such; (5) No pagination guidance despite search returning ranked results. Tools are functional but lack production-grade polish for agent reasoning.
Retrieve reviews written by a specific reviewer across all places they rated.
Retrieve the photo feed for a place.
Get one place in full by placeId, dataId, or search query.
Retrieve the business's own posts, announcements, and updates on Google Maps.
Retrieve the review feed for a place with sorting and topic filtering.
Search Google Maps for places matching a query. Ranked as Google Maps ranks them.
No output schemas documented. Tools return dict via model_dump() but LLMs cannot predict field names, types, or structure for downstream chaining. E.g., does google_maps_search return 'placeId' or 'place_id'? Does it include 'rating', 'address', 'phone'?
Mutually exclusive parameters (placeId, dataId, query) not explicitly marked. LLMs may pass multiple or none, causing ambiguous behavior. Descriptions should state: 'Provide exactly one of: placeId, dataId, or query.'
No error handling guidance. Tools return dict but do not document what happens on failure (invalid placeId, network timeout, rate limit). LLMs need recovery hints: 'If placeId not found, try google_maps_search() first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Parameter format constraints stated in description but not enforced. E.g., 'll' parameter expects '@lat,lng,zoomz' format but no regex or validation shown. LLMs may pass invalid formats.
No pagination or result-limiting guidance. google_maps_search accepts 'start' offset but no 'limit' parameter. Unclear if results are capped or if LLM can request 1000+ results, risking context window exhaustion.