Skip to main content
Glama

synthesise

Creates a synthesis with links to its source nodes and leaves those sources open, so agents can consolidate findings without retiring the underlying evidence.

Instructions

Create a supplied synthesis with links to its sources; does not silently close or retire the sources.

Input Schema

NameRequiredDescriptionDefault
resultYes
sourcesYes
initiativeYes
request_idNoOptional stable operation key supplied by the host/SDK; see replay contract.

Output Schema

NameRequiredDescriptionDefault
dataYes
stateYes
issuesYes
coverageNo
replayedYes
operationYes
request_idNo
api_versionYes
continuationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv0.8.0
    • addedInput schema / $defs
      Added value: +{
      +  "NodeRef": {
      +    "oneOf": [
      +      {
      +        "description": "Returned UUID or exact name in the call initiative; ambiguity is an error.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "description": "Returned canonical ID, including IDs from older vaults.",
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "initiative": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "name": {
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "initiative"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "Synthesis": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "name": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "tier": {
      +        "$ref": "#/$defs/Tier"
      +      },
      +      "type": {
      +        "default": "summary",
      +        "enum": [
      +          "idea",
      +          "outcome",
      +          "summary",
      +          "concept",
      +          "entity"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "body"
      +    ],
      +    "type": "object"
      +  },
      +  "Tier": {
      +    "enum": [
      +      "operational",
      +      "archival"
      +    ],
      +    "type": "string"
      +  }
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / from
      Removed value: -{
      -  "description": "Seed node names.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / initiative / default
      Removed value: -null
    • addedInput schema / properties / initiative / minLength
      Added value: +1
    • changedInput schema / properties / initiative / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • removedInput schema / properties / new_body
      Removed value: -{
      -  "description": "Body for the synthesised node.",
      -  "type": "string"
      -}
    • removedInput schema / properties / new_name
      Removed value: -{
      -  "description": "Name for the synthesised node.",
      -  "type": "string"
      -}
    • removedInput schema / properties / new_type
      Removed value: -{
      -  "default": "summary",
      -  "description": "Type of the synthesised node (defaults `summary`). A CLOSED\nvocabulary, one of exactly these: `episode`, `task`, `checklist`,\n`roadmap`, `experiment`, `hypothesis`, `scratch`, `draft`,\n`audit_event`, `chain`, `board`, `idea`, `outcome`, `reference`,\n`concept`, `entity`, `summary`.",
      -  "type": "string"
      -}
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Optional stable operation key supplied by the host/SDK; see replay contract.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / result
      Added value: +{
      +  "$ref": "#/$defs/Synthesis"
      +}
    • addedInput schema / properties / sources
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/NodeRef"
      +  },
      +  "minItems": 1,
      +  "type": "array",
      +  "uniqueItems": true
      +}
    • removedInput schema / properties / tier
      Removed value: -{
      -  "default": null,
      -  "description": "Tier override. A CLOSED vocabulary, one of exactly these:\n`operational`, `archival`. Defaults from the type. (Not to be confused\nwith the memory *layer* — `core`/`hot`/`warm`/`cold`/`frozen` — which\n`layer` sets.)",
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • changedInput schema / required
      Previous value: -[
      -  "from",
      -  "new_name",
      -  "new_body"
      -]New value: +[
      +  "initiative",
      +  "sources",
      +  "result"
      +]
    • removedInput schema / title
      Removed value: -"SynthesiseParams"
    • 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"
      +    },
      +    "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"
      +    },
      +    "Omission": {
      +      "properties": {
      +        "count": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "section": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "section",
      +        "count",
      +        "reason"
      +      ],
      +      "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": {
      +      "$ref": "#/$defs/MutationData"
      +    },
      +    "issues": {
      +      "items": {
      +        "$ref": "#/$defs/Issue"
      +      },
      +      "type": "array"
      +    },
      +    "operation": {
      +      "const": "synthesise",
      +      "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.2/5.0
Behavior4/5

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

The readOnlyHint=false annotation already signals a mutation, and the description adds a non-obvious behavioral guarantee: it does not silently close or retire the sources. That is useful side-effect context beyond the annotation. It still omits permissions, replay/idempotency behavior, and any mention of the request_id replay contract, but the source-retention clause is meaningful additional transparency.

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?

The description is a single front-loaded sentence with no filler, and the semicolon cleanly separates the core action from the source-handling caveat. Every clause earns its place.

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?

For a mutation tool with four parameters, nested NodeRef definitions, and an output schema, the description is too thin. It covers the core operation and one side effect, but leaves initiative, request_id/replay, NodeRef targeting, and usage relative to siblings unexplained. The output schema reduces the need to describe return values, but not the missing invocation context.

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 description coverage is only 25%, so the description would need to compensate by explaining the four parameters. It only loosely maps 'supplied synthesis' to result and 'links to its sources' to sources, while saying nothing about initiative, request_id, the NodeRef forms, or the tier/type fields. The low coverage leaves significant parameter semantics unexplained.

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 specific verb and resource: create a synthesis with links to its sources. That is clear enough to understand the core operation. However, it does not distinguish the tool from nearby siblings such as note, reference, or relate, so an agent cannot tell from the description alone when 'synthesis' is the right artifact.

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?

The description explains what the tool does but gives no guidance on when to use it instead of note, reference, relate, or other creation tools. It also provides no prerequisites, exclusions, or context about which situations call for a synthesis.

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