Flanj drift.flanj.io · daily contract watch

drift.flanj.io / servers / latlong-map

Server sheet · data · anonymous

LatLong latlong-map

6 change events over 42 comparison days: 8 breaking, 6 warning and 3 info findings, each with the two contracts as served behind it.

watched since 2026-08-24 as of 2026-10-15 43 days observed 42 comparison days latest snapshot 2026-10-15

01 / the server

What the watch knows about it.

LatLongoperator
datakind
anonymousauth posture
5tools listed
43days observed
2025-11-25MCP revision · floor, not ceiling
2 / 5outputSchema declared

Anonymous: the same call the watch makes, minus initialize. A server that answers “session required” insists on initialize first and is alive.

probe
curl -sS 'https://geocp.latlong.ai/mcp/' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name'

02 / event timeline — every event, expanded

6 change events, newest first.

2026-10-04 → 2026-10-05 1 warning 1 tool
1 description-changedas served: 2026-10-04 → 2026-10-05on the index
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
question_to_map description
[…] pass the returned file_key: {"question": "show total by pincode", "file_key": "mcp-uploads/2026/01/15/<uuid>.csv"}. "mcp-uploads/<user-id>/2026/01/15/<uuid>.csv"}. The file_key is reusable — for additional questions on the […]
as served: 2026-10-04 → 2026-10-05
2026-09-25 → 2026-09-26 1 warning 1 tool
1 description-changedas served: 2026-09-25 → 2026-09-26on the index
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
question_to_map description
[…] Supported geo types: state, district, pincode, rto, city, ac, pc. Points mode: if your file has latitude/longitude columns (e.g. from a prior geocoding step, or coordinates you already had) and your question asks to plot/pin/mark locations ("plot my stores", "show me the outlet locations", "mark these points"), the server detects the coordinate columns automatically and renders markers instead of shaded regions — no geo_column/value_column needed. The boundary lines drawn beneath the markers and how far the map zooms are chosen automatically from where the points actually fall (tightens to a state or district for a local cluster, falls back to all-India for a nationwide spread); you can also name a level explicitly ("plot by assembly constituency", "rto wise") to force it. A response may report points that fall outside every boundary (e.g. offshore or swapped lat/lon) — check for that in the warnings.
as served: 2026-09-25 → 2026-09-26
2026-09-23 → 2026-09-24 2 breaking 2 warning 3 info 4 tools
3 input-optional-property-removed2 description-changed2 operation-removedas served: 2026-09-23 → 2026-09-24on the index
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
create_upload
their contract · 2026-09-23
"create_upload"
their contract · 2026-09-24
absent
as served: 2026-09-23 → 2026-09-24
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
get_capabilities description
Return the server's capability matrix (supported matrix: supported map types, geo types, output formats, and classification methods). methods, and the list of tools available in this process (which varies by configuration). Call this first to discover what the server can do.
as served: 2026-09-23 → 2026-09-24
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
process_upload
their contract · 2026-09-23
"process_upload"
their contract · 2026-09-24
absent
as served: 2026-09-23 → 2026-09-24
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
question_to_map description
Render a geographic map from a question. TO MAP A FILE (CSV/XLSX/JSON) — you MUST upload it first, in this order: 1) call create_upload {file_name} -> returns { upload_id, put_url } 2) HTTP PUT the raw file bytes your data. Call upload_file first to put_url (use the returned headers) 3) call process_upload {upload_id, ...your intent} -> validates the file 4) call question_to_map {question, upload_id, geo_column?, value_column?} Do NOT call question_to_map with ingest a file path or CSV/XLSX file, then pass the raw bytes for an uploaded document returned file_key: {"question": "show total by pincode", "file_key": "mcp-uploads/2026/01/15/<uuid>.csv"}. The file_key is reusable — for additional questions on the same file, pass the upload_id same file_key again without re-uploading. Alternatively, pass rows directly as 'data' (e.g. from step 1. Reuse the SAME upload_id on every follow-up about that file (e.g. 'now show it by district'). Ways to provide data: 1. Uploaded document (preferred): upload_file preview): {"question": "show total by pincode", "upload_id": "<from create_upload>", "geo_column": "pincode", "value_column": "total"} 2. Question only (DB): {"question": "ola sales in delhi ncr"} 3. CSV inline (small only): {"question": "show sales", "csv": "state,sales\nMaharashtra,500", "geo_column": "state", "value_column": "sales"} INTENT (all optional; "data": [<rows>]} geo_column and value_column are preferred if you know them, pass them easily identifiable from the column names, but not required — your values win over auto-detection): geo_column, value_column, geo_level (state|district|pincode|rto|city|ac|pc), map_type, state_hint. If you omit upload_id, the server falls back to auto-detects them using a geo-match service that matches your most recent upload; passing it is more reliable. data against known Indian geographies (states, districts, ACs, PCs, pincodes, RTOs, cities). Hints: geo_column usually contains place names (state, district, city, pincode, constituency) or numeric codes (pincode=560049); value_column usually contains the metric to plot (sales, count, total, percentage) or a category (party affiliation, status, type). If value_column is 'total' and absent from the doesn't exist in data, all numeric columns are summed automatically. String value columns render as categorical maps (each distinct value gets its own color, e.g. party affiliation). If the server cannot determine which columns to use, it returns a 'clarification_required' response with suggested columns and guidance — pick a geo_column and value_column from the suggestions and re-call. Supported geo types: state, district, pincode, rto, city, ac, pc.
as served: 2026-09-23 → 2026-09-24
info input input-optional-property-removed Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which. #
question_to_map inputcsv
their contract · 2026-09-23
{"type":"string"}
their contract · 2026-09-24
absent
location
input.csv
as served: 2026-09-23 → 2026-09-24
info input input-optional-property-removed Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which. #
question_to_map inputfile_path
their contract · 2026-09-23
{"type":"string"}
their contract · 2026-09-24
absent
location
input.file_path
as served: 2026-09-23 → 2026-09-24
info input input-optional-property-removed Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which. #
question_to_map inputupload_id
their contract · 2026-09-23
{"type":"string"}
their contract · 2026-09-24
absent
location
input.upload_id
as served: 2026-09-23 → 2026-09-24
2026-09-08 → 2026-09-09 1 warning 1 tool
1 description-changedas served: 2026-09-08 → 2026-09-09on the index
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
question_to_map description
Render a geographic map from a question. Ways TO MAP A FILE (CSV/XLSX/JSON) — you MUST upload it first, in this order: 1) call create_upload {file_name} -> returns { upload_id, put_url } 2) HTTP PUT the raw file bytes to provide data: put_url (use the returned headers) 3) call process_upload {upload_id, ...your intent} -> validates the file 4) call question_to_map {question, upload_id, geo_column?, value_column?} Do NOT call question_to_map with a file path or the raw bytes for an uploaded document — pass the upload_id from step 1. Question only (DB): {"question": "ola sales in delhi ncr"} 2. Upload id (large files): {"question": "show total by pincode", "upload_id": "<from create_upload/process_upload>", "geo_column": "pincode", "value_column": "total"} Keep passing Reuse the SAME upload_id on every follow-up about that file (e.g. 'now show it by district'). If you omit it, the server tries your most recent upload, but passing it is more reliable. 3. File path: Ways to provide data: 1. Uploaded document (preferred): {"question": "show total by pincode", "file_path": "/path/to/data.csv", "upload_id": "<from create_upload>", "geo_column": "pincode", "value_column": "total"} 4. 2. Question only (DB): {"question": "ola sales in delhi ncr"} 3. CSV inline: inline (small only): {"question": "show sales", "csv": "state,sales\nMaharashtra,500", "geo_column": "state", "value_column": "sales"} IMPORTANT: When providing data (file_path/csv/data), ALWAYS specify geo_column and value_column. INTENT (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. If you omit upload_id, the server falls back to your most recent upload; passing it is more reliable. If value_column is 'total' and doesn't exist in absent from the data, all numeric columns are summed automatically. geo_column can be numeric (pincode=560049) — detected by column name. Supported geo types: state, district, pincode, rto, city, ac, pc.
as served: 2026-09-08 → 2026-09-09
2026-09-04 → 2026-09-05 1 breaking 1 warning 2 tools
1 description-changed1 operation-removedas served: 2026-09-04 → 2026-09-05on the index
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
parse_file
their contract · 2026-09-04
"parse_file"
their contract · 2026-09-05
absent
as served: 2026-09-04 → 2026-09-05
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
question_to_map description
Render a geographic map from a question. Three ways Ways to provide data: 1. Question only (DB): {"question": "ola sales in delhi ncr"} 2. Upload id (large files): {"question": "show total by pincode", "upload_id": "<from create_upload/process_upload>", "geo_column": "pincode", "value_column": "total"} Keep passing the SAME upload_id on every follow-up about that file (e.g. 'now show it by district'). If you omit it, the server tries your most recent upload, but passing it is more reliable. 3. File path: {"question": "show total by pincode", "file_path": "/path/to/data.csv", "geo_column": "pincode", "value_column": "total"} 3. 4. CSV inline: {"question": "show sales", "csv": "state,sales\nMaharashtra,500", "geo_column": "state", "value_column": […]
as served: 2026-09-04 → 2026-09-05
2026-09-03 → 2026-09-04 5 breaking 5 tools
5 operation-removedas served: 2026-09-03 → 2026-09-04on the index
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
get_index
their contract · 2026-09-03
"get_index"
their contract · 2026-09-04
absent
as served: 2026-09-03 → 2026-09-04
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
list_geographies
their contract · 2026-09-03
"list_geographies"
their contract · 2026-09-04
absent
as served: 2026-09-03 → 2026-09-04
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
list_indices
their contract · 2026-09-03
"list_indices"
their contract · 2026-09-04
absent
as served: 2026-09-03 → 2026-09-04
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
render_map
their contract · 2026-09-03
"render_map"
their contract · 2026-09-04
absent
as served: 2026-09-03 → 2026-09-04
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
validate_map
their contract · 2026-09-03
"validate_map"
their contract · 2026-09-04
absent
as served: 2026-09-03 → 2026-09-04

03 / tool inventory · as served on 2026-10-15

5 tools in the latest contract.

From the snapshot as served; descriptions shortened to their first sentence. “Changes” counts this server’s findings on the tool.

Tools in the latest snapshot with their input property counts, outputSchema declaration and finding counts
ToolDescriptionInputsRequiredoutputSchemaAnnotationsChanges
geocode Geocode addresses from an uploaded CSV or XLSX file into latitude/longitude. 7 0 none 0
get_capabilities Return the server's capability matrix: supported map types, geo types, output formats, classification methods, and the list of tools available in this process (which varies by conf… 0 0 declared 1
question_to_map Render a geographic map from your data. 15 1 declared 8
reverse_geocode Turn latitude/longitude coordinates in an uploaded CSV or XLSX into addresses. 9 0 none 0
upload_file Upload a CSV or XLSX file for server-side ingestion under policy (auth, size cap, malware scan, injected-intent scan) and receive a file_key. 5 2 none 0