{"server":{"name":"com.hasdata/google-maps","title":"HasData Google Maps","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://mcp.hasdata.com/mcp?apis=google_maps","type":"streamable-http","headers":[{"name":"x-api-key","isSecret":true,"isRequired":true,"description":"HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card."}]}],"version":"1.0.7","packages":[{"version":"1.0.7","transport":{"type":"stdio"},"identifier":"@hasdata/google-maps-mcp","registryType":"npm","environmentVariables":[{"name":"HASDATA_API_KEY","isSecret":true,"isRequired":true,"description":"HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card."}]},{"version":"1.0.7","transport":{"type":"stdio"},"identifier":"hasdata-google-maps-mcp","runtimeHint":"uvx","registryType":"pypi","environmentVariables":[{"name":"HASDATA_API_KEY","isSecret":true,"isRequired":true,"description":"HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card."}]}],"repository":{"url":"https://github.com/HasData/google-maps-mcp","source":"github"},"websiteUrl":"https://hasdata.com/apis/google-maps-search-api","description":"Google Maps places, reviews, contributor history, photos and posts as JSON. No Google Cloud."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-24T14:19:32.350311Z","publishedAt":"2026-09-24T14:19:32.350311Z","statusChangedAt":"2026-09-24T14:19:32.350311Z"},"dev.protogrid/connectability":{"class":"R2","autonomous":false,"human_steps":["oauth_consent_once"],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://mcp.hasdata.com/mcp?apis=google_maps","transport":"streamable-http","templated":false,"headers":[{"name":"x-api-key","required":true,"secret":true,"value":null,"secret_names":["X_API_KEY"]}],"auth":{"type":"oauth2","location":{"header":"Authorization","scheme":"Bearer"},"secret_name":null,"oauth":{"scopes":["mcp:tools"],"grant_types":["authorization_code","refresh_token"],"dcr_supported":true,"cimd_supported":true,"authorization_servers":["https://mcp.hasdata.com"],"resource_metadata_url":"https://mcp.hasdata.com/.well-known/oauth-protected-resource/mcp","code_challenge_methods":["S256"],"authorization_server_metadata_url":"https://mcp.hasdata.com/.well-known/oauth-authorization-server"}},"protocol":{"supported_versions":[],"stateless":null},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":184,"consecutive_failures":0,"last_probe_at":"2026-10-19T08:46:28.001Z","last_ok_at":"2026-10-19T08:46:28.001Z"}}],"packages":[{"idx":0,"registry_type":"npm","identifier":"@hasdata/google-maps-mcp","version":"1.0.7","runtime_hint":null,"transport":"stdio","secrets":["HASDATA_API_KEY"],"requires_execution":true},{"idx":1,"registry_type":"pypi","identifier":"hasdata-google-maps-mcp","version":"1.0.7","runtime_hint":"uvx","transport":"stdio","secrets":["HASDATA_API_KEY"],"requires_execution":true}]},"dev.protogrid/tools":[{"name":"hasdata_google_maps_contributor_reviews_getMapReviews","title":"google_maps_contributor_reviews: GET /","description":"Get Map Contributor Reviews\n\nLists all Google Maps reviews authored by a specific Local Guide / contributor by contributorId, with language/country targeting and nextPageToken pagination. Returns per-review rating, text, date, place name, place address, photos, and owner responses. Use for reviewer reputation checks, detecting fake/bot review patterns, local-guide activity analysis, and building review-author profiles for trust scoring.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"},{"name":"hasdata_google_maps_photos_getMapPhotos","title":"google_maps_photos: GET /","description":"Get Place Photos\n\nFetches the photo gallery of a Google Maps place by dataId or placeId, paginated with nextPageToken and filterable by categoryId. Returns each photo with image URL and thumbnail. Use for restaurant-menu extraction, venue/ambience visual audits, building rich place detail pages, and sourcing up-to-date imagery for POI listings.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"},{"name":"hasdata_google_maps_place_getPlaceDetails","title":"google_maps_place: GET /","description":"Get Place Details\n\nFetches full Google Maps place data by placeId with optional domain/language localization. Returns name, address, coordinates, phone, website, categories, hours, rating, review count, price level, photos, attributes/amenities, and plus_code. With fetchWebResults, also returns the place panel's web results (the business's own site and its Instagram, Facebook, delivery and other listings) with title, link, displayed link and snippet. Use for local SEO audits, POI enrichment, lead generation, competitor mapping, and building location-aware agents.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"},{"name":"hasdata_google_maps_posts_getMapPosts","title":"google_maps_posts: GET /","description":"Get Map Posts\n\nFetches the latest Google Maps Posts (timeline-style updates such as offers, events, announcements, and notices) for a place by dataId or placeId, with language targeting. Returns per-post title, description, image, posted_at, link, and source/business name. Use for small-business intelligence, local-marketing monitoring, competitor activity tracking, and surfacing current promotions and events from local merchants.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"},{"name":"hasdata_google_maps_reviews_getMapReviews","title":"google_maps_reviews: GET /","description":"Get Map Reviews\n\nPaginated fetch of Google Maps reviews for a place by dataId or placeId, with sort (mostRelevant, newestFirst, ratingHigh, ratingLow), topicId filter, and language. Returns per-review author name and profile link, star rating, text, published/relative date, likes count, owner response, attached photos, and local-guide flag. Use for reputation management, sentiment and topic mining, competitor review benchmarking, and feeding review data into summarization or trust-score LLMs.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"},{"name":"hasdata_google_maps_search_performMapSearch","title":"google_maps_search: GET /","description":"Get Google Maps Search Results\n\nRuns a Google Maps search by keyword plus optional GPS coordinates (@lat,lng,zoomz via `ll`) with language, country, domain, and offset-based pagination (start). Returns the local pack list with placeId, name, address, coordinates, rating, review count, price level, categories, phone, website, hours, and thumbnail. Use for local lead generation, competitor density mapping, market expansion research, hyperlocal directories, and feeding placeIds into the Maps Place, Reviews, or Photos endpoints.","annotations":{"readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-16T00:55:28.606Z"}],"dev.protogrid/trust":{"score":100,"components":{"hygiene":100,"liveness":100,"freshness":100,"provenance":100},"drivers":["+repository","+namespace-matches-repo","+dns-namespace","+website","+reachable","+uptime-100%","+updated-25d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T12:42:35.393Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":93,"label":"strong","components":{"auth":100,"hygiene":86,"protocol":null,"stability":null,"dependencies":100},"checks":[{"id":"protocol.modern","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.stateless","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.list_ttl","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"auth.prm","detail":"Protected Resource Metadata (RFC 9728) published","status":"pass","category":"auth"},{"id":"auth.as_metadata","detail":"authorization server metadata reachable","status":"pass","category":"auth"},{"id":"auth.cimd","detail":"Client ID Metadata Documents supported","status":"pass","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"6 of 6 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: hasdata_google_maps_contributor_reviews_getMapReviews (idempotentHint); hasdata_google_maps_photos_getMapPhotos (idempotentHint); hasdata_google_maps_place_getPlaceDetails (idempotentHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,239 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"tool history recorded for 3 of the 7 days needed","status":"na","category":"stability"},{"id":"stability.rug_pull","detail":"tool history recorded for 3 of the 7 days needed","status":"na","category":"stability"},{"id":"deps.known_vulns","detail":"no known advisory in 32 resolved packages","status":"pass","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"mcp 1.30.0, no known advisory","status":"pass","category":"dependencies"},{"id":"deps.resolvable","detail":"hasdata-google-maps-mcp@1.0.7 resolved: 32 packages","status":"pass","category":"dependencies"}],"drivers":["-tools.directory_hints"],"flags":[],"tool_count":6,"token_estimate":2239,"tools_hash":"acb686330c5948ec2b63c9d11aeff22b","tools_changed_at":null,"computed_at":"2026-10-19T13:05:09.887Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"com.hasdata/google-maps","aliases":[],"alias_count":0,"repository_key":"github:hasdata/google-maps-mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/com.hasdata%2Fgoogle-maps/tools","arguments":{"name":"com.hasdata/google-maps"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/com.hasdata%2Fgoogle-maps/connection?target=mcpServers","arguments":{"name":"com.hasdata/google-maps","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}