Skip to main content
Glama

reflect

Read-only

Surface unresolved work, stale summaries, scope fragmentation and maintenance candidates for an initiative, so agents can plan next steps without automatic semantic edits.

Instructions

Read unresolved work, stale summaries, scope fragmentation and maintenance candidates; no automatic semantic edits.

Input Schema

NameRequiredDescriptionDefault
cursorNo
includeNo
initiativeYes
budget_charsNo

Output Schema

NameRequiredDescriptionDefault
dataYes
stateYes
issuesYes
coverageNo
replayedYes
operationYes
request_idNo
api_versionYes
continuationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv0.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / budget_chars
      Added value: +{
      +  "default": 8000,
      +  "maximum": 64000,
      +  "minimum": 512,
      +  "type": "integer"
      +}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / include
      Added value: +{
      +  "items": {
      +    "enum": [
      +      "integrity",
      +      "work",
      +      "staleness",
      +      "scope",
      +      "sharing"
      +    ],
      +    "type": "string"
      +  },
      +  "minItems": 0,
      +  "type": "array",
      +  "uniqueItems": true
      +}
    • removedInput schema / properties / initiative / default
      Removed value: -null
    • removedInput schema / properties / initiative / description
      Removed value: -"Optional initiative to scope the operation to. When omitted,\nreads are cross-initiative; mutations end up un-tagged."
    • addedInput schema / properties / initiative / minLength
      Added value: +1
    • changedInput schema / properties / initiative / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • addedInput schema / required
      Added value: +[
      +  "initiative"
      +]
    • removedInput schema / title
      Removed value: -"ScopeOnly"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "AmgOmission": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "count": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "reason",
      +        "count"
      +      ],
      +      "type": "object"
      +    },
      +    "ArchiveFormat": {
      +      "enum": [
      +        "markdown",
      +        "amg"
      +      ],
      +      "type": "string"
      +    },
      +    "Artifact": {
      +      "properties": {
      +        "bytes": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "edges": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "format": {
      +          "$ref": "#/$defs/ArchiveFormat"
      +        },
      +        "initiatives": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "nodes": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "omissions": {
      +          "items": {
      +            "$ref": "#/$defs/AmgOmission"
      +          },
      +          "type": "array"
      +        },
      +        "path": {
      +          "type": "string"
      +        },
      +        "sha256": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "path",
      +        "format",
      +        "bytes",
      +        "sha256",
      +        "initiatives",
      +        "omissions",
      +        "nodes",
      +        "edges"
      +      ],
      +      "type": "object"
      +    },
      +    "Change": {
      +      "properties": {
      +        "after": true,
      +        "before": true,
      +        "field": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "field",
      +        "before",
      +        "after"
      +      ],
      +      "type": "object"
      +    },
      +    "ContentRange": {
      +      "properties": {
      +        "end": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "start": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "total": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "start",
      +        "end",
      +        "total"
      +      ],
      +      "type": "object"
      +    },
      +    "ContextData": {
      +      "properties": {
      +        "proposals": {
      +          "items": {
      +            "$ref": "#/$defs/RetentionProposal"
      +          },
      +          "type": "array"
      +        },
      +        "sections": {
      +          "items": {
      +            "$ref": "#/$defs/Section"
      +          },
      +          "type": "array"
      +        },
      +        "slots": {
      +          "items": {
      +            "$ref": "#/$defs/SlotChange"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "sections",
      +        "slots"
      +      ],
      +      "type": "object"
      +    },
      +    "Continuation": {
      +      "properties": {
      +        "cursor": {
      +          "type": "string"
      +        },
      +        "next_arguments": true
      +      },
      +      "required": [
      +        "cursor",
      +        "next_arguments"
      +      ],
      +      "type": "object"
      +    },
      +    "Coverage": {
      +      "properties": {
      +        "complete": {
      +          "type": "boolean"
      +        },
      +        "initiatives": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "omitted": {
      +          "items": {
      +            "$ref": "#/$defs/Omission"
      +          },
      +          "type": "array"
      +        },
      +        "rules_complete": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "initiatives",
      +        "complete",
      +        "rules_complete",
      +        "omitted"
      +      ],
      +      "type": "object"
      +    },
      +    "Entity": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "revision": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "revision"
      +      ],
      +      "type": "object"
      +    },
      +    "EvidenceResult": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "relation": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "relation"
      +      ],
      +      "type": "object"
      +    },
      +    "FailedStep": {
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "step": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "step",
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "Issue": {
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "field": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "message",
      +        "retryable"
      +      ],
      +      "type": "object"
      +    },
      +    "MutationData": {
      +      "properties": {
      +        "affected": {
      +          "items": {
      +            "$ref": "#/$defs/Entity"
      +          },
      +          "type": "array"
      +        },
      +        "artifacts": {
      +          "items": {
      +            "$ref": "#/$defs/Artifact"
      +          },
      +          "type": "array"
      +        },
      +        "changes": {
      +          "items": {
      +            "$ref": "#/$defs/Change"
      +          },
      +          "type": "array"
      +        },
      +        "created": {
      +          "items": {
      +            "$ref": "#/$defs/Entity"
      +          },
      +          "type": "array"
      +        },
      +        "evidence": {
      +          "items": {
      +            "$ref": "#/$defs/EvidenceResult"
      +          },
      +          "type": "array"
      +        },
      +        "failed_steps": {
      +          "items": {
      +            "$ref": "#/$defs/FailedStep"
      +          },
      +          "type": "array"
      +        },
      +        "primary": {
      +          "anyOf": [
      +            {
      +              "$ref": "#/$defs/Entity"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "slots": {
      +          "items": {
      +            "$ref": "#/$defs/SlotChange"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "created",
      +        "affected",
      +        "changes",
      +        "evidence",
      +        "failed_steps",
      +        "slots",
      +        "artifacts"
      +      ],
      +      "type": "object"
      +    },
      +    "NodeData": {
      +      "properties": {
      +        "body": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "body_range": {
      +          "anyOf": [
      +            {
      +              "$ref": "#/$defs/ContentRange"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "created_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "currentness": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "initiatives": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "layer": {
      +          "type": "string"
      +        },
      +        "metadata_is_current": {
      +          "type": "boolean"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "node_type": {
      +          "type": "string"
      +        },
      +        "properties": true,
      +        "recorded_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "revision": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "successors": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "tags": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "tier": {
      +          "type": "string"
      +        },
      +        "visibility": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "initiatives",
      +        "id",
      +        "revision",
      +        "node_type",
      +        "tier",
      +        "name",
      +        "tags",
      +        "layer",
      +        "visibility",
      +        "currentness",
      +        "successors",
      +        "metadata_is_current"
      +      ],
      +      "type": "object"
      +    },
      +    "Omission": {
      +      "properties": {
      +        "count": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "section": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "section",
      +        "count",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    "RetentionProposal": {
      +      "properties": {
      +        "action": {
      +          "type": "string"
      +        },
      +        "from": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "to": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name",
      +        "action",
      +        "from",
      +        "to",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    "Section": {
      +      "properties": {
      +        "details": true,
      +        "name": {
      +          "type": "string"
      +        },
      +        "records": {
      +          "items": {
      +            "$ref": "#/$defs/NodeData"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "records",
      +        "details"
      +      ],
      +      "type": "object"
      +    },
      +    "SlotChange": {
      +      "properties": {
      +        "after": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "before": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "revision": {
      +          "type": "string"
      +        },
      +        "slot": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slot",
      +        "revision"
      +      ],
      +      "type": "object"
      +    },
      +    "State": {
      +      "enum": [
      +        "ok",
      +        "applied",
      +        "unchanged",
      +        "partial",
      +        "rejected"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "properties": {
      +    "api_version": {
      +      "const": 1,
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "continuation": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/Continuation"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "coverage": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/Coverage"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "data": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/ContextData"
      +        },
      +        {
      +          "$ref": "#/$defs/MutationData"
      +        }
      +      ]
      +    },
      +    "issues": {
      +      "items": {
      +        "$ref": "#/$defs/Issue"
      +      },
      +      "type": "array"
      +    },
      +    "operation": {
      +      "const": "reflect",
      +      "type": "string"
      +    },
      +    "replayed": {
      +      "type": "boolean"
      +    },
      +    "request_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "$ref": "#/$defs/State"
      +    }
      +  },
      +  "required": [
      +    "api_version",
      +    "operation",
      +    "state",
      +    "replayed",
      +    "data",
      +    "issues"
      +  ],
      +  "title": "Response",
      +  "type": "object"
      +}
  2. First observedv0.7.5

TDQS

B3/5.0
Behavior3/5

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

readOnlyHint already covers the safety profile; the description adds that it performs no automatic semantic edits, which usefully confirms it only reports candidates rather than applying fixes. It still omits whether repeated calls are cheap, whether results are paginated, and whether anything is cached or persisted.

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 front-loaded sentence with no filler; every clause names a category of diagnostic output or a non-mutation guarantee. It is terse but not padded.

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

Completeness2/5

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

Because an output schema exists, return shape need not be described, and readOnlyHint covers safety. However, the required initiative parameter and the include/cursor/budget_chars controls are unexplained, so an agent lacks enough information to scope and page the call correctly.

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

Parameters2/5

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

Schema coverage is 0% for four parameters, and the description documents none of them by name: initiative, include, cursor, and budget_chars all lack semantic explanation. The listed findings loosely correspond to include enum values, but that mapping is not stated, so the description does not compensate for the schema gap.

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?

The description states a read-only diagnostic operation and enumerates four concrete findings it surfaces: unresolved work, stale summaries, scope fragmentation, and maintenance candidates. It is clearer than the bare name reflect, but it never distinguishes itself from siblings such as context, review, or trail, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no named alternatives. The closest signal is the trailing 'no automatic semantic edits,' which implies inspection-only use, but the agent is left to infer when reflect is preferable to context, review, or trail.

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