Skip to main content
Glama
Pseudogiant-xr

PseudoLife-MCP

Official

memory_graph_review

Destructive

Review queued graph proposals before they alter memory: list pending items, accept or reject links, merges, and junk, or dismiss duplicate pairs and restore forgotten slots.

Instructions

Work the graph review queue — deep-dream proposals that need a verdict before they touch the graph.

Actions: list: pending findings/proposals. propose: file link proposals for review. relate: related-not-duplicate verdict — writes the relation edge and dismisses the pair. dismiss_pair: mark src/dst genuinely distinct. dismiss_slot_pair: same for lesson/world duplicate listings. restore_slot: undo a lesson/world forget (forgets retire, never delete) — store + src (the retired key). accept_link/reject_link: settle an edge proposal by id. accept_merge: fold a near-duplicate into its twin. accept_junk: delete an over-extraction artifact. reject_entity: keep the entity, dismiss the proposal.

Returns: per-action dict; {error} on bad input.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dstNorelate/dismiss_pair/dismiss_slot_pair: the second entity or key.
srcNorelate/dismiss_pair: the first entity. dismiss_slot_pair: an "entity|attribute" key from the deep response; restore_slot: retired key or entity.
scopeNolist: keep only analyzer findings whose entities carry this memory source (Atlas project); queued proposals always list; omit or "all" for everything. Not a finding kind.
storeNodismiss_slot_pair/restore_slot: "lesson" or "world".
actionNolist
relationNorelate: edge relation to write (graph vocabulary).
proposalsNopropose: ``[{src, relation, dst, similarity?, rationale?}]``.
proposal_idNoId actions: the proposal to settle.
proposal_idsNoId actions: many proposals at once.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.16.0
    • changedInput schema / properties / dst / description
      Previous value: -"relate/dismiss_pair: the second entity. dismiss_slot_pair: an \"entity|attribute\" key from the deep response."New value: +"relate/dismiss_pair/dismiss_slot_pair: the second entity or key."
    • changedInput schema / properties / proposal_id / description
      Previous value: -"Id actions: the one proposal to settle."New value: +"Id actions: the proposal to settle."
    • changedInput schema / properties / proposal_ids / description
      Previous value: -"Id actions: settle many proposals in one call, instead of ``proposal_id``."New value: +"Id actions: many proposals at once."
    • changedInput schema / properties / relation / description
      Previous value: -"relate: the edge relation to write, from the graph vocabulary."New value: +"relate: edge relation to write (graph vocabulary)."
    • changedInput schema / properties / scope / description
      Previous value: -"list: keep only findings of this kind."New value: +"list: keep only analyzer findings whose entities carry this memory source (Atlas project); queued proposals always list; omit or \"all\" for everything. Not a finding kind."
    • changedInput schema / properties / store / description
      Previous value: -"dismiss_slot_pair / restore_slot: which store the key belongs to — \"lesson\" or \"world\"."New value: +"dismiss_slot_pair/restore_slot: \"lesson\" or \"world\"."
  2. Changed9 schema fields changedv0.15.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "list",
      -  "propose",
      -  "relate",
      -  "dismiss_pair",
      -  "dismiss_slot_pair",
      -  "accept_link",
      -  "reject_link",
      -  "accept_merge",
      -  "accept_junk",
      -  "reject_entity"
      -]New value: +[
      +  "list",
      +  "propose",
      +  "relate",
      +  "dismiss_pair",
      +  "dismiss_slot_pair",
      +  "restore_slot",
      +  "accept_link",
      +  "reject_link",
      +  "accept_merge",
      +  "accept_junk",
      +  "reject_entity"
      +]
    • addedInput schema / properties / dst / description
      Added value: +"relate/dismiss_pair: the second entity. dismiss_slot_pair: an \"entity|attribute\" key from the deep response."
    • addedInput schema / properties / proposal_id / description
      Added value: +"Id actions: the one proposal to settle."
    • addedInput schema / properties / proposal_ids / description
      Added value: +"Id actions: settle many proposals in one call, instead of ``proposal_id``."
    • addedInput schema / properties / proposals / description
      Added value: +"propose: ``[{src, relation, dst, similarity?, rationale?}]``."
    • addedInput schema / properties / relation / description
      Added value: +"relate: the edge relation to write, from the graph vocabulary."
    • addedInput schema / properties / scope / description
      Added value: +"list: keep only findings of this kind."
    • addedInput schema / properties / src / description
      Added value: +"relate/dismiss_pair: the first entity. dismiss_slot_pair: an \"entity|attribute\" key from the deep response; restore_slot: retired key or entity."
    • addedInput schema / properties / store / description
      Added value: +"dismiss_slot_pair / restore_slot: which store the key belongs to — \"lesson\" or \"world\"."
  3. Changed3 schema fields changedv0.14.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "list",
      -  "propose",
      -  "dismiss_pair",
      -  "dismiss_slot_pair",
      -  "accept_link",
      -  "reject_link",
      -  "accept_merge",
      -  "accept_junk",
      -  "reject_entity"
      -]New value: +[
      +  "list",
      +  "propose",
      +  "relate",
      +  "dismiss_pair",
      +  "dismiss_slot_pair",
      +  "accept_link",
      +  "reject_link",
      +  "accept_merge",
      +  "accept_junk",
      +  "reject_entity"
      +]
    • addedInput schema / properties / proposal_ids
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "integer"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Proposal Ids"
      +}
    • addedInput schema / properties / relation
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Relation"
      +}
  4. First observedv0.11.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, and the description is consistent with them. It adds meaningful context beyond the annotations: 'forgets retire, never delete', that relate writes the relation edge and dismisses the pair, and what accept_merge/accept_junk actually do to data. It stops short of disclosing auth/permission needs or irreversibility per action.

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

Conciseness4/5

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

Purpose is front-loaded in one sentence, followed by a scannable action list and a one-line return note. The awkward indentation and the split of some entries across lines cost a little, but there is no filler and each line 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?

An output schema exists, so the brief 'per-action dict; {error} on bad input' note is sufficient. All 11 enum values are described, and with 0 required params the default of `list` is implied by the description. Missing only per-action required-parameter hints, which would help an agent call non-default actions correctly.

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

Parameters3/5

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

Schema description coverage is 89%, so the schema already documents nearly every parameter and even maps params to actions (e.g. 'relate/dismiss_pair: the first entity'). The description's param mentions ('store + src (the retired key)', 'settle an edge proposal by id') largely restate the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific resource (the graph review queue) and frames it as 'deep-dream proposals that need a verdict before they touch the graph', then enumerates all 11 actions with one-line semantics. It distinguishes itself from siblings like memory_consolidate and memory_dream by tying the queue to dream proposals, but it never disambiguates the `relate` action from the sibling tool memory_graph_relate, which appears to write the same kind of edge.

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

Usage Guidelines3/5

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

The per-action lines imply when each action applies ('relate' for related-not-duplicate, 'accept_junk' for over-extraction artifacts), which is real guidance. However, there is no explicit when-to-use-this-tool-vs-alternatives statement, no prerequisites or ordering, and no indication of which actions require which params before calling.

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