{"name":"ai.latlong/map-mcp","slug":"latlong-map-mcp","title":"LatLong Maps","description":"Turn CSV or Excel data into styled choropleth and categorical maps of India from plain language.","url":"https://mcp.market/server/latlong-map-mcp","rating":null,"grade":"C","score":63,"certified":false,"status":"active","category":"maps","tags":["maps"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T19:26:09.140Z","last_ok_at":"2026-09-20T19:26:09.140Z","latency_ms":370},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://latlong.ai","version":"1.0","remotes":[{"type":"streamable-http","url":"https://geocp.latlong.ai/mcp/","headers":[{"description":"Your LatLong access token (JWT). Issued by the LatLong auth service; the server verifies it on every call.","isRequired":true,"isSecret":true,"name":"X-Authorization-Token"}]}],"packages":[],"tools":[{"name":"create_upload","description":"Start a client-direct file upload for large CSV/XLSX files. Returns a presigned put_url and an opaque upload_id. Steps: 1) call create_upload with file_name, 2) HTTP PUT the raw file bytes to put_url using the returned headers, 3) pass upload_id to question_to_map, parse_file, or render_map. Preferred over file_base64 for anything beyond a few KB — the bytes go straight to storage instead of riding inside the tool call.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_name":{"type":"string"}},"required":["file_name"],"additionalProperties":false}},{"name":"get_capabilities","description":"Return the server's capability matrix (supported map types, geo types, output formats, and classification methods).","write_action":false,"price_micros":0,"input_schema":{"type":"object","additionalProperties":false}},{"name":"process_upload","description":"Validate and ingest a file uploaded via create_upload. Runs size, virus, and content-safety checks, parses CSV/XLSX/JSON, and returns an upload_id plus advisory intent (no raw rows). IMPORTANT: to make a map, call question_to_map and pass this upload_id — and pass the SAME upload_id on every follow-up question about this file (e.g. 'now show it by district'). The response includes a ready-to-use next_actions entry with upload_id already filled in; prefer firing that. Rejects infected or injected files (nothing is kept in that case).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"upload_id":{"type":"string"},"question":{"type":"string"},"geo_column":{"type":"string"},"value_column":{"type":"string"},"map_type":{"type":"string"},"geo_level":{"type":"string"}},"required":["upload_id"],"additionalProperties":false}},{"name":"question_to_map","description":"Render a geographic map from a question.\n\nTO MAP A FILE (CSV/XLSX/JSON) — you MUST upload it first, in this order:\n  1) call create_upload {file_name} -> returns { upload_id, put_url }\n  2) HTTP PUT the raw file bytes to put_url (use the returned headers)\n  3) call process_upload {upload_id, ...your intent} -> validates the file\n  4) call question_to_map {question, upload_id, geo_column?, value_column?}\nDo NOT call question_to_map with a file path or the raw bytes for an uploaded document — pass the upload_id from step 1. Reuse the SAME upload_id on every follow-up about that file (e.g. 'now show it by district').\n\nWays to provide data:\n1. Uploaded document (preferred): {\"question\": \"show total by pincode\", \"upload_id\": \"<from create_upload>\", \"geo_column\": \"pincode\", \"value_column\": \"total\"}\n2. Question only (DB): {\"question\": \"ola sales in delhi ncr\"}\n3. CSV inline (small only): {\"question\": \"show sales\", \"csv\": \"state,sales\\nMaharashtra,500\", \"geo_column\": \"state\", \"value_column\": \"sales\"}\n\nINTENT (all optional; if you know them, pass them — your values win over auto-detection): geo_column, value_column, geo_level (state|district|pincode|rto|city|ac|pc), map_type, state_hint.\nIf you omit upload_id, the server falls back to your most recent upload; passing it is more reliable.\nIf value_column is 'total' and absent from the data, all numeric columns are summed automatically.\nSupported geo types: state, district, pincode, rto, city, ac, pc.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"question":{"type":"string"},"data":{"type":["null","array"],"items":{"type":"object","additionalProperties":true}},"csv":{"type":"string"},"file_path":{"type":"string"},"upload_id":{"type":"string"},"geo_column":{"type":"string"},"value_column":{"type":"string"},"table":{"type":"string"},"enrich_with":{"type":["null","object"],"properties":{"table":{"type":"string"},"columns":{"type":["null","array"],"items":{"type":"string"}},"join_on":{"type":"string"}},"required":["table","columns"],"additionalProperties":false},"detected_geo":{"type":["null","object"],"properties":{"column":{"type":"string"},"geo_type":{"type":"string"},"confidence":{"type":"number"},"matched_count":{"type":"integer"},"total_count":{"type":"integer"},"parent":{"type":"string"}},"required":["column","geo_type","confidence","matched_count","total_count"],"additionalProperties":false},"render_params":{"type":"object","additionalProperties":true},"output_format":{"type":"string"},"style":{"type":"object","additionalProperties":true},"geo_level":{"type":"string"},"map_type":{"type":"string"},"state_hint":{"type":["null","array"],"items":{"type":"string"}}},"required":["question"],"additionalProperties":false}}],"scan":{"score":63,"grade":"C","scanned_at":"2026-09-20T20:09:08.299Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:09:08.214Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 3238ms"]},"poisoning":{"score":15,"max":15,"notes":["4 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://geocp.latlong.ai/mcp/","reachable":true,"authRequired":false,"latencyMs":3238,"serverInfo":{"name":"latlong-maps","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}