Skip to main content
Glama

Describe data

describe_data
Read-onlyIdempotent

The map of Close Knit's data; call it first, and whenever you are unsure of a metric, path or category name. No arguments: a summary (themes with metric counts and 2-3 headline metrics, Census in one line, places in one line, the entity kinds). theme='crime' lists that theme's metrics: unit, levels, period, coverage (England or London only), better end, what each measures and is not (name the metric you use; say when it differs from the question). query='trees' finds metrics with ranked within, source, own-row levels and England and region refs, paths, place categories and brands by words. kind='place' lists place categories with counts and brands; kind='school' the school measures; kind='lsoa' (or msoa, lad, rgn, pc, uprn, sector) the sections and select paths of that kind; kind='custom' the place presets; kind='ranking' the saved rankings for query(saved:); kind='guide' the site's guide articles, read with get(ids: ['guide:crime']).

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "describe_data"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNo[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, guides, the guided questions, or an entity kind's sections and paths
pageNo[paging] Page of a theme's metrics; next gives the following one.
queryNo[search: contains] Any of the words, any case, in ids, labels, categories, brands and paths
themeNo[filter: exact] one theme (nature, census, ...)
intentNo[input value] Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances.
rate_previousNo[input value] Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / kind / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "metric",
      -      "place",
      -      "school",
      -      "custom",
      -      "ranking",
      -      "guide",
      -      "rgn",
      -      "lad",
      -      "msoa",
      -      "lsoa",
      -      "sector",
      -      "pc",
      -      "uprn"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "metric",
      +      "place",
      +      "school",
      +      "custom",
      +      "ranking",
      +      "guide",
      +      "questions",
      +      "rgn",
      +      "lad",
      +      "msoa",
      +      "lsoa",
      +      "sector",
      +      "pc",
      +      "uprn"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / kind / description
      Previous value: -"[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, the guide's articles, or an entity kind's sections and paths"New value: +"[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, guides, the guided questions, or an entity kind's sections and paths"
  2. Changed2 schema fields changed
    • changedInput schema / properties / kind / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "metric",
      -      "place",
      -      "school",
      -      "custom",
      -      "ranking",
      -      "rgn",
      -      "lad",
      -      "msoa",
      -      "lsoa",
      -      "sector",
      -      "pc",
      -      "uprn"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "metric",
      +      "place",
      +      "school",
      +      "custom",
      +      "ranking",
      +      "guide",
      +      "rgn",
      +      "lad",
      +      "msoa",
      +      "lsoa",
      +      "sector",
      +      "pc",
      +      "uprn"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / kind / description
      Previous value: -"[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, or an entity kind's sections and paths"New value: +"[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, the guide's articles, or an entity kind's sections and paths"
  3. Changed11 schema fields changed
    • changedInput schema / $defs / RatePrevious / properties / bad / description
      Previous value: -"What was wrong, missing or confusing."New value: +"[input value] What was wrong, missing or confusing."
    • changedInput schema / $defs / RatePrevious / properties / call_id / description
      Previous value: -"The callId of the answer you are rating; leave it out when answers carry none."New value: +"[id] The callId of the answer you are rating; leave it out when answers carry none."
    • changedInput schema / $defs / RatePrevious / properties / fix / description
      Previous value: -"The change to the tool or its answer you would want."New value: +"[input value] The change to the tool or its answer you would want."
    • changedInput schema / $defs / RatePrevious / properties / good / description
      Previous value: -"What was useful in the answer."New value: +"[input value] What was useful in the answer."
    • changedInput schema / $defs / RatePrevious / properties / rating / description
      Previous value: -"1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed."New value: +"[input value] 1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed."
    • changedInput schema / properties / intent / description
      Previous value: -"Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances."New value: +"[input value] Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances."
    • changedInput schema / properties / kind / description
      Previous value: -"what to describe: metric (default), place categories, school measures, custom presets, saved rankings, or an entity kind's sections and paths"New value: +"[option] what to describe: metric (default), place categories, school measures, custom presets, saved rankings, or an entity kind's sections and paths"
    • addedInput schema / properties / page / description
      Added value: +"[paging] Page of a theme's metrics; next gives the following one."
    • changedInput schema / properties / query / description
      Previous value: -"words matched against ids, labels, categories, brands and paths"New value: +"[search: contains] Any of the words, any case, in ids, labels, categories, brands and paths"
    • changedInput schema / properties / rate_previous / description
      Previous value: -"Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."New value: +"[input value] Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."
    • changedInput schema / properties / theme / description
      Previous value: -"one theme (nature, census, ...)"New value: +"[filter: exact] one theme (nature, census, ...)"
  4. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds genuinely new behavior: the no-argument default returns a summary, theme results are paged ('next gives the following one'), coverage is 'England or London only', and query results come ranked with sources and refs. These are real traits not visible in the annotations.

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

Conciseness3/5

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

The opening clause is well front-loaded, but the body is one long run-on of semicolon-joined fragments and parenthetical abbreviations that is hard to parse and skims several modes. Every clause carries information, but the density works against comprehension rather than for it.

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

Completeness4/5

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

For a 6-parameter, 14-enum-value discovery tool with a rich output schema and full annotations, the description covers most modes adequately and does not need to restate return shapes. The gaps are the unmentioned 'questions' kind and no guidance on combining query with kind or theme, which an agent would have to infer.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by explaining what each kind value actually returns (place categories with counts and brands, lsoa/msoa/lad/rgn/pc/uprn sections and select paths, ranking for query(saved:)). It still omits the 'questions' enum value entirely and adds nothing for intent or rate_previous, so it is not fully complete over the schema.

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

Purpose4/5

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

The description identifies this as a discovery/introspection entry point ('The map of Close Knit's data') and enumerates what each mode returns (themes, metrics, place categories, school measures, entity kinds, saved rankings, guides). That is a clear, specific purpose an agent can act on. It stops short of 5 because it never positions itself against near-duplicate siblings such as list_metrics, list_school_measures and list_custom_presets, which also look like catalog tools.

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

Usage Guidelines4/5

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

It gives an explicit trigger — 'call it first, and whenever you are unsure of a metric, path or category name' — which is exactly the when-to-use signal an agent needs. It also adds in-mode guidance ('name the metric you use; say when it differs from the question'). It gives no when-NOT-to-use or alternative-routing advice against the overlapping list_* siblings.

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.