KentekenKompas
Server Details
Read-only Dutch vehicle knowledge, comparisons, terminology and cited sources for AI clients.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
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.
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.
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.
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 toolscompare_vehicle_modelsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceModelKey | Yes | 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. | |
| targetModelKey | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_termARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| termKey | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_contextARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| answerId | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_contextARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_contextARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| modelKey | Yes | 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. | |
| includeAnswers | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_contextARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceId | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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_knowledgeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional maximum result count; integer 1–10 inclusive, default 5. Fewer or zero results may be returned; this MCP limit differs from other transports. | |
| query | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | 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. |
| sources | Yes | Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID. |
| coverage | No | Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations. |
| evidence | Yes | Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance. |
| freshness | Yes | Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current. |
| citationUrl | No | Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity. |
| limitations | Yes | Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage. |
| schemaVersion | Yes | Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version. |
| knowledgeVersion | Yes | Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version. |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
- Changed
compare_vehicle_models31 fields changed- added
Input schema / properties / sourceModelKey / descriptionAdded 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." - added
Input schema / properties / targetModelKey / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / importantDifference / descriptionAdded value: +"Optional published difference between these models; absent means not supplied." - added
Output schema / properties / data / properties / label / descriptionAdded value: +"Human-readable label supplied by the knowledge record." - added
Output schema / properties / data / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / rationale / descriptionAdded value: +"Published semantic rationale when supplied, otherwise the stored reasons; not newly generated explanation." - added
Output schema / properties / data / properties / reasons / descriptionAdded value: +"Published reasons for the stored comparison relation." - added
Output schema / properties / data / properties / relationMeaning / descriptionAdded value: +"Human-readable interpretation of the stored relationType." - added
Output schema / properties / data / properties / relationType / descriptionAdded value: +"Stored relation kind. CONTROL_MODEL, POWERTRAIN_CONTRAST and CROSS_BODY_COMPARISON must not be called direct alternatives." - added
Output schema / properties / data / properties / sourceModelKey / descriptionAdded value: +"Canonical source model key of the directed stored comparison relation." - added
Output schema / properties / data / properties / targetModelKey / descriptionAdded value: +"Canonical target model key of the directed stored comparison relation." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
explain_dutch_vehicle_term30 fields changed- added
Input schema / properties / termKey / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / properties / answer / descriptionAdded value: +"Existing published answer text; returned without generating new factual claims." - added
Output schema / properties / data / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / data / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / question / descriptionAdded value: +"Existing published question answered by this knowledge record." - added
Output schema / properties / data / properties / schemaVersion / descriptionAdded value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version." - added
Output schema / properties / data / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / data / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / data / properties / term / descriptionAdded value: +"Human-readable name of the existing Dutch vehicle term." - added
Output schema / properties / data / properties / termId / descriptionAdded value: +"Canonical term identifier, including its term. prefix." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
get_answer_context32 fields changed- added
Input schema / properties / answerId / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / properties / answer / descriptionAdded value: +"Existing published answer text; returned without generating new factual claims." - added
Output schema / properties / data / properties / answerId / descriptionAdded 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." - added
Output schema / properties / data / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / evidenceIds / descriptionAdded value: +"Identifiers of the evidence supporting this answer; envelope evidence contains the exposed references." - added
Output schema / properties / data / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / data / properties / intents / descriptionAdded value: +"Existing intent labels attached to this Direct Answer; these are discovery metadata, not generated confidence estimates." - added
Output schema / properties / data / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / modelKey / descriptionAdded 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." - added
Output schema / properties / data / properties / question / descriptionAdded value: +"Existing published question answered by this knowledge record." - added
Output schema / properties / data / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / data / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / data / properties / topic / descriptionAdded value: +"Optional topic identifier for a non-model or topic-specific Direct Answer." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
get_fuel_price_context27 fields changed- added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / data / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / prices / descriptionAdded value: +"Always empty in this contract. Never interpret missing prices as zero or substitute an invented current price." - added
Output schema / properties / data / properties / schemaVersion / descriptionAdded value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version." - added
Output schema / properties / data / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / data / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / data / properties / status / descriptionAdded value: +"SOURCE_REQUIRED_AT_RUNTIME means there is no configured validated current-price adapter; this is a successful status response, not a current price." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
get_model_context61 fields changed- added
Input schema / properties / includeAnswers / descriptionAdded 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." - added
Input schema / properties / modelKey / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / properties / answers / descriptionAdded value: +"Existing model Direct Answers, present only when includeAnswers=true; an empty list means none exposed for the model." - added
Output schema / properties / data / properties / answers / items / properties / answer / descriptionAdded value: +"Existing published answer text; returned without generating new factual claims." - added
Output schema / properties / data / properties / answers / items / properties / answerId / descriptionAdded 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." - added
Output schema / properties / data / properties / answers / items / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / answers / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / answers / items / properties / evidenceIds / descriptionAdded value: +"Identifiers of the evidence supporting this answer; envelope evidence contains the exposed references." - added
Output schema / properties / data / properties / answers / items / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / data / properties / answers / items / properties / intents / descriptionAdded value: +"Existing intent labels attached to this Direct Answer; these are discovery metadata, not generated confidence estimates." - added
Output schema / properties / data / properties / answers / items / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / answers / items / properties / modelKey / descriptionAdded 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." - added
Output schema / properties / data / properties / answers / items / properties / question / descriptionAdded value: +"Existing published question answered by this knowledge record." - added
Output schema / properties / data / properties / answers / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / data / properties / answers / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / data / properties / answers / items / properties / topic / descriptionAdded value: +"Optional topic identifier for a non-model or topic-specific Direct Answer." - added
Output schema / properties / data / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / properties / model / descriptionAdded value: +"Validated model-level knowledge; not an assessment of one individual vehicle." - added
Output schema / properties / data / properties / model / properties / bodyProfile / descriptionAdded value: +"Imported public body-style profile. Retains the knowledge release's nested fields; not specifications of an individual vehicle." - added
Output schema / properties / data / properties / model / properties / brand / descriptionAdded value: +"Brand label of the canonical model, not an individual vehicle registration." - added
Output schema / properties / data / properties / model / properties / buyerActions / descriptionAdded value: +"Existing public buyer checks/actions; no external action is performed by returning them." - added
Output schema / properties / data / properties / model / properties / canonicalRoute / descriptionAdded value: +"Relative human-readable website route for the canonical model." - added
Output schema / properties / data / properties / model / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / properties / model / properties / configurationProfile / descriptionAdded value: +"Imported public configuration context; available variants and coverage are release-specific." - added
Output schema / properties / data / properties / model / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / properties / model / properties / directAnswerId / descriptionAdded value: +"Stable ID of this model's primary existing Direct Answer; retrieve it with get_answer_context." - added
Output schema / properties / data / properties / model / properties / editorialIndicator / descriptionAdded value: +"Imported indicator with explicit knowledge classification; not a probability or individual-vehicle verdict." - added
Output schema / properties / data / properties / model / properties / evidenceReferences / descriptionAdded value: +"Public model-level evidence records as supplied by the release." - added
Output schema / properties / data / properties / model / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / data / properties / model / properties / insights / descriptionAdded value: +"Existing public model insights with their release-specific fields and limitations." - added
Output schema / properties / data / properties / model / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / data / properties / model / properties / model / descriptionAdded value: +"Canonical model label or model-level knowledge object, as specified by the field's schema." - added
Output schema / properties / data / properties / model / properties / modelKey / descriptionAdded 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." - added
Output schema / properties / data / properties / model / properties / namedVariants / descriptionAdded value: +"Existing public named-variant records; no inferred or generated variants." - added
Output schema / properties / data / properties / model / properties / peers / descriptionAdded value: +"Existing outgoing model relations. Relation type matters; not every peer is a direct alternative. Use compare_vehicle_models for a known pair." - added
Output schema / properties / data / properties / model / properties / powertrainProfile / descriptionAdded value: +"Imported public powertrain context; no promise of every engine or individual vehicle configuration." - added
Output schema / properties / data / properties / model / properties / riskQuestion / descriptionAdded value: +"Published model-level risk/question context, not an assessment of a specific car." - added
Output schema / properties / data / properties / model / properties / schemaVersion / descriptionAdded value: +"Public knowledge record contract version kk-public-knowledge-v1; different from the enclosing API schema and server version." - added
Output schema / properties / data / properties / model / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / data / properties / model / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / data / properties / model / properties / useFit / descriptionAdded value: +"Published use-fit context; editorial interpretation rather than a personal purchase recommendation." - added
Output schema / properties / data / properties / model / properties / vehicleFormContext / descriptionAdded value: +"Imported public vehicle-form context and its applicability boundaries." - added
Output schema / properties / data / properties / model / properties / vehicleRole / descriptionAdded value: +"Published description of the model's vehicle/use role." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
get_source_context20 fields changed- added
Input schema / properties / sourceId / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - changed
Output schema / properties / data / anyOfPrevious 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" + } +] - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
- Changed
search_vehicle_knowledge33 fields changed- added
Input schema / properties / limit / descriptionAdded 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." - added
Input schema / properties / query / descriptionAdded 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." - added
Output schema / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / coverage / descriptionAdded value: +"Available coverage metadata; incomplete or absent coverage is not an assurance of complete knowledge. Preserve limitations." - added
Output schema / properties / data / descriptionAdded 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." - added
Output schema / properties / data / items / properties / answerPreview / descriptionAdded value: +"Existing short preview or fixed contract explanation; not a generated answer or a replacement for full context." - added
Output schema / properties / data / items / properties / citationUrl / descriptionAdded value: +"Human-readable KentekenKompas citation URL for this record/context; distinct from an original sourceUrl and a kk:// resource identity." - added
Output schema / properties / data / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / data / items / properties / freshnessSummary / descriptionAdded value: +"Search-level freshness metadata/status. NOT_EXPOSED_IN_SEARCH_INDEX means dates are not exposed there; fetch exact context when available." - added
Output schema / properties / data / items / properties / id / descriptionAdded 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." - added
Output schema / properties / data / items / properties / matchReasons / descriptionAdded value: +"Deterministic matching/boost reason codes explaining ranking, not evidence for factual claims." - added
Output schema / properties / data / items / properties / matchedIntent / descriptionAdded value: +"Deterministic query-intent label used by search rules, not inferred user certainty." - added
Output schema / properties / data / items / properties / matchedTerms / descriptionAdded value: +"Normalized lexical query tokens found in the index record; may be empty for fixed intent-based supplemental results." - added
Output schema / properties / data / items / properties / modelKey / descriptionAdded 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." - added
Output schema / properties / data / items / properties / relevanceScore / descriptionAdded 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." - added
Output schema / properties / data / items / properties / relevanceTier / descriptionAdded value: +"Score band: EXACT >=140, STRONG >=55 and <140, RELATED <55. EXACT is a score label and does not guarantee a literal exact match." - added
Output schema / properties / data / items / properties / title / descriptionAdded value: +"Human-readable title of the matched existing knowledge record." - added
Output schema / properties / data / items / properties / type / descriptionAdded value: +"Result kind (currently model, answer, term, topic or supplemental source); determines how its identifier can be used." - added
Output schema / properties / evidence / descriptionAdded value: +"Exposed evidence references with classifications and source IDs. May be empty (including search); not proof that knowledge has no provenance." - added
Output schema / properties / evidence / items / properties / classification / descriptionAdded value: +"Knowledge classification: OFFICIAL, reproducibly DERIVED, or EDITORIAL. Preserve this label; it is not a confidence score." - added
Output schema / properties / evidence / items / properties / evidenceId / descriptionAdded value: +"Identifier of a cited evidence reference; resolve its sourceIds for provenance, not as a confidence score." - added
Output schema / properties / evidence / items / properties / sourceIds / descriptionAdded value: +"Opaque IDs of supporting public sources or source groups. An empty array means no references exposed here, not proof of completeness." - added
Output schema / properties / evidence / items / properties / sourceIds / items / descriptionAdded 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." - added
Output schema / properties / freshness / descriptionAdded value: +"Available freshness metadata. Distinguish dataAsOf, sourceCheckedAt, editorialReviewedAt and generatedAt; missing fields do not mean current." - added
Output schema / properties / freshness / properties / dataAsOf / descriptionAdded value: +"Optional date/time to which the underlying data relates; absent means not supplied, not current." - added
Output schema / properties / freshness / properties / editorialReviewedAt / descriptionAdded value: +"Optional date/time of editorial review; does not certify that all underlying data was refreshed." - added
Output schema / properties / freshness / properties / generatedAt / descriptionAdded value: +"Timestamp of generation. At envelope level this is the active manifest's generatedAt, not a source refresh or publication date." - added
Output schema / properties / freshness / properties / sourceCheckedAt / descriptionAdded value: +"Optional date/time when the source was checked, not necessarily the date the data describes." - added
Output schema / properties / knowledgeVersion / descriptionAdded value: +"Active knowledge release identifier from its manifest; not the API contract or MCP/registry server version." - added
Output schema / properties / limitations / descriptionAdded value: +"Explicit scope and interpretation limits to preserve in client answers. Empty does not certify complete coverage." - added
Output schema / properties / schemaVersion / descriptionAdded value: +"Transport envelope contract kk-api-v1; distinct from the nested knowledge schema, knowledgeVersion and server version." - added
Output schema / properties / sources / descriptionAdded value: +"Resolved public SOURCE/SOURCE_GROUP records supporting this result. Search may leave this empty; use get_source_context for a discovered source ID." - changed
Output schema / properties / sources / items / anyOfPrevious 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" + } +]
7 tool updates
- First observed
compare_vehicle_models - First observed
explain_dutch_vehicle_term - First observed
get_answer_context - First observed
get_fuel_price_context - First observed
get_model_context - First observed
get_source_context - First observed
search_vehicle_knowledge
Publisher details
- Operator
- kentekenkompas.nl · Publisher source
- Operator website
- https://kentekenkompas.nl · Publisher source
- Vendor relationship
- Not applicable
- Documentation
- https://kentekenkompas.nl/developers · Publisher source
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
Search, compare & filter 102,191 European car variants — 180 specs, 19 languages, EV data.
Dutch vehicle report by licence plate: MOT, defects, odometer verdict and open recalls.
Japanese car genealogy with sources: generations, developers, and sales figures. Read-only.
Vehicle data for AI: VIN decoder, automotive specs, stolen checks, valuation and way more.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides 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.123 npm1MIT
- FlicenseNot gradedqualityBmaintenanceSearch, localized specs (180 spec types across 19 categories), compare, and structured filters over 102k+ vehicle variants in 19 languages, from cars-data.com.-
- AlicenseNot gradedqualityCmaintenanceProvides comprehensive Dutch vehicle information from license plate numbers, including APK inspection history, recalls, odometer checks, and other signals, via a single MCP tool.MIT
- AlicenseAqualityBmaintenanceProvides 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.69 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.