remember_facts
Save facts/definitions; returns accepted, record_ids. Duplicates reuse records; new values add (edit: correct_fact).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rules | No | ||
| proofs | No | ||
| relations | No | ||
| computations | No |
Save facts/definitions; returns accepted, record_ids. Duplicates reuse records; new values add (edit: correct_fact).
| Name | Required | Description | Default |
|---|---|---|---|
| rules | No | ||
| proofs | No | ||
| relations | No | ||
| computations | No |
Changes observed during successful MCP inspections.
Input schema / descriptionAdded value: +"Send relations OR computations OR (rules and/or proofs)."Input schema / oneOfPrevious value: -[
- {
- "required": [
- "relations"
- ]
- },
- {
- "required": [
- "computations"
- ]
- },
- {
- "anyOf": [
- {
- "required": [
- "rules"
- ]
- },
- {
- "required": [
- "proofs"
- ]
- }
- ]
- }
-]New value: +[
+ {
+ "anyOf": [
+ {
+ "properties": {
+ "relations": {
+ "minItems": 1
+ }
+ },
+ "required": [
+ "relations"
+ ]
+ }
+ ],
+ "properties": {
+ "computations": {
+ "maxItems": 0
+ },
+ "proofs": {
+ "maxItems": 0
+ },
+ "rules": {
+ "maxItems": 0
+ }
+ }
+ },
+ {
+ "anyOf": [
+ {
+ "properties": {
+ "computations": {
+ "minItems": 1
+ }
+ },
+ "required": [
+ "computations"
+ ]
+ }
+ ],
+ "properties": {
+ "proofs": {
+ "maxItems": 0
+ },
+ "relations": {
+ "maxItems": 0
+ },
+ "rules": {
+ "maxItems": 0
+ }
+ }
+ },
+ {
+ "anyOf": [
+ {
+ "properties": {
+ "rules": {
+ "minItems": 1
+ }
+ },
+ "required": [
+ "rules"
+ ]
+ },
+ {
+ "properties": {
+ "proofs": {
+ "minItems": 1
+ }
+ },
+ "required": [
+ "proofs"
+ ]
+ }
+ ],
+ "properties": {
+ "computations": {
+ "maxItems": 0
+ },
+ "relations": {
+ "maxItems": 0
+ }
+ }
+ }
+]Input schema / properties / computations / items / descriptionPrevious value: -"check_connection({\"schema\":\"computations\"})"New value: +"recall({\"schema\":\"computations\"})"Input schema / properties / computations / minItemsPrevious value: -1New value: +0Input schema / properties / proofs / items / descriptionPrevious value: -"check_connection({\"schema\":\"proofs\"})"New value: +"recall({\"schema\":\"proofs\"})"Input schema / properties / proofs / minItemsPrevious value: -1New value: +0Input schema / properties / relations / items / properties / context / properties / qualifiers / descriptionAdded value: +"Conditions: JSON scalars/lists."Input schema / properties / relations / items / properties / context / properties / scope / descriptionAdded value: +"Project name/ID."Input schema / properties / relations / items / properties / polarity / descriptionAdded value: +"1=assert (default); -1=explicit denial."Input schema / properties / relations / items / properties / property_type / descriptionAdded value: +"Custom default: single. set=multiple; ordered/rules: full schema."Input schema / properties / relations / items / properties / relation / descriptionAdded value: +"Property."Input schema / properties / relations / items / properties / source / descriptionAdded value: +"Subject, not evidence source."Input schema / properties / relations / items / properties / target / descriptionAdded value: +"Value."Input schema / properties / relations / items / properties / validity / descriptionAdded value: +"ISO timestamps; interval uses valid_from/valid_to."Input schema / properties / relations / minItemsPrevious value: -1New value: +0Input schema / properties / rules / items / descriptionPrevious value: -"check_connection({\"schema\":\"rules\"})"New value: +"recall({\"schema\":\"rules\"})"Input schema / properties / rules / minItemsPrevious value: -1New value: +0Input schema / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / oneOfPrevious value: -[
- {
- "not": {
- "anyOf": [
- {
- "required": [
- "computations"
- ]
- },
- {
- "required": [
- "rules"
- ]
- },
- {
- "required": [
- "proofs"
- ]
- }
- ]
- },
- "required": [
- "relations"
- ]
- },
- {
- "not": {
- "anyOf": [
- {
- "required": [
- "relations"
- ]
- },
- {
- "required": [
- "rules"
- ]
- },
- {
- "required": [
- "proofs"
- ]
- },
- {
- "required": [
- "batch_id"
- ]
- },
- {
- "required": [
- "offset"
- ]
- },
- {
- "required": [
- "total"
- ]
- }
- ]
- },
- "required": [
- "computations"
- ]
- },
- {
- "anyOf": [
- {
- "required": [
- "rules"
- ]
- },
- {
- "required": [
- "proofs"
- ]
- }
- ],
- "not": {
- "anyOf": [
- {
- "required": [
- "relations"
- ]
- },
- {
- "required": [
- "computations"
- ]
- },
- {
- "required": [
- "batch_id"
- ]
- },
- {
- "required": [
- "offset"
- ]
- },
- {
- "required": [
- "total"
- ]
- }
- ]
- }
- }
-]New value: +[
+ {
+ "required": [
+ "relations"
+ ]
+ },
+ {
+ "required": [
+ "computations"
+ ]
+ },
+ {
+ "anyOf": [
+ {
+ "required": [
+ "rules"
+ ]
+ },
+ {
+ "required": [
+ "proofs"
+ ]
+ }
+ ]
+ }
+]Input schema / properties / batch_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / computations / items / descriptionPrevious value: -"Parameter schema: check_connection({\"schema\":\"computations\"})."New value: +"check_connection({\"schema\":\"computations\"})"Input schema / properties / computations / maxItemsAdded value: +10000Input schema / properties / offsetRemoved value: -{
- "minimum": 0,
- "type": "integer"
-}Input schema / properties / proofs / items / descriptionPrevious value: -"Parameter schema: check_connection({\"schema\":\"proofs\"})."New value: +"check_connection({\"schema\":\"proofs\"})"Input schema / properties / proofs / maxItemsAdded value: +10000Input schema / properties / relations / items / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / relations / items / properties / client_record_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / confidenceRemoved value: -{
- "maximum": 1,
- "minimum": 0.01,
- "type": "number"
-}Input schema / properties / relations / items / properties / context / additionalPropertiesPrevious value: -falseNew value: +trueInput schema / properties / relations / items / properties / context / properties / domain_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / context / properties / qualifiers / descriptionRemoved value: -"Conditions: JSON scalars/lists, no nested objects."Input schema / properties / relations / items / properties / context / properties / qualifiers / maxPropertiesRemoved value: -64Input schema / properties / relations / items / properties / context / properties / scope / maxLengthRemoved value: -200Input schema / properties / relations / items / properties / context / properties / scope / minLengthRemoved value: -1Input schema / properties / relations / items / properties / context / properties / subdomain_idRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / context / properties / subject_versionRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / entity_idRemoved value: -{
- "description": "Canonical subject ID across evidence sources.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / evidence_refsRemoved value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "claim_hash": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "content_hash": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "excerpt": {
- "maxLength": 10000,
- "minLength": 1,
- "type": "string"
- },
- "locator": {
- "maxLength": 500,
- "minLength": 1,
- "type": "string"
- },
- "observed_at": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "recorded_at": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "role": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "source_id": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "source_id",
- "locator"
- ],
- "type": "object"
- },
- "maxItems": 64,
- "minItems": 0,
- "type": "array"
-}Input schema / properties / relations / items / properties / evidence_sourceRemoved value: -{
- "description": "Evidence label, not subject identity.",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / positionRemoved value: -{
- "maximum": 1000000,
- "minimum": 0,
- "type": "integer"
-}Input schema / properties / relations / items / properties / provenanceRemoved value: -{
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / relation / descriptionRemoved value: -"Property; custom properties default to single-valued."Input schema / properties / relations / items / properties / relation / maxLengthRemoved value: -200Input schema / properties / relations / items / properties / relation / minLengthRemoved value: -1Input schema / properties / relations / items / properties / search_aliasesRemoved value: -{
- "items": {
- "description": "Field aliases for recall, not evidence or answer text.",
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 16,
- "minItems": 0,
- "type": "array"
-}Input schema / properties / relations / items / properties / source / descriptionRemoved value: -"Subject name/ID."Input schema / properties / relations / items / properties / source / maxLengthRemoved value: -10000Input schema / properties / relations / items / properties / source / minLengthRemoved value: -1Input schema / properties / relations / items / properties / source_kindRemoved value: -{
- "description": "Subject type; disambiguates names.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
-}Input schema / properties / relations / items / properties / target / descriptionRemoved value: -"Value/object, distinct from source."Input schema / properties / relations / items / properties / target / maxLengthRemoved value: -10000Input schema / properties / relations / items / properties / target / minLengthRemoved value: -1Input schema / properties / relations / items / properties / target_kindRemoved value: -{
- "description": "Value type; disambiguates names.",
- "maxLength": 80,
- "minLength": 2,
- "type": "string"
-}Input schema / properties / relations / items / properties / unitRemoved value: -{
- "description": "Value unit, e.g. hour or bed/nurse.",
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
-}Input schema / properties / relations / items / properties / validity / properties / observed_at / maxLengthRemoved value: -100Input schema / properties / relations / items / properties / validity / properties / observed_at / minLengthRemoved value: -1Input schema / properties / relations / items / properties / validity / properties / recorded_at / maxLengthRemoved value: -100Input schema / properties / relations / items / properties / validity / properties / recorded_at / minLengthRemoved value: -1Input schema / properties / relations / items / properties / validity / properties / valid_from / maxLengthRemoved value: -100Input schema / properties / relations / items / properties / validity / properties / valid_from / minLengthRemoved value: -1Input schema / properties / relations / items / properties / validity / properties / valid_to / maxLengthRemoved value: -100Input schema / properties / relations / items / properties / validity / properties / valid_to / minLengthRemoved value: -1Input schema / properties / rules / items / descriptionPrevious value: -"Parameter schema: check_connection({\"schema\":\"rules\"})."New value: +"check_connection({\"schema\":\"rules\"})"Input schema / properties / rules / maxItemsAdded value: +10000Input schema / properties / totalRemoved value: -{
- "minimum": 1,
- "type": "integer"
-}Input schema / oneOfAdded value: +[
+ {
+ "not": {
+ "anyOf": [
+ {
+ "required": [
+ "computations"
+ ]
+ },
+ {
+ "required": [
+ "rules"
+ ]
+ },
+ {
+ "required": [
+ "proofs"
+ ]
+ }
+ ]
+ },
+ "required": [
+ "relations"
+ ]
+ },
+ {
+ "not": {
+ "anyOf": [
+ {
+ "required": [
+ "relations"
+ ]
+ },
+ {
+ "required": [
+ "rules"
+ ]
+ },
+ {
+ "required": [
+ "proofs"
+ ]
+ },
+ {
+ "required": [
+ "batch_id"
+ ]
+ },
+ {
+ "required": [
+ "offset"
+ ]
+ },
+ {
+ "required": [
+ "total"
+ ]
+ }
+ ]
+ },
+ "required": [
+ "computations"
+ ]
+ },
+ {
+ "anyOf": [
+ {
+ "required": [
+ "rules"
+ ]
+ },
+ {
+ "required": [
+ "proofs"
+ ]
+ }
+ ],
+ "not": {
+ "anyOf": [
+ {
+ "required": [
+ "relations"
+ ]
+ },
+ {
+ "required": [
+ "computations"
+ ]
+ },
+ {
+ "required": [
+ "batch_id"
+ ]
+ },
+ {
+ "required": [
+ "offset"
+ ]
+ },
+ {
+ "required": [
+ "total"
+ ]
+ }
+ ]
+ }
+ }
+]Input schema / properties / computationsAdded value: +{
+ "items": {
+ "additionalProperties": true,
+ "description": "Parameter schema: check_connection({\"schema\":\"computations\"}).",
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+}Input schema / properties / proofsAdded value: +{
+ "items": {
+ "additionalProperties": true,
+ "description": "Parameter schema: check_connection({\"schema\":\"proofs\"}).",
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+}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_refs / items / properties / recorded_atAdded value: +{
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+}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 / search_aliasesAdded value: +{
+ "items": {
+ "description": "Field aliases for recall, not evidence or answer text.",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "minItems": 0,
+ "type": "array"
+}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 / rulesAdded value: +{
+ "items": {
+ "additionalProperties": true,
+ "description": "Parameter schema: check_connection({\"schema\":\"rules\"}).",
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+}Input schema / requiredPrevious value: -[
- "relations"
-]New value: +[]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?
Adds useful behavior beyond the annotations: it returns accepted and record_ids, and duplicate facts reuse existing records rather than creating new ones. It does not discuss failure modes or permission requirements, but annotations already establish the write/non-destructive safety profile.
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?
Two compact sentences with no wasted words. The core action and deduplication behavior are front-loaded, and the edit alternative is correctly placed in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema is complex, with multiple mutually exclusive input modes and nested relation fields, yet the description does not explain those modes. It covers return values and duplicate handling, but leaves too much of the parameter structure unexplained for a tool with four input arrays and no output schema.
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?
Top-level schema description coverage is 0%, and the description does not mention relations, computations, rules, or proofs at all. It says 'facts/definitions' but gives no mapping to the four input parameters or their selection rules.
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?
States a specific verb and resource: saving facts/definitions. It also distinguishes itself from the sibling correct_fact for edits and hints at its return values. An agent can tell what this tool does without opening the schema.
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?
Explicitly points to correct_fact for editing, which is a useful alternative. It gives clear context for when to save new facts, but does not explicitly contrast with recall, verify, or forget_facts beyond the obvious save-vs-read distinction.
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.