Skip to main content
Glama

KentekenKompas

Server Details

Read-only Dutch vehicle knowledge, comparisons, terminology and cited sources for AI clients.

Ownership verified
Status
Healthy
Uptime
100.0% over 24 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool serves a distinct retrieval purpose: model comparison, term explanation, answer context, fuel price status, model context, source context, and knowledge search. Descriptions clearly delineate boundaries and direct users to the correct tool for each use case, minimizing ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., compare_vehicle_models, get_model_context, search_vehicle_knowledge). The verbs and objects are intuitive and uniformly formatted, making the API predictable.

Tool Count5/5

With 7 tools, the server is well-scoped for a read-only knowledge retrieval domain. Each tool addresses a specific retrieval need without redundancy or bloat, striking an appropriate balance between coverage and simplicity.

Completeness5/5

The tool surface fully covers the apparent domain of Dutch vehicle knowledge retrieval: search, model context, answer context, term explanation, source context, model comparison, and fuel price provenance. As a read-only server, no CRUD operations are needed, and there are no obvious dead ends for agents.

Available Tools

7 tools
compare_vehicle_modelsA
Read-onlyIdempotent
Inspect

Read one stored sourceModelKey-to-targetModelKey relation, not a generated comparison. Returns model keys, relationType/meaning and rationale, with evidence, sources and citations. Preserve classification and limitations; do not strengthen the stored claims. Only DIRECT_ALTERNATIVE denotes a direct alternative. Existing models need not have a relation; the reverse direction is a separate lookup. Use get_model_context for one model and its peers, or search_vehicle_knowledge to discover keys. Unknown model returns MODEL_NOT_FOUND; self/missing relation returns COMPARISON_NOT_AVAILABLE. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceModelKeyYesRequired exact canonical model key whose stored outgoing peer relation is read. 1–200 lowercase ASCII letters/digits in single-hyphen-separated groups, e.g. volkswagen-golf; exact match, direction matters. Use get_model_context to discover peers.
targetModelKeyYesRequired exact canonical key of the target in the source model's stored peers. 1–200 lowercase ASCII letters/digits in single-hyphen-separated groups; exact match, must differ from sourceModelKey. Existence of two models does not guarantee a relation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds significant extra behavior: no knowledge writes, rate-limit consumption, exact error codes (MODEL_NOT_FOUND, COMPARISON_NOT_AVAILABLE), and the instruction not to strengthen stored claims. This goes well beyond 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.

Conciseness5/5

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

The description is dense but every sentence earns its place: core purpose, return content, behavioral constraints, alternative tools, error conditions, and access implications. The key differentiator ('not a generated comparison') is front-loaded, and there is no filler.

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?

The description is complete for a two-parameter lookup tool: purpose, relation semantics, error cases, sibling routing, access rights, rate limits, and output content are all covered. An output schema exists, so return-value structure does not need to be restated.

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 the schema already documents exact canonical keys, directionality, and the no-guaranteed-relation caveat. The description reinforces these concepts but does not add much parameter-specific meaning beyond what the schema provides, so the high-coverage baseline of 3 is appropriate.

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?

The description opens with a specific verb-resource pair: 'Read one stored sourceModelKey-to-targetModelKey relation', and immediately clarifies it is not a generated comparison. This distinguishes it from any hypothetical comparison tool and from the sibling lookup tools.

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?

Explicit alternatives are given: use get_model_context for one model and its peers, or search_vehicle_knowledge to discover keys. It also clearly states that only DIRECT_ALTERNATIVE denotes a direct alternative and that the reverse direction is a separate lookup, leaving no ambiguity about when or how to use it.

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

explain_dutch_vehicle_termA
Read-onlyIdempotent
Inspect

Read one existing Dutch vehicle definition by lowercase term slug or term.. Use search_vehicle_knowledge for free text or an unknown key, get_answer_context for a known answerId, or get_model_context for model-specific context. No fuzzy definition generation. Unknown valid key returns TERM_NOT_FOUND; uppercase/spaced inputs fail validation before normalization. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
termKeyYesExisting lowercase term slug or the same slug prefixed with term., e.g. apk or term.apk. 1–200 characters; ASCII letters/digits with single hyphen separators. No spaces, uppercase or fuzzy matching; these fail schema validation before normalization.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description adds significant behavior beyond those: unknown valid keys return TERM_NOT_FOUND, uppercase/spaced inputs fail validation before normalization, calls consume rate limits, and no knowledge writes occur. There is no contradiction with 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.

Conciseness5/5

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

The description is dense but efficient, front-loading the core action and input format, then handling routing, error behavior, access, and rate limits in a compact sequence. Every sentence contributes distinct information, and nothing is redundant or filler.

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?

For a single-parameter read tool with a full output schema and safety annotations, the description covers input format, validation failure mode, unknown-key behavior, sibling routing, access level, and rate-limit impact. An agent has everything needed to decide whether and how to invoke this tool 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 the schema already documents the termKey format, pattern, length, examples, and the fact that uppercase/spaced/fuzzy inputs fail validation. The tool description mainly restates these constraints rather than adding new parameter-level meaning, so a baseline 3 is appropriate.

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?

The description opens with a precise verb and resource: 'Read one existing Dutch vehicle definition', and it specifies the exact input form (lowercase slug or term.<slug>). It also explicitly names sibling tools, so an agent can distinguish this from search_vehicle_knowledge, get_answer_context, and get_model_context without inspecting their schemas.

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?

The description gives explicit routing guidance: use search_vehicle_knowledge for free text or unknown keys, get_answer_context for a known answerId, and get_model_context for model-specific context. It also states what this tool does not do ('No fuzzy definition generation'), making when-not-to-use clear.

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

get_answer_contextA
Read-onlyIdempotent
Inspect

Read one existing Direct Answer by exact answerId; no text generation. Use search_vehicle_knowledge when the ID is unknown, get_model_context with includeAnswers=true for a model's answers, or explain_dutch_vehicle_term for a term key. Do not pass a free-text question as an ID. Unknown ID returns ANSWER_NOT_FOUND; preserve the returned evidence and limitations. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
answerIdYesStable existing Direct Answer identifier, 1–200 characters, matching answer.<lowercase-model-or-topic>.<lowercase-intent> (ASCII letters, digits and hyphens in both parts). Copy the full ID from discovery; no free-text question.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark readOnly, idempotent, non-destructive, but the description adds valuable behaviors beyond that: 'no text generation,' 'Unknown ID returns ANSWER_NOT_FOUND; preserve the returned evidence and limitations,' and 'Calls consume rate limits.' These give the agent actionable expectations for errors, side effects, and operational constraints without contradicting annotations.

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

Conciseness5/5

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

Three tight sentences: purpose and non-behavior, routing to alternatives, and error/access constraints. No filler, each sentence earns its place, and the most important scoping information appears first.

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?

For a single-parameter read tool with an output schema and safety annotations, the description covers usage, error handling, alternative tools, access rights, and rate limits. There is no obvious gap an agent would face when selecting or calling this tool.

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?

The input schema already describes answerId thoroughly with a pattern, length limits, and an explicit 'no free-text question' note. The description mostly repeats this ('by exact answerId,' 'Do not pass a free-text question as an ID'), adding little new meaning beyond what the schema provides. Baseline of 3 applies because schema coverage is 100%.

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?

The description opens with 'Read one existing Direct Answer by exact answerId; no text generation,' which names a specific verb (read), a specific resource (one existing Direct Answer), and the exact input. It also lists sibling alternatives such as search_vehicle_knowledge, so a model can tell it apart immediately.

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?

It explicitly states when to use this tool versus alternatives: use search_vehicle_knowledge when the ID is unknown, get_model_context with includeAnswers=true for a model's answers, or explain_dutch_vehicle_term for a term key. It also gives a clear exclusion: 'Do not pass a free-text question as an ID.'

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

get_fuel_price_contextA
Read-onlyIdempotent
Inspect

Read the existing fuel-price provenance/status, not current pump prices or a vehicle's consumption. No arguments. Currently succeeds with SOURCE_REQUIRED_AT_RUNTIME and prices=[] because no validated current-price adapter is configured. Use get_source_context for an exact source ID or search_vehicle_knowledge for broader fuel knowledge. Never treat empty prices as zero or invent a current price. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses that the tool currently succeeds with SOURCE_REQUIRED_AT_RUNTIME and prices=[] because no validated current-price adapter is configured. It also notes rate limit consumption and public read-only access. This goes well beyond the annotations, which only declare readOnly/idempotent/destructive hints.

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

Conciseness5/5

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

Every sentence earns its place: scope, current behavior, alternatives, safety warning, access level, and rate-limit note. It is dense but not bloated, and the most important scoping information is front-loaded.

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?

For a zero-parameter read-only tool with an output schema, the description is complete. It explains the current runtime state, the empty prices behavior, and how to avoid misusing the result. Nothing an agent needs to call it correctly is missing.

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?

The tool has zero parameters, so the schema is trivially complete. The description adds no parameter-specific semantics because none are needed; the baseline for 0 params is 4, and the description appropriately states 'No arguments.'

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?

The description clearly states the tool reads fuel-price provenance/status, not current pump prices or vehicle consumption. It explicitly distinguishes itself from sibling tools and sets correct expectations about what it does and does not do.

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?

The description provides explicit when-to-use guidance, names alternatives (get_source_context, search_vehicle_knowledge), and includes a critical warning: never treat empty prices as zero or invent a current price. This is exemplary usage guidance.

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

get_model_contextA
Read-onlyIdempotent
Inspect

Read model-level knowledge for an exact modelKey; optionally include its existing Direct Answers. Use search_vehicle_knowledge to discover a key, get_answer_context for a known answerId, or compare_vehicle_models for a known pair. Not a license-plate lookup or individual-car assessment. Unknown key returns MODEL_NOT_FOUND; incomplete coverage remains a successful result with coverage and limitations. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelKeyYesCanonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate.
includeAnswersNoOptional, default false. When true, include the model's existing Direct Answers in data.answers and merge their evidence, sources and limitations. Does not generate answers or change the model's freshness.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context beyond annotations: 'Unknown key returns MODEL_NOT_FOUND; incomplete coverage remains a successful result with coverage and limitations' and 'Calls consume rate limits.'

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 description is concise with three sentences, front-loading the core purpose and including key routing and constraints. Each sentence adds value, though the 'Not a license-plate lookup' clause could be seen as extra given the schema already forbids it, but it strengthens usage clarity.

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?

The description is complete for this tool: it covers purpose, usage, behavior (error cases, rate limits), and alternatives, while the schema and output schema handle parameter and return specifics. The 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?

The schema provides 100% coverage for both parameters with detailed descriptions including format, constraints, and defaults. The description reaffirms they are read-only and the includeAnswers flag does not generate answers. Since the schema already covers semantics, the description adds limited extra value, fitting the baseline of 3.

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?

The description clearly states the tool reads model-level knowledge for a specific modelKey and optionally includes existing Direct Answers. It distinguishes it from related tools by naming alternatives for different use cases (search_vehicle_knowledge, get_answer_context, compare_vehicle_models) and explicitly states what it is not (license-plate lookup or individual-car assessment).

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?

The description explicitly provides when to use this tool and when to use alternatives: 'Use search_vehicle_knowledge to discover a key, get_answer_context for a known answerId, or compare_vehicle_models for a known pair.' This gives clear routing instructions, and the mention of public read-only access and rate limits sets expectations for usage.

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

get_source_contextA
Read-onlyIdempotent
Inspect

Read one public SOURCE or SOURCE_GROUP by exact opaque sourceId to inspect provenance, freshness and limitations. Use search_vehicle_knowledge to discover sources; get_model_context or get_answer_context retrieves the knowledge a source supports. Not a search by URL or source label. Never split composite-looking IDs. Unknown ID returns SOURCE_NOT_FOUND. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesOpaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description adds complementary context: public read-only access, no knowledge writes, SOURCE_NOT_FOUND on unknown IDs, and rate-limit consumption. None of this contradicts the annotations, and it goes beyond them with concrete failure behavior.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then efficiently covers alternatives, exclusions, error behavior, permissions, and side effects. Each sentence earns its place without redundancy or filler.

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?

For a single-parameter read-only tool with a full input schema, rich annotations, and an output schema, the description covers discovery, sibling differentiation, exact-ID requirements, failure mode, permissions, and rate limits. Nothing an agent needs to select and invoke it correctly is missing.

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 the schema fully documents the single sourceId parameter, including its pattern and length constraints. The description reinforces the 'copy exactly' and 'never split' guidance but does not add materially new parameter meaning beyond what the schema already provides.

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?

The description specifies a concrete verb and resource: 'Read one public SOURCE or SOURCE_GROUP by exact opaque sourceId to inspect provenance, freshness and limitations.' It also differentiates this tool from siblings by stating it is not a search by URL or label and by pointing to get_model_context/get_answer_context for the knowledge a source supports.

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?

The description gives explicit routing guidance: use search_vehicle_knowledge to discover sources, and use get_model_context or get_answer_context to retrieve the knowledge a source supports. It also gives clear operational constraints: match by exact sourceId, never split composite-looking IDs, and do not use as a URL/label search.

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

search_vehicle_knowledgeA
Read-onlyIdempotent
Inspect

Discover public models, existing answers, terms and provenance from free text when no canonical key is known. Use get_model_context, get_answer_context, explain_dutch_vehicle_term or get_source_context for known IDs; compare_vehicle_models for a known model pair; get_fuel_price_context for fuel-source status. Results use deterministic lexical/intent relevance, never AI confidence; no supported match returns data=[] with limitations. Public read-only access; no knowledge writes. Calls consume rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional maximum result count; integer 1–10 inclusive, default 5. Fewer or zero results may be returned; this MCP limit differs from other transports.
queryYesRequired free-text query, 1–200 raw characters, no ASCII control characters. Use at least two searchable characters after accent/case/punctuation normalization. Dutch terms and model names search the existing index using lexical tokens and intent rules; no semantic generation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesTool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope.
sourcesYesResolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID.
coverageNoAvailable coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations.
evidenceYesExposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance.
freshnessYesAvailable freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.
citationUrlNoHuman-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.
limitationsYesExplicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.
schemaVersionYesTransport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version.
knowledgeVersionYesActive knowledge release identifier from its manifest; not the API contract or MCP/registry server version.

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already mark the tool read-only and idempotent, and the description adds non-redundant context: results are 'deterministic lexical/intent relevance, never AI confidence,' no supported match returns 'data=[] with limitations,' and calls consume rate limits. This clarifies expected behavior beyond the structured hints, and nothing contradicts 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.

Conciseness5/5

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

The ~70-word description is front-loaded with purpose in the first sentence, then alternates usage guidance and behavioral traits in a logical order, ending with rate limits. No sentence is filler; each earns its place.

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?

Given a 2-parameter tool with full schema descriptions and an output schema, the description covers the use case, exclusions, deterministic behavior, no-match result shape, access rights, write prohibition, and rate-limit side effects. The only minor vagueness is the word 'limitations,' but the output schema handles return details.

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?

Both limit and query already carry detailed schema descriptions covering type, bounds, defaults, and normalization rules, so schema coverage is 100%. The description adds only high-level context that input is free-text and results are lexical/intent-based, but that is already reflected in the query description; it does not need to compensate.

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?

The description opens with the action 'Discover' and the resource 'public models, existing answers, terms and provenance from free text when no canonical key is known,' giving a specific verb and object. It immediately distinguishes from siblings by naming the ID-based tools and the known-pair comparator, so an agent can tell this tool apart without reading schemas.

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?

The text explicitly says to use get_model_context, get_answer_context, explain_dutch_vehicle_term, or get_source_context for known IDs, compare_vehicle_models for a known model pair, and get_fuel_price_context for fuel-source status. It also frames the primary use case with 'when no canonical key is known,' giving both when and when-not guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updates
    • Changedcompare_vehicle_models31 fields changed
      • addedInput schema / properties / sourceModelKey / description
        Added value: +"Required exact canonical model key whose stored outgoing peer relation is read. 1–200 lowercase ASCII letters/digits in single-hyphen-separated groups, e.g. volkswagen-golf; exact match, direction matters. Use get_model_context to discover peers."
      • addedInput schema / properties / targetModelKey / description
        Added value: +"Required exact canonical key of the target in the source model's stored peers. 1–200 lowercase ASCII letters/digits in single-hyphen-separated groups; exact match, must differ from sourceModelKey. Existence of two models does not guarantee a relation."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / importantDifference / description
        Added value: +"Optional published difference between these models; absent means not supplied."
      • addedOutput schema / properties / data / properties / label / description
        Added value: +"Human-readable label supplied by the knowledge record."
      • addedOutput schema / properties / data / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / rationale / description
        Added value: +"Published semantic rationale when supplied, otherwise the stored reasons; not newly generated explanation."
      • addedOutput schema / properties / data / properties / reasons / description
        Added value: +"Published reasons for the stored comparison relation."
      • addedOutput schema / properties / data / properties / relationMeaning / description
        Added value: +"Human-readable interpretation of the stored relationType."
      • addedOutput schema / properties / data / properties / relationType / description
        Added value: +"Stored relation kind. CONTROL_MODEL, POWERTRAIN_CONTRAST and CROSS_BODY_COMPARISON must not be called direct alternatives."
      • addedOutput schema / properties / data / properties / sourceModelKey / description
        Added value: +"Canonical source model key of the directed stored comparison relation."
      • addedOutput schema / properties / data / properties / targetModelKey / description
        Added value: +"Canonical target model key of the directed stored comparison relation."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedexplain_dutch_vehicle_term30 fields changed
      • addedInput schema / properties / termKey / description
        Added value: +"Existing lowercase term slug or the same slug prefixed with term., e.g. apk or term.apk. 1–200 characters; ASCII letters/digits with single hyphen separators. No spaces, uppercase or fuzzy matching; these fail schema validation before normalization."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / properties / answer / description
        Added value: +"Existing published answer text; returned without generating new factual claims."
      • addedOutput schema / properties / data / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / data / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / question / description
        Added value: +"Existing published question answered by this knowledge record."
      • addedOutput schema / properties / data / properties / schemaVersion / description
        Added value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version."
      • addedOutput schema / properties / data / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / data / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / data / properties / term / description
        Added value: +"Human-readable name of the existing Dutch vehicle term."
      • addedOutput schema / properties / data / properties / termId / description
        Added value: +"Canonical term identifier, including its term. prefix."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_answer_context32 fields changed
      • addedInput schema / properties / answerId / description
        Added value: +"Stable existing Direct Answer identifier, 1–200 characters, matching answer.<lowercase-model-or-topic>.<lowercase-intent> (ASCII letters, digits and hyphens in both parts). Copy the full ID from discovery; no free-text question."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / properties / answer / description
        Added value: +"Existing published answer text; returned without generating new factual claims."
      • addedOutput schema / properties / data / properties / answerId / description
        Added value: +"Stable existing Direct Answer identifier, 1–200 characters, matching answer.<lowercase-model-or-topic>.<lowercase-intent> (ASCII letters, digits and hyphens in both parts). Copy the full ID from discovery; no free-text question."
      • addedOutput schema / properties / data / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / evidenceIds / description
        Added value: +"Identifiers of the evidence supporting this answer; envelope evidence contains the exposed references."
      • addedOutput schema / properties / data / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / data / properties / intents / description
        Added value: +"Existing intent labels attached to this Direct Answer; these are discovery metadata, not generated confidence estimates."
      • addedOutput schema / properties / data / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / modelKey / description
        Added value: +"Canonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate."
      • addedOutput schema / properties / data / properties / question / description
        Added value: +"Existing published question answered by this knowledge record."
      • addedOutput schema / properties / data / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / data / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / data / properties / topic / description
        Added value: +"Optional topic identifier for a non-model or topic-specific Direct Answer."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_fuel_price_context27 fields changed
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / data / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / prices / description
        Added value: +"Always empty in this contract. Never interpret missing prices as zero or substitute an invented current price."
      • addedOutput schema / properties / data / properties / schemaVersion / description
        Added value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version."
      • addedOutput schema / properties / data / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / data / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / data / properties / status / description
        Added value: +"SOURCE_REQUIRED_AT_RUNTIME means there is no configured validated current-price adapter; this is a successful status response, not a current price."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_model_context61 fields changed
      • addedInput schema / properties / includeAnswers / description
        Added value: +"Optional, default false. When true, include the model's existing Direct Answers in data.answers and merge their evidence, sources and limitations. Does not generate answers or change the model's freshness."
      • addedInput schema / properties / modelKey / description
        Added value: +"Canonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / properties / answers / description
        Added value: +"Existing model Direct Answers, present only when includeAnswers=true; an empty list means none exposed for the model."
      • addedOutput schema / properties / data / properties / answers / items / properties / answer / description
        Added value: +"Existing published answer text; returned without generating new factual claims."
      • addedOutput schema / properties / data / properties / answers / items / properties / answerId / description
        Added value: +"Stable existing Direct Answer identifier, 1–200 characters, matching answer.<lowercase-model-or-topic>.<lowercase-intent> (ASCII letters, digits and hyphens in both parts). Copy the full ID from discovery; no free-text question."
      • addedOutput schema / properties / data / properties / answers / items / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / answers / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / answers / items / properties / evidenceIds / description
        Added value: +"Identifiers of the evidence supporting this answer; envelope evidence contains the exposed references."
      • addedOutput schema / properties / data / properties / answers / items / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / data / properties / answers / items / properties / intents / description
        Added value: +"Existing intent labels attached to this Direct Answer; these are discovery metadata, not generated confidence estimates."
      • addedOutput schema / properties / data / properties / answers / items / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / answers / items / properties / modelKey / description
        Added value: +"Canonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate."
      • addedOutput schema / properties / data / properties / answers / items / properties / question / description
        Added value: +"Existing published question answered by this knowledge record."
      • addedOutput schema / properties / data / properties / answers / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / data / properties / answers / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / data / properties / answers / items / properties / topic / description
        Added value: +"Optional topic identifier for a non-model or topic-specific Direct Answer."
      • addedOutput schema / properties / data / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / properties / model / description
        Added value: +"Validated model-level knowledge; not an assessment of one individual vehicle."
      • addedOutput schema / properties / data / properties / model / properties / bodyProfile / description
        Added value: +"Imported public body-style profile. Retains the knowledge release's nested fields; not specifications of an individual vehicle."
      • addedOutput schema / properties / data / properties / model / properties / brand / description
        Added value: +"Brand label of the canonical model, not an individual vehicle registration."
      • addedOutput schema / properties / data / properties / model / properties / buyerActions / description
        Added value: +"Existing public buyer checks/actions; no external action is performed by returning them."
      • addedOutput schema / properties / data / properties / model / properties / canonicalRoute / description
        Added value: +"Relative human-readable website route for the canonical model."
      • addedOutput schema / properties / data / properties / model / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / properties / model / properties / configurationProfile / description
        Added value: +"Imported public configuration context; available variants and coverage are release-specific."
      • addedOutput schema / properties / data / properties / model / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / properties / model / properties / directAnswerId / description
        Added value: +"Stable ID of this model's primary existing Direct Answer; retrieve it with get_answer_context."
      • addedOutput schema / properties / data / properties / model / properties / editorialIndicator / description
        Added value: +"Imported indicator with explicit knowledge classification; not a probability or individual-vehicle verdict."
      • addedOutput schema / properties / data / properties / model / properties / evidenceReferences / description
        Added value: +"Public model-level evidence records as supplied by the release."
      • addedOutput schema / properties / data / properties / model / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / data / properties / model / properties / insights / description
        Added value: +"Existing public model insights with their release-specific fields and limitations."
      • addedOutput schema / properties / data / properties / model / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / data / properties / model / properties / model / description
        Added value: +"Canonical model label or model-level knowledge object, as specified by the field's schema."
      • addedOutput schema / properties / data / properties / model / properties / modelKey / description
        Added value: +"Canonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate."
      • addedOutput schema / properties / data / properties / model / properties / namedVariants / description
        Added value: +"Existing public named-variant records; no inferred or generated variants."
      • addedOutput schema / properties / data / properties / model / properties / peers / description
        Added value: +"Existing outgoing model relations. Relation type matters; not every peer is a direct alternative. Use compare_vehicle_models for a known pair."
      • addedOutput schema / properties / data / properties / model / properties / powertrainProfile / description
        Added value: +"Imported public powertrain context; no promise of every engine or individual vehicle configuration."
      • addedOutput schema / properties / data / properties / model / properties / riskQuestion / description
        Added value: +"Published model-level risk/question context, not an assessment of a specific car."
      • addedOutput schema / properties / data / properties / model / properties / schemaVersion / description
        Added value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version."
      • addedOutput schema / properties / data / properties / model / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / data / properties / model / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / data / properties / model / properties / useFit / description
        Added value: +"Published use-fit context; editorial interpretation rather than a personal purchase recommendation."
      • addedOutput schema / properties / data / properties / model / properties / vehicleFormContext / description
        Added value: +"Imported public vehicle-form context and its applicability boundaries."
      • addedOutput schema / properties / data / properties / model / properties / vehicleRole / description
        Added value: +"Published description of the model's vehicle/use role."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_source_context20 fields changed
      • addedInput schema / properties / sourceId / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • changedOutput schema / properties / data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_vehicle_knowledge33 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Optional maximum result count; integer 1–10 inclusive, default 5. Fewer or zero results may be returned; this MCP limit differs from other transports."
      • addedInput schema / properties / query / description
        Added value: +"Required free-text query, 1–200 raw characters, no ASCII control characters. Use at least two searchable characters after accent/case/punctuation normalization. Dutch terms and model names search the existing index using lexical tokens and intent rules; no semantic generation."
      • addedOutput schema / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / coverage / description
        Added value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations."
      • addedOutput schema / properties / data / description
        Added value: +"Tool-specific successful result. Search returns an array (possibly empty); exact tools return the requested record or projection. Tool errors use a separate isError envelope."
      • addedOutput schema / properties / data / items / properties / answerPreview / description
        Added value: +"Existing short preview or fixed contract explanation; not a generated answer or a replacement for full context."
      • addedOutput schema / properties / data / items / properties / citationUrl / description
        Added value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity."
      • addedOutput schema / properties / data / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / data / items / properties / freshnessSummary / description
        Added value: +"Search-level freshness metadata/status. NOT_EXPOSED_IN_SEARCH_INDEX means dates are not exposed there; fetch exact context when available."
      • addedOutput schema / properties / data / items / properties / id / description
        Added value: +"Stable result identifier. Route by type: model to get_model_context, answer to get_answer_context, term to explain_dutch_vehicle_term, source to get_source_context. Topic IDs are not automatically answer IDs."
      • addedOutput schema / properties / data / items / properties / matchReasons / description
        Added value: +"Deterministic matching/boost reason codes explaining ranking, not evidence for factual claims."
      • addedOutput schema / properties / data / items / properties / matchedIntent / description
        Added value: +"Deterministic query-intent label used by search rules, not inferred user certainty."
      • addedOutput schema / properties / data / items / properties / matchedTerms / description
        Added value: +"Normalized lexical query tokens found in the index record; may be empty for fixed intent-based supplemental results."
      • addedOutput schema / properties / data / items / properties / modelKey / description
        Added value: +"Canonical model identifier from search results or kk://models, e.g. volkswagen-golf. 1–200 characters; lowercase ASCII letters/digits separated by single hyphens. Exact match; no aliases, spaces, uppercase, URL or license plate."
      • addedOutput schema / properties / data / items / properties / relevanceScore / description
        Added value: +"Deterministic lexical/intent ranking score, not AI confidence, truth probability or source quality. Used to sort this query's results; not a probability or fixed 0–1 scale."
      • addedOutput schema / properties / data / items / properties / relevanceTier / description
        Added value: +"Score band: EXACT >=140, STRONG >=55 and <140, RELATED <55. EXACT is a score label and does not guarantee a literal exact match."
      • addedOutput schema / properties / data / items / properties / title / description
        Added value: +"Human-readable title of the matched existing knowledge record."
      • addedOutput schema / properties / data / items / properties / type / description
        Added value: +"Result kind (currently model, answer, term, topic or supplemental source); determines how its identifier can be used."
      • addedOutput schema / properties / evidence / description
        Added value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance."
      • addedOutput schema / properties / evidence / items / properties / classification / description
        Added value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score."
      • addedOutput schema / properties / evidence / items / properties / evidenceId / description
        Added value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / description
        Added value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness."
      • addedOutput schema / properties / evidence / items / properties / sourceIds / items / description
        Added value: +"Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs."
      • addedOutput schema / properties / freshness / description
        Added value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current."
      • addedOutput schema / properties / freshness / properties / dataAsOf / description
        Added value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current."
      • addedOutput schema / properties / freshness / properties / editorialReviewedAt / description
        Added value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed."
      • addedOutput schema / properties / freshness / properties / generatedAt / description
        Added value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date."
      • addedOutput schema / properties / freshness / properties / sourceCheckedAt / description
        Added value: +"Optional date/time when the source was checked, not necessarily the date the data describes."
      • addedOutput schema / properties / knowledgeVersion / description
        Added value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version."
      • addedOutput schema / properties / limitations / description
        Added value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage."
      • addedOutput schema / properties / schemaVersion / description
        Added value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version."
      • addedOutput schema / properties / sources / description
        Added value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID."
      • changedOutput schema / properties / sources / items / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "sourceUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "sourceUrl",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "enum": [
        -          "OFFICIAL_PRIMARY_DATA",
        -          "OFFICIAL_GUIDANCE",
        -          "PRIMARY_NON_GOVERNMENT",
        -          "REPUTABLE_EDITORIAL",
        -          "BACKGROUND_REFERENCE",
        -          "KENTEKENKOMPAS_DERIVED",
        -          "KENTEKENKOMPAS_EDITORIAL"
        -        ],
        -        "type": "string"
        -      },
        -      "citationUrl": {
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "citationUrls": {
        -        "items": {
        -          "format": "uri",
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "freshness": {
        -        "additionalProperties": {},
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      },
        -      "kind": {
        -        "const": "SOURCE_GROUP",
        -        "type": "string"
        -      },
        -      "label": {
        -        "type": "string"
        -      },
        -      "limitations": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "memberOrderMeaning": {
        -        "type": "string"
        -      },
        -      "memberSourceIds": {
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "sourceId": {
        -        "maxLength": 200,
        -        "minLength": 1,
        -        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        -        "type": "string"
        -      },
        -      "visibility": {
        -        "const": "PUBLIC",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "sourceId",
        -      "kind",
        -      "visibility",
        -      "label",
        -      "category",
        -      "citationUrl",
        -      "description",
        -      "memberSourceIds",
        -      "memberOrderMeaning",
        -      "citationUrls",
        -      "freshness",
        -      "limitations"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "sourceUrl": {
        +        "description": "Original public source URL for a SOURCE record; distinct from the KentekenKompas explanation URL.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "sourceUrl",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "Detailed provenance category. Keep it distinct from the coarser OFFICIAL/DERIVED/EDITORIAL classification.",
        +        "enum": [
        +          "OFFICIAL_PRIMARY_DATA",
        +          "OFFICIAL_GUIDANCE",
        +          "PRIMARY_NON_GOVERNMENT",
        +          "REPUTABLE_EDITORIAL",
        +          "BACKGROUND_REFERENCE",
        +          "KENTEKENKOMPAS_DERIVED",
        +          "KENTEKENKOMPAS_EDITORIAL"
        +        ],
        +        "type": "string"
        +      },
        +      "citationUrl": {
        +        "description": "Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "citationUrls": {
        +        "description": "Human-readable citation links associated with the group; not its members' sourceUrl fields.",
        +        "items": {
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "description": "Public explanation of the source group's purpose and composition.",
        +        "type": "string"
        +      },
        +      "freshness": {
        +        "additionalProperties": {},
        +        "description": "Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "const": "SOURCE_GROUP",
        +        "description": "Discriminator: SOURCE is one public source; SOURCE_GROUP is an explicit grouped provenance record.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Human-readable label supplied by the knowledge record.",
        +        "type": "string"
        +      },
        +      "limitations": {
        +        "description": "Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "memberOrderMeaning": {
        +        "description": "Explanation of whether/how member ordering matters; do not infer ranking or chronology.",
        +        "type": "string"
        +      },
        +      "memberSourceIds": {
        +        "description": "Explicit, non-empty list of source IDs belonging to this group; use these rather than splitting the group's opaque sourceId.",
        +        "items": {
        +          "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "sourceId": {
        +        "description": "Opaque public SOURCE or SOURCE_GROUP ID, 1–200 characters; lowercase ASCII letters/digits with dot, colon or hyphen separators as specified by the pattern. Copy exactly from sources or search; never split or reconstruct composite-looking IDs.",
        +        "maxLength": 200,
        +        "minLength": 1,
        +        "pattern": "^[a-z0-9]+(?:[.:-][a-z0-9-]+)*$",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "const": "PUBLIC",
        +        "description": "PUBLIC marks provenance permitted in the public knowledge contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sourceId",
        +      "kind",
        +      "visibility",
        +      "label",
        +      "category",
        +      "citationUrl",
        +      "description",
        +      "memberSourceIds",
        +      "memberOrderMeaning",
        +      "citationUrls",
        +      "freshness",
        +      "limitations"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 7 tool updates
    • First observedcompare_vehicle_models
    • First observedexplain_dutch_vehicle_term
    • First observedget_answer_context
    • First observedget_fuel_price_context
    • First observedget_model_context
    • First observedget_source_context
    • First observedsearch_vehicle_knowledge

Publisher details

Operator
kentekenkompas.nl · Publisher source
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Provides tools to query Dutch vehicle registration data through the official RDW open API, allowing users to look up vehicle information by license plate, retrieve fuel/emissions data, and search vehicles by brand and model.
    1
    23 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides comprehensive Dutch vehicle information from license plate numbers, including APK inspection history, recalls, odometer checks, and other signals, via a single MCP tool.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides access to all driving schools in the Netherlands with addresses, contact details, prices, ratings, service areas, and CBR pass rates. Free, no account or API key needed.
    6
    9 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources