Skip to main content
Glama

Set lifecycle frontmatter

set_frontmatter
Destructive

Update frontmatter on an existing note to reflect fact lifecycle changes such as verification, supersession, or invalidation. Preserves the Markdown body and maintains queryable history.

Instructions

Use this when a fact's lifecycle changes: verified today, superseded by a newer note, or confidence raised or lowered. Prefer invalidating an outdated fact (invalid_at + invalidated_by) over deleting or rewriting it: history stays queryable. Use rejected entries in 'option -- reason' format to record discarded options so a future agent does not propose them again. Update frontmatter fields on an existing memory note. This write operation only changes origin, confidence, last_verified, supersedes, rejected, valid_from, invalid_at, invalidated_by, and the automatic updated timestamp; the Markdown body is preserved.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
originNo
rejectedNo
rel_pathYes
confidenceNo
invalid_atNo
request_idNo
supersedesNo
valid_fromNo
expected_hashNo
last_verifiedNo
invalidated_byNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
indexedYes
updatedNo
rel_pathNo
replayedNo
committedNo
content_hashYes
operation_idNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed9 schema fields changedv0.1.5
    • addedInput schema / properties / request_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Request Id"
      +}
    • addedOutput schema / properties / committed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Committed"
      +}
    • addedOutput schema / properties / operation_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Operation Id"
      +}
    • addedOutput schema / properties / rel_path
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Rel Path"
      +}
    • addedOutput schema / properties / replayed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Replayed"
      +}
    • removedOutput schema / properties / updated / $ref
      Removed value: -"#/$defs/UpdatedFrontmatterOutput"
    • addedOutput schema / properties / updated / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/$defs/UpdatedFrontmatterOutput"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / updated / default
      Added value: +null
    • changedOutput schema / required
      Previous value: -[
      -  "updated",
      -  "content_hash",
      -  "indexed"
      -]New value: +[
      +  "content_hash",
      +  "indexed"
      +]
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already mark this as destructive, but the description goes beyond that by listing exactly which fields change, noting the body is preserved, and mentioning the automatic updated timestamp. It also reveals the invalidation convention that keeps history queryable, which is valuable behavioral context not available from annotations alone.

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 tightly packed and front-loaded with the primary use case. Every sentence adds useful guidance or behavioral scope, and the field list is precise without being bloated.

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

Completeness3/5

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

For an 11-parameter tool with zero schema descriptions, this is a solid but incomplete definition: the core lifecycle workflow is well covered, yet several parameters remain unexplained in terms of accepted formats or vocabularies. The output schema exists, so missing return-value documentation is less of a concern, and the destructive scope is clearly bounded.

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?

With 0% schema description coverage, the description carries the full burden of documenting parameters. It explains the lifecycle meaning of invalid_at/invalidated_by, the 'option -- reason' format for rejected, and the list of mutable fields. However, it leaves expected_hash, request_id, confidence values, origin values, and date formats undefined, so some parameters still lack usable semantics.

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?

The description states a specific verb and resource: 'Update frontmatter fields on an existing memory note,' and it names the exact lifecycle triggers. It distinguishes itself from siblings like patch_note_section by limiting scope to frontmatter and enumerating the fields it affects.

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?

It explicitly says when to use the tool ('when a fact's lifecycle changes') and gives a strong preference rule: invalidate outdated facts rather than deleting or rewriting them. It does not explicitly name sibling alternatives for body edits, but the claim that the Markdown body is preserved implies that boundary.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VBlackJack/Datacron'

If you have feedback or need assistance with the MCP directory API, please join our Discord server