Skip to main content
Glama
madgodinc

mgi-mind

Official

mind_fact

Add, query, or invalidate subject-predicate-object facts in a local knowledge graph, including point-in-time and superseded history for contradiction-aware memory.

Instructions

Knowledge-graph facts (subject -> predicate -> object). Single tool with action: add (insert a new fact), query (list facts about a subject), invalidate (soft-delete a fact by id when a single-valued fact has been superseded). Replaces mind_fact_add / _query / _invalidate.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoRequired for invalidate (from action=query)
as_ofNoWith action=query: POINT-IN-TIME: return the facts that were CURRENT at this instant (RFC3339 or YYYY-MM-DD), time-travelling the superseded chain. Answers 'what was X on date Y'.
actionYesOperation
objectNoRequired for add
historyNoWith action=query: return the SUPERSEDED history (past TemporalSingle values, oldest first) instead of current facts
subjectNoRequired for add/query
predicateNoRequired for add

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add real context: invalidate is a soft-delete, not a hard delete, and is scoped to superseded single-valued facts. However it is silent on side effects of add (whether inserting a single-valued fact supersedes prior ones), permissions, and error behavior, leaving material mutation semantics undisclosed.

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

Conciseness5/5

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

A single dense sentence that front-loads the data model, then enumerates the actions with tight parentheticals, and closes with the consolidation note. No filler sentences; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter multiplexed tool with no output schema, the description covers the data model, all three action modes, and the soft-delete nature of invalidate, which is what an agent needs to select a mode. It stops short of describing what each action returns or any limits on query results, which would round out the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description slightly exceeds it by giving the semantics of the `action` enum values rather than just labeling the field. The deeper parameter meaning (as_of time-travel, history supersession chain) lives in the schema, so no additional credit is warranted there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource concretely ('Knowledge-graph facts (subject -> predicate -> object)') and decomposes the multiplexed tool into its three actions with a verb each (add/insert, query/list, invalidate/soft-delete). It also names the three legacy tools it replaces, so an agent can map intent to this tool without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each action carries a when-to-use cue: add for inserts, query for 'list facts about a subject', and invalidate specifically 'when a single-valued fact has been superseded'. That is solid routing guidance, but there is no explicit when-not guidance or comparison against the non-fact siblings (mind_recall, mind_search) that may also surface facts.

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