Skip to main content
Glama

Crime in a Dutch neighbourhood (paid)

nl_crime
Read-onlyIdempotent

Use when the user asks whether a Dutch neighbourhood or postcode is safe: police-registered crime per 1,000 residents vs the national rate, split into burglary, bicycle theft, vehicle crime, violence and vandalism, with counts and a ratio. Input: Dutch postcode or CBS buurt code. Source: Politie open data, CBS. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.

Input Schema

NameRequiredDescriptionDefault
codeNoAlternative: CBS neighbourhood code, e.g. BU05182245
api_keyNoFactline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed
postcodeNoAny Dutch postcode in the neighbourhood, e.g. 2517AS

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / api_key
      Added value: +{
      +  "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world and non-destructive semantics, so the description does not need to repeat them. It instead adds genuinely useful operational context: the data source (Politie open data, CBS), the exact price (0.003 USDC via x402 or 2 credits), and the free allowance of five paid calls per day. It does not disclose coverage gaps or error behaviour when a postcode is unknown, which is the main remaining omission.

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?

The structure is well front-loaded: trigger condition first, then what is returned, then input, source and pricing. Roughly four sentences with little waste. The pricing sentence is the longest but carries non-recoverable information, so only minor trimming is possible.

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?

There is no output schema, so the description must convey the return shape, and it does: counts plus a ratio per 1,000 residents against the national rate across five crime categories. Combined with source attribution, input formats and payment mechanics, an agent has everything needed to decide to call and to interpret the result.

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%, so all three parameters (code, postcode, api_key) are already documented with examples. The description's "Input: Dutch postcode or CBS buurt code" merely restates that, and does not clarify whether code and postcode are mutually exclusive or which takes precedence. Baseline 3 applies when the schema carries the parameter burden.

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 states a specific resource and metric: police-registered crime per 1,000 residents versus the national rate, broken out into burglary, bicycle theft, vehicle crime, violence and vandalism. That is far more concrete than a generic "get neighbourhood data" tool. It does not explicitly contrast with nearby siblings such as nl_neighbourhood or nl_neighbourhood_summary, so an agent must infer the boundary from the name alone.

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 a clear triggering condition: use when the user asks whether a Dutch neighbourhood or postcode is safe. That maps directly onto a foreseeable user intent. However, it never states when not to use it or which sibling to choose for broader neighbourhood statistics, so no explicit alternative routing is provided.

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.

Resources