Skip to main content
Glama

commitment_ingest

Convert calendar events into a persistent commitment ledger, reconciling changes as active or withdrawn states. Preserves history with states-not-deletions and never writes back to the calendar.

Instructions

Ingest calendar events into the operator's commitment ledger and persist the result (SOIL collection willow/commitments). Read-only reconcile: a new event becomes an ACTIVE commitment, a cancellation a WITHDRAWN state, a moved event keeps its old time in history — nothing is deleted (states-not-deletions). Only the FACT is stored (title/when/who/state); the event body/notes/location are read to derive the fact then DROPPED, never persisted (receipt-not-recording).

events: a list of {uid, title, start, end?, attendees?, body?, cancelled?} — the operator/integration push path (start/end are ISO-8601). Omit it to pull from the live calendar source; that transport (gcal OAuth) is a home-box step, so until then an omitted events returns transport_unwired rather than inventing data.

This tool NEVER writes the calendar back — a cancel/reschedule is a proposal routed through the SAFE gate, which is deliberately not exposed over MCP (no new authority).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
app_idYes
eventsNo
Behavior5/5

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

The description is rich in behavioral context beyond the sparse annotations. It discloses that nothing is deleted (states-not-deletions), the event body/notes/location are read to derive the fact then dropped (receipt-not-recording), and omitted `events` results in `transport_unwired` rather than fabricated data. It also clarifies that the calendar is never written back. The annotations only set readOnlyHint=false, destructiveHint=false, which agrees with this description—no contradiction.

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 dense but every sentence carries essential operational and behavioral information. It is front-loaded with the primary purpose, then expands into state semantics, data handling, and edge cases. The structure moves logically from what the tool does to how parameters behave to what it won't do—no filler or redundancy. Despite its length, it is appropriately detailed for the complexity.

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?

There is no output schema, so the description must explain what the tool returns. It mentions `transport_unwired` for the unwired pull case, but it does not describe the normal success return (e.g., a confirmation, a list of created commitments, or an acknowledgment). It also leaves `app_id` undefined. For a tool that persists data, the absence of a return contract is a notable gap, and the parameter description is incomplete (~50% coverage).

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?

The schema provides only types and defaults; description coverage is 0%. The description compensates by fully explaining the `events` parameter: a list of {uid, title, start, end?, attendees?, body?, cancelled?} with ISO-8601 start/end, and the semantics of omitting it. However, `app_id` (required) is not explained at all. While `app_id` may be self-evident from context, the lack of any description for a required parameter is a minor gap.

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 opens with a precise verb-resource pair: 'Ingest calendar events into the operator's commitment ledger and persist the result.' It goes on to specify the persistence target (SOIL collection `willow/commitments`), the state machine (ACTIVE/WITHDRAWN), and the invariant that nothing is deleted. This makes the tool's purpose unambiguous and clearly distinguishes it from read-only or deletion-oriented siblings like `commitment_list` or `store_delete`.

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?

The description gives clear when-to-use and when-not-to-use guidance: it explains that omitting `events` triggers a pull from the live calendar source but warns this transport is a home-box step and will return `transport_unwired` instead of inventing data. It also explicitly states that the tool never writes the calendar back and that cancel/reschedule proposals go through the SAFE gate, which is not exposed over MCP. While it doesn't name alternative tools explicitly, it sets clear boundaries.

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

Install Server

Other Tools

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/willow-memory/willow-mcp'

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