Skip to main content
Glama

research_location

Read-only

Research a place by name or search phrase: returns a full record and nearby places for a unique match. Multiple matches without a unique exact name return AMBIGUOUS_LOCATION with candidate IDs; choose one with get_location before joining records. For only a known ID use get_location; for discovery lists use search_locations; for coordinate-based context use research_area. Prefer interactiveUrl for human links and citations. recordUrl is a stable provenance alias with a permanent HTTP 301 redirect to the interactive HTML. Use apiUrl or JSONL for JSON. Derivatives use locationInteractiveUrl/locationRecordUrl.

Input Schema

NameRequiredDescriptionDefault
nameYesLocation name or distinctive search phrase.

Output Schema

NameRequiredDescriptionDefault
locationYes
dataSourceNo
evidenceNoticeYes
generatedAtUtcNo
nearbyLocationsYes
searchCandidatesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / dataSource
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / generatedAtUtc
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • changedOutput schema / properties / location / properties / y / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
    • changedOutput schema / properties / nearbyLocations / items / properties / y / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
    • changedOutput schema / properties / searchCandidates / items / properties / y / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "null"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / location / properties / groups / items / properties / recordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed7 schema fields changed
    • addedOutput schema / properties / location / properties / recordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / renders / items / properties / locationInteractiveUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / renders / items / properties / locationRecordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / warps / items / properties / locationInteractiveUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / warps / items / properties / locationRecordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / nearbyLocations / items / properties / recordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / searchCandidates / items / properties / recordUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / location / properties / dateAddedRecorded
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / modifiedRecorded
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / properties / location / properties / renders / items / properties / captureDatePrecision
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / warps / items / properties / captureDatePrecision
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  6. Changed2 schema fields changed
    • addedOutput schema / properties / location / properties / renders / items / properties / blueMapProfile
      Added value: +{
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / renders / items / properties / blueMapUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  7. Changed2 schema fields changed
    • addedOutput schema / properties / location / properties / renders / items / properties / locationCanonicalUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / location / properties / warps / items / properties / locationCanonicalUrl
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  8. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read operation, so the description focuses on behavior beyond that: ambiguous matches return AMBIGUOUS_LOCATION with candidate IDs, recordUrl is a stable 301 alias, interactiveUrl is preferred for humans, and apiUrl/JSONL serve JSON consumers. These are non-obvious operational details that the agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage alternatives, then URL semantics. It is dense but every sentence carries routing or behavioral information; the URL alias block is slightly lengthy but still useful for citation and provenance decisions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, but the description still explains the ambiguity path and candidate-ID workflow. Combined with the sibling routing rules and URL provenance notes, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is one required parameter. The description only restates that the name can be a 'distinctive search phrase,' which the schema already says, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Research a place by name or search phrase') plus the output shape ('full record and nearby places'). It explicitly distinguishes itself from get_location and search_locations, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: use get_location for a known ID, search_locations for discovery lists, research_area for coordinate context. It also covers the ambiguous-name case and tells the agent to pick a candidate ID with get_location.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.