verify
Check exact claims/calculations/proofs; unknown fields: recall. Six fields: conclusion (TRUE/FALSE/UNKNOWN), conflict, reason, path, decision, evidence_kind.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| questions | Yes |
Check exact claims/calculations/proofs; unknown fields: recall. Six fields: conclusion (TRUE/FALSE/UNKNOWN), conflict, reason, path, decision, evidence_kind.
| Name | Required | Description | Default |
|---|---|---|---|
| questions | Yes |
Changes observed during successful MCP inspections.
Input schema / properties / questions / items / descriptionPrevious value: -"Use exactly one mode: source+relation (+optional target), claim, compute, or proof."New value: +"One mode: source+relation (+target), claim, compute or proof."Input schema / properties / questions / items / properties / relation / descriptionPrevious value: -"Exact saved property; recall source first if unknown."New value: +"Exact property; unknown: recall source."Input schema / properties / questions / items / descriptionPrevious value: -"Use exactly one mode."New value: +"Use exactly one mode: source+relation (+optional target), claim, compute, or proof."Input schema / properties / questions / items / properties / as_of / descriptionAdded value: +"ISO query time."Input schema / properties / questions / items / properties / claim / descriptionAdded value: +"Expression: recall({\"schema\":\"verify\"})."Input schema / properties / questions / items / properties / compute / descriptionPrevious value: -"check_connection({\"schema\":\"compute\"})"New value: +"recall({\"schema\":\"compute\"})"Input schema / properties / questions / items / properties / context / properties / qualifiers / descriptionAdded value: +"Conditions: JSON scalars/lists."Input schema / properties / questions / items / properties / context / properties / scope / descriptionAdded value: +"Project name/ID."Input schema / properties / questions / items / properties / id / descriptionAdded value: +"Unique within questions."Input schema / properties / questions / items / properties / proof / descriptionPrevious value: -"check_connection({\"schema\":\"proof\"})"New value: +"recall({\"schema\":\"proof\"})"Input schema / properties / questions / items / properties / relation / descriptionAdded value: +"Exact saved property; recall source first if unknown."Input schema / properties / questions / items / properties / source / descriptionAdded value: +"Subject, not evidence source."Input schema / properties / questions / items / properties / target / descriptionAdded value: +"Value. Omit to find known values."Input schema / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / include_source_contextRemoved value: -{
- "default": false,
- "type": "boolean"
-}Input schema / properties / questions / items / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / questions / items / descriptionPrevious value: -"Use exactly one mode: source/relation[/target], claim, compute, or proof. Kinds disambiguate direct queries. Separate fact checks and calculations into separate questions."New value: +"Use exactly one mode."Input schema / properties / questions / items / properties / as_of / maxLengthRemoved value: -100Input schema / properties / questions / items / properties / as_of / minLengthRemoved value: -1Input schema / properties / questions / items / properties / claim / additionalPropertiesAdded value: +trueInput schema / properties / questions / items / properties / claim / descriptionRemoved value: -"Nodes use op: atom {source,relation,target}; and/or {claims:[...]}; not {claim}; implies {if,then}; scope {claim,context and/or as_of}."Input schema / properties / questions / items / properties / compute / descriptionPrevious value: -"Parameter schema: check_connection({\"schema\":\"compute\"})."New value: +"check_connection({\"schema\":\"compute\"})"Input schema / properties / questions / items / properties / context / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / questions / items / properties / context / properties / domain_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / questions / items / properties / context / properties / qualifiers / descriptionRemoved value: -"Conditions: JSON scalars/lists, no nested objects."Input schema / properties / questions / items / properties / context / properties / qualifiers / maxPropertiesRemoved value: -64Input schema / properties / questions / items / properties / context / properties / scope / maxLengthRemoved value: -200Input schema / properties / questions / items / properties / context / properties / scope / minLengthRemoved value: -1Input schema / properties / questions / items / properties / context / properties / subdomain_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / questions / items / properties / context / properties / subject_versionRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / questions / items / properties / id / maxLengthRemoved value: -2000Input schema / properties / questions / items / properties / id / minLengthRemoved value: -1Input schema / properties / questions / items / properties / proof / descriptionPrevious value: -"Parameter schema: check_connection({\"schema\":\"proof\"})."New value: +"check_connection({\"schema\":\"proof\"})"Input schema / properties / questions / items / properties / relation / maxLengthRemoved value: -2000Input schema / properties / questions / items / properties / relation / minLengthRemoved value: -1Input schema / properties / questions / items / properties / source / maxLengthRemoved value: -2000Input schema / properties / questions / items / properties / source / minLengthRemoved value: -1Input schema / properties / questions / items / properties / source_kindRemoved value: -{
- "description": "Direct-query subject type.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
-}Input schema / properties / questions / items / properties / target / maxLengthRemoved value: -2000Input schema / properties / questions / items / properties / target / minLengthRemoved value: -1Input schema / properties / questions / items / properties / target_kindRemoved value: -{
- "description": "Direct-query value type.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
-}Input schema / properties / relationsRemoved value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "confidence": {
- "maximum": 1,
- "minimum": 0.01,
- "type": "number"
- },
- "context": {
- "additionalProperties": false,
- "properties": {
- "domain_id": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "qualifiers": {
- "description": "Conditions: JSON scalars/lists, no nested objects.",
- "maxProperties": 64,
- "type": "object"
- },
- "scope": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "subdomain_id": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "subject_version": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [],
- "type": "object"
- },
- "entity_id": {
- "description": "Canonical subject ID across evidence sources.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "evidence_source": {
- "description": "Evidence label, not subject identity.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "polarity": {
- "enum": [
- 1,
- -1
- ],
- "type": "integer"
- },
- "position": {
- "maximum": 1000000,
- "minimum": 0,
- "type": "integer"
- },
- "property_type": {
- "enum": [
- "single",
- "set",
- "ordered",
- "rules"
- ],
- "type": "string"
- },
- "relation": {
- "description": "Property; custom properties default to single-valued.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "description": "Subject name/ID.",
- "maxLength": 10000,
- "minLength": 1,
- "type": "string"
- },
- "source_kind": {
- "description": "Subject type; disambiguates names.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
- },
- "target": {
- "description": "Value/object, distinct from source.",
- "maxLength": 10000,
- "minLength": 1,
- "type": "string"
- },
- "target_kind": {
- "description": "Value type; disambiguates names.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
- },
- "unit": {
- "description": "Value unit, e.g. hour or bed/nurse.",
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "validity": {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "enum": [
- "persistent",
- "interval"
- ],
- "type": "string"
- },
- "observed_at": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "recorded_at": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "valid_from": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "valid_to": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [],
- "type": "object"
- }
- },
- "required": [
- "source",
- "relation",
- "target"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "minItems": 0,
- "type": "array"
-}Input schema / properties / include_source_contextAdded value: +{
+ "default": false,
+ "type": "boolean"
+}Input schema / properties / questions / items / descriptionPrevious value: -"Each question must use exactly one mode: direct source/relation/optional target, claim, or compute. For a calculation that also needs a separate fact check, send two question objects."New value: +"Use exactly one mode: source/relation[/target], claim, compute, or proof. Kinds disambiguate direct queries. Separate fact checks and calculations into separate questions."Input schema / properties / questions / items / properties / claim / descriptionPrevious value: -"Composite claim instead of source/relation/target: atom {source,relation,target}; and/or {claims:[...]}; not {claim}; implies {if,then}; scope {claim,context and/or as_of}. Each node has op. Omit target in a normal question to retrieve known candidate values."New value: +"Nodes use op: atom {source,relation,target}; and/or {claims:[...]}; not {claim}; implies {if,then}; scope {claim,context and/or as_of}."Input schema / properties / questions / items / properties / compute / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / questions / items / properties / compute / descriptionPrevious value: -"Use this mode instead of a direct source/relation/target or claim query. When compute is present, the question object may contain only id, compute, context and as_of. Put all saved premises inside compute.facts; do not add source, relation, target or claim at the question level."New value: +"Parameter schema: check_connection({\"schema\":\"compute\"})."Input schema / properties / questions / items / properties / compute / propertiesRemoved value: -{
- "draft": {
- "additionalProperties": false,
- "properties": {
- "unit": {
- "description": "Optional result unit or directed ratio unit."
- },
- "value": {
- "description": "Optional proposed result to check against the CPU result."
- }
- },
- "required": [
- "value"
- ],
- "type": "object"
- },
- "facts": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "as_of": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "context": {
- "additionalProperties": false,
- "properties": {
- "domain_id": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "qualifiers": {
- "description": "Conditions accepted by normalize_context: JSON scalars or lists, no nested objects.",
- "maxProperties": 64,
- "type": "object"
- },
- "scope": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "subdomain_id": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "subject_version": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [],
- "type": "object"
- },
- "id": {
- "description": "Short input name used by ref nodes in the plan.",
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "mode": {
- "enum": [
- "one",
- "all"
- ],
- "type": "string"
- },
- "relation": {
- "description": "Saved fact property.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "description": "Saved fact subject.",
- "maxLength": 2000,
- "minLength": 1,
- "type": "string"
- },
- "unit": {
- "description": "Optional unit assertion; must match the saved unit. Omit to use the saved unit.",
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "id",
- "source",
- "relation"
- ],
- "type": "object"
- },
- "maxItems": 64,
- "minItems": 1,
- "type": "array"
- },
- "plan": {
- "description": "Evidence-bound operation tree. Supported ops: ref, add, subtract, multiply, divide, ceil, floor, round, sum, count, distinct, min, max, ratio, compare, and, or, not and date_diff. Use ref {op:'ref',id:'...'} for every input. Pass operation inputs with args:[...] (including binary ops); unary operations use arg. Subtract and divide take two ordered args. Never use left/right fields. Arbitrary code and literal evidence are rejected.",
- "type": "object"
- }
-}Input schema / properties / questions / items / properties / compute / requiredRemoved value: -[
- "facts",
- "plan"
-]Input schema / properties / questions / items / properties / context / properties / qualifiers / descriptionPrevious value: -"Conditions accepted by normalize_context: JSON scalars or lists, no nested objects."New value: +"Conditions: JSON scalars/lists, no nested objects."Input schema / properties / questions / items / properties / proofAdded value: +{
+ "additionalProperties": true,
+ "description": "Parameter schema: check_connection({\"schema\":\"proof\"}).",
+ "type": "object"
+}Input schema / properties / questions / items / properties / source_kindAdded value: +{
+ "description": "Direct-query subject type.",
+ "maxLength": 80,
+ "minLength": 2,
+ "type": "string"
+}Input schema / properties / questions / items / properties / target_kindAdded value: +{
+ "description": "Direct-query value type.",
+ "maxLength": 80,
+ "minLength": 2,
+ "type": "string"
+}Input schema / properties / relations / items / properties / context / properties / qualifiers / descriptionPrevious value: -"Conditions accepted by normalize_context: JSON scalars or lists, no nested objects."New value: +"Conditions: JSON scalars/lists, no nested objects."Input schema / properties / relations / items / properties / entity_id / descriptionPrevious value: -"Explicit canonical subject ID, shared across its evidence sources."New value: +"Canonical subject ID across evidence sources."Input schema / properties / relations / items / properties / evidence_source / descriptionPrevious value: -"Source document or record label; does not change the subject identity."New value: +"Evidence label, not subject identity."Input schema / properties / relations / items / properties / relation / descriptionPrevious value: -"Property such as status; custom properties are single-valued by default."New value: +"Property; custom properties default to single-valued."Input schema / properties / relations / items / properties / source / descriptionPrevious value: -"Stable subject name or ID. Prefer short names shared with queries."New value: +"Subject name/ID."Input schema / properties / relations / items / properties / source_kindAdded value: +{
+ "description": "Subject type; disambiguates names.",
+ "maxLength": 80,
+ "minLength": 2,
+ "type": "string"
+}Input schema / properties / relations / items / properties / target / descriptionPrevious value: -"Value or object, different from source."New value: +"Value/object, distinct from source."Input schema / properties / relations / items / properties / target_kindAdded value: +{
+ "description": "Value type; disambiguates names.",
+ "maxLength": 80,
+ "minLength": 2,
+ "type": "string"
+}Input schema / properties / relations / items / properties / unit / descriptionPrevious value: -"Unit of the saved value, such as hour, bed or bed/nurse."New value: +"Value unit, e.g. hour or bed/nurse."Input schema / properties / questions / items / descriptionAdded value: +"Each question must use exactly one mode: direct source/relation/optional target, claim, or compute. For a calculation that also needs a separate fact check, send two question objects."Input schema / properties / questions / items / properties / compute / descriptionAdded value: +"Use this mode instead of a direct source/relation/target or claim query. When compute is present, the question object may contain only id, compute, context and as_of. Put all saved premises inside compute.facts; do not add source, relation, target or claim at the question level."Input schema / properties / questions / items / properties / compute / properties / plan / descriptionPrevious value: -"Evidence-bound operation tree. Supported ops: ref, add, subtract, multiply, divide, ceil, floor, round, sum, count, distinct, min, max, ratio, compare, and, or, not and date_diff. Use ref {op:'ref',id:'...'} for every input; arbitrary code and literal evidence are rejected."New value: +"Evidence-bound operation tree. Supported ops: ref, add, subtract, multiply, divide, ceil, floor, round, sum, count, distinct, min, max, ratio, compare, and, or, not and date_diff. Use ref {op:'ref',id:'...'} for every input. Pass operation inputs with args:[...] (including binary ops); unary operations use arg. Subtract and divide take two ordered args. Never use left/right fields. Arbitrary code and literal evidence are rejected."Input schema / properties / questions / items / properties / computeAdded value: +{
+ "additionalProperties": false,
+ "properties": {
+ "draft": {
+ "additionalProperties": false,
+ "properties": {
+ "unit": {
+ "description": "Optional result unit or directed ratio unit."
+ },
+ "value": {
+ "description": "Optional proposed result to check against the CPU result."
+ }
+ },
+ "required": [
+ "value"
+ ],
+ "type": "object"
+ },
+ "facts": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "as_of": {
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ },
+ "context": {
+ "additionalProperties": false,
+ "properties": {
+ "domain_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "qualifiers": {
+ "description": "Conditions accepted by normalize_context: JSON scalars or lists, no nested objects.",
+ "maxProperties": 64,
+ "type": "object"
+ },
+ "scope": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "subdomain_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "subject_version": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [],
+ "type": "object"
+ },
+ "id": {
+ "description": "Short input name used by ref nodes in the plan.",
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "one",
+ "all"
+ ],
+ "type": "string"
+ },
+ "relation": {
+ "description": "Saved fact property.",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "source": {
+ "description": "Saved fact subject.",
+ "maxLength": 2000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unit": {
+ "description": "Optional unit assertion; must match the saved unit. Omit to use the saved unit.",
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "source",
+ "relation"
+ ],
+ "type": "object"
+ },
+ "maxItems": 64,
+ "minItems": 1,
+ "type": "array"
+ },
+ "plan": {
+ "description": "Evidence-bound operation tree. Supported ops: ref, add, subtract, multiply, divide, ceil, floor, round, sum, count, distinct, min, max, ratio, compare, and, or, not and date_diff. Use ref {op:'ref',id:'...'} for every input; arbitrary code and literal evidence are rejected.",
+ "type": "object"
+ }
+ },
+ "required": [
+ "facts",
+ "plan"
+ ],
+ "type": "object"
+}Input schema / properties / relations / items / properties / entity_idAdded value: +{
+ "description": "Explicit canonical subject ID, shared across its evidence sources.",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+}Input schema / properties / relations / items / properties / evidence_sourceAdded value: +{
+ "description": "Source document or record label; does not change the subject identity.",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+}Input schema / properties / relations / items / properties / positionAdded value: +{
+ "maximum": 1000000,
+ "minimum": 0,
+ "type": "integer"
+}Input schema / properties / relations / items / properties / property_typeAdded value: +{
+ "enum": [
+ "single",
+ "set",
+ "ordered",
+ "rules"
+ ],
+ "type": "string"
+}Input schema / properties / relations / items / properties / unitAdded value: +{
+ "description": "Unit of the saved value, such as hour, bed or bed/nurse.",
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+}Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered structurally. The description adds output-shape information with no output schema backing it: six fields including conclusion values TRUE/FALSE/UNKNOWN, plus conflict, reason, path, decision and evidence_kind. That is useful disclosure, but the fields are named without explaining what any of them mean or how conflict/decision are populated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the purpose, which is good, but the compression goes too far: "unknown fields: recall" and the bare "Six fields:" list are telegraphic to the point of ambiguity. Brevity here costs comprehension rather than earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool: a nested array of question objects, mutually exclusive verification modes, a batch cap of 20, and no output schema. The description should explain the modes and the meaning of the six output fields, but instead it names them opaquely. An agent could form the call shape from the schema but would not understand what comes back or which mode to choose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, so the description carries the burden, and it does not explain the questions array, the required id, as_of, source/target, context.scope/qualifiers, or relation semantics at all. The only nod toward parameters is "unknown fields: recall," which hints at a lookup path but leaves the structure and modes (source+relation, claim, compute, proof) undescribed in the description text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Check exact claims/calculations/proofs" gives a verb (check) and a class of resource (claims/calculations/proofs), so the agent knows this is a verification tool. But it never contrasts itself with correct_fact or recall, so the boundary with siblings stays fuzzy. Purpose is inferable but not crisp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"unknown fields: recall" is a real routing hint to a sibling for the case where the agent doesn't know a field, which is genuinely useful. However, there is no guidance on when to verify vs. correct_fact, no mention that this is read-only checking versus mutation, and no statement of prerequisites or the one-mode-per-question constraint that appears only in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.