Servidor MCP

KentekenKompas

nl.kentekenkompas/vehicle-knowledge

Qué hace este MCP

Provides cited, read-only Dutch vehicle model knowledge, comparisons, terminology, answers, and source provenance.

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