{
  "server": "latlong-map",
  "url": "https://geocp.latlong.ai/mcp/",
  "date": "2026-09-24",
  "protocolVersion": "2025-11-25",
  "serverInfo": {
    "name": "latlong-maps",
    "version": "1.0.0"
  },
  "listChangedDeclared": true,
  "toolCount": 3,
  "outputSchemaCoveragePct": 66.66,
  "tools": [
    {
      "description": "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 configuration). Call this first to discover what the server can do.",
      "inputSchema": {
        "additionalProperties": false,
        "type": "object"
      },
      "name": "get_capabilities",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "auto_level_detection": {
            "type": "boolean"
          },
          "available_indices": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "available_tools": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "classification_methods": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "default_output": {
            "type": "string"
          },
          "geo_detection": {
            "type": "boolean"
          },
          "geo_levels": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "guidance": {
            "additionalProperties": false,
            "properties": {
              "allow_freeform": {
                "type": "boolean"
              },
              "next_actions": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "arguments_from": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "reason": {
                      "type": "string"
                    },
                    "tool": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "label",
                    "tool"
                  ],
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "next_steps_text": {
                "type": "string"
              }
            },
            "required": [
              "next_actions",
              "allow_freeform",
              "next_steps_text"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "index_modes": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "map_types": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "output_formats": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "png_supported": {
            "type": "boolean"
          },
          "stateless_only": {
            "type": "boolean"
          },
          "svg_default": {
            "type": "boolean"
          }
        },
        "required": [
          "map_types",
          "geo_levels",
          "output_formats",
          "default_output",
          "classification_methods",
          "available_indices",
          "index_modes",
          "geo_detection",
          "auto_level_detection",
          "svg_default",
          "png_supported",
          "stateless_only",
          "available_tools"
        ],
        "type": "object"
      }
    },
    {
      "description": "Render a geographic map from your data. Call upload_file first to ingest a CSV/XLSX file, then pass the returned file_key: {\"question\": \"show total by pincode\", \"file_key\": \"mcp-uploads/2026/01/15/\u003cuuid\u003e.csv\"}. The file_key is reusable — for additional questions on the same file, pass the same file_key again without re-uploading.\n\nAlternatively, pass rows directly as 'data' (e.g. from the upload_file preview): {\"question\": \"show total by pincode\", \"data\": [\u003crows\u003e]}\n\ngeo_column and value_column are preferred if easily identifiable from the column names, but not required — the server auto-detects them using a geo-match service that matches your data against known Indian geographies (states, districts, ACs, PCs, pincodes, RTOs, cities).\nHints: 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).\nIf value_column is 'total' and 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.\nSupported geo types: state, district, pincode, rto, city, ac, pc.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "detected_geo": {
            "additionalProperties": false,
            "properties": {
              "column": {
                "type": "string"
              },
              "confidence": {
                "type": "number"
              },
              "geo_type": {
                "type": "string"
              },
              "matched_count": {
                "type": "integer"
              },
              "parent": {
                "type": "string"
              },
              "total_count": {
                "type": "integer"
              }
            },
            "required": [
              "column",
              "geo_type",
              "confidence",
              "matched_count",
              "total_count"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "enrich_with": {
            "additionalProperties": false,
            "properties": {
              "columns": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "join_on": {
                "type": "string"
              },
              "table": {
                "type": "string"
              }
            },
            "required": [
              "table",
              "columns"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "file_key": {
            "type": "string"
          },
          "geo_column": {
            "type": "string"
          },
          "geo_level": {
            "type": "string"
          },
          "map_type": {
            "type": "string"
          },
          "output_format": {
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "render_params": {
            "additionalProperties": true,
            "type": "object"
          },
          "sheet": {
            "type": "string"
          },
          "state_hint": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "style": {
            "additionalProperties": true,
            "type": "object"
          },
          "table": {
            "type": "string"
          },
          "value_column": {
            "type": "string"
          }
        },
        "required": [
          "question"
        ],
        "type": "object"
      },
      "name": "question_to_map",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "aggregation_applied": {
            "additionalProperties": false,
            "properties": {
              "aggregated_rows": {
                "type": "integer"
              },
              "grouped_by": {
                "type": "string"
              },
              "method": {
                "type": "string"
              },
              "note": {
                "type": "string"
              },
              "original_rows": {
                "type": "integer"
              }
            },
            "required": [
              "original_rows",
              "aggregated_rows",
              "method",
              "note"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "clarification": {
            "additionalProperties": false,
            "properties": {
              "columns": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "type",
                    "class"
                  ],
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "guidance": {
                "additionalProperties": false,
                "properties": {
                  "allow_freeform": {
                    "type": "boolean"
                  },
                  "next_actions": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "arguments": {
                          "additionalProperties": true,
                          "type": "object"
                        },
                        "arguments_from": {
                          "type": "string"
                        },
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "reason": {
                          "type": "string"
                        },
                        "tool": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "tool"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "null",
                      "array"
                    ]
                  },
                  "next_steps_text": {
                    "type": "string"
                  }
                },
                "required": [
                  "next_actions",
                  "allow_freeform",
                  "next_steps_text"
                ],
                "type": [
                  "null",
                  "object"
                ]
              },
              "message": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "suggested_geo_columns": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "suggested_value_columns": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              }
            },
            "required": [
              "status",
              "message",
              "columns",
              "suggested_geo_columns",
              "suggested_value_columns"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "computed_data": {
            "additionalProperties": false,
            "properties": {
              "columns": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "returned_rows": {
                "type": "integer"
              },
              "rows": {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "sort_column": {
                "type": "string"
              },
              "sort_order": {
                "type": "string"
              },
              "total_rows": {
                "type": "integer"
              }
            },
            "required": [
              "columns",
              "rows",
              "total_rows",
              "returned_rows"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "confidence": {
            "type": "number"
          },
          "guidance": {
            "additionalProperties": false,
            "properties": {
              "allow_freeform": {
                "type": "boolean"
              },
              "next_actions": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "arguments_from": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "reason": {
                      "type": "string"
                    },
                    "tool": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "label",
                    "tool"
                  ],
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "next_steps_text": {
                "type": "string"
              }
            },
            "required": [
              "next_actions",
              "allow_freeform",
              "next_steps_text"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "level_resolution": {
            "additionalProperties": false,
            "properties": {
              "aggregations": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "columns": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "dataset": {
                      "type": "string"
                    },
                    "from_level": {
                      "type": "string"
                    },
                    "method": {
                      "type": "string"
                    },
                    "to_level": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "dataset",
                    "from_level",
                    "to_level",
                    "method",
                    "columns"
                  ],
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "alternatives": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "datasets": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "geo_col": {
                      "type": "string"
                    },
                    "level": {
                      "type": "string"
                    },
                    "rows": {
                      "type": "integer"
                    },
                    "source": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "source",
                    "level",
                    "geo_col",
                    "rows"
                  ],
                  "type": "object"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "method": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "resolved_level": {
                "type": "string"
              }
            },
            "required": [
              "datasets",
              "resolved_level",
              "method"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "map": {
            "additionalProperties": false,
            "properties": {
              "active_count": {
                "type": "integer"
              },
              "dimensions": {
                "additionalProperties": false,
                "properties": {
                  "height": {
                    "type": "integer"
                  },
                  "width": {
                    "type": "integer"
                  }
                },
                "required": [
                  "width",
                  "height"
                ],
                "type": [
                  "null",
                  "object"
                ]
              },
              "expires_at": {
                "type": "string"
              },
              "format": {
                "type": "string"
              },
              "geo_scope": {
                "type": "string"
              },
              "html_url": {
                "type": "string"
              },
              "join_summary": {
                "additionalProperties": false,
                "properties": {
                  "matched": {
                    "type": "integer"
                  },
                  "total": {
                    "type": "integer"
                  },
                  "unmatched": {
                    "type": "integer"
                  }
                },
                "required": [
                  "matched",
                  "unmatched",
                  "total"
                ],
                "type": [
                  "null",
                  "object"
                ]
              },
              "mime_type": {
                "type": "string"
              },
              "preview_image_base64": {
                "type": "string"
              },
              "render_id": {
                "type": "string"
              },
              "subtitle": {
                "type": "string"
              },
              "svg_url": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "total_count": {
                "type": "integer"
              },
              "total_value": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "value_label": {
                "type": "string"
              }
            },
            "required": [
              "url",
              "format",
              "render_id"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "mode": {
            "type": "string"
          },
          "points_plotted": {
            "type": "integer"
          },
          "points_rejected": {
            "type": "integer"
          },
          "rejected_rows": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          },
          "resolution_method": {
            "type": "string"
          },
          "resolved_params": {
            "additionalProperties": false,
            "properties": {
              "geo_column": {
                "type": "string"
              },
              "geo_type": {
                "type": "string"
              },
              "map_type": {
                "type": "string"
              },
              "state_hint": {
                "items": {
                  "type": "string"
                },
                "type": [
                  "null",
                  "array"
                ]
              },
              "style": {
                "additionalProperties": true,
                "type": "object"
              },
              "value_column": {
                "type": "string"
              }
            },
            "required": [
              "map_type",
              "geo_type",
              "geo_column",
              "value_column"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "usage": {
            "additionalProperties": false,
            "properties": {
              "breakdown": {
                "additionalProperties": {
                  "type": "integer"
                },
                "type": "object"
              },
              "month_limit": {
                "type": "integer"
              },
              "month_remaining": {
                "type": "integer"
              },
              "month_used": {
                "type": "integer"
              },
              "this_call": {
                "type": "integer"
              }
            },
            "required": [
              "this_call",
              "breakdown",
              "month_used",
              "month_limit",
              "month_remaining"
            ],
            "type": [
              "null",
              "object"
            ]
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": [
              "null",
              "array"
            ]
          }
        },
        "required": [
          "mode"
        ],
        "type": "object"
      }
    },
    {
      "description": "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. This is the first step before calling question_to_map with your own data.\n\nStep 1: Call upload_file with file_name, file_size, and question. The response contains a signed upload_url and a curl command — run the curl command to POST the file bytes. The curl response contains file_key, columns, a row preview, and optionally 'intent' (geo-match service detected geo_column, geo_level, value_column, map_type, confidence) and 'guidance' (a ready-to-fire question_to_map action with all detected parameters pre-filled). Forward the intent fields into question_to_map to skip auto-detection and render immediately.\n\nFor multi-sheet XLSX: the curl response is 'sheet_selection_required' with a file_key and sheets list. Pass file_key and sheet to question_to_map (or any other tool that accepts file_key) — do not call upload_file again.\n\nAfter upload, pass the returned file_key to question_to_map to render a map from the full dataset. The file_key is reusable — for additional questions on the same file, pass the same file_key again without re-uploading. When the upload response includes 'guidance', use its next_actions directly for a zero-round-trip render.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "file_key": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          },
          "file_size": {
            "type": "integer"
          },
          "question": {
            "type": "string"
          },
          "sheet": {
            "type": "string"
          }
        },
        "required": [
          "file_name",
          "file_size"
        ],
        "type": "object"
      },
      "name": "upload_file"
    }
  ]
}
