Skip to main content
Glama

Log drill event

log_drill_event

Add one action of the player's on a clip to their drill history, kept apart from what Morris reads as their interests and from get_my_drill_activity. Use it when the player tells you they watched, saved, practised or skipped a clip; for a scored attempt use log_drill_attempt. Saved at once, without approval; it never changes their plan. Idempotent by idempotency_key.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "clip_id": "<clip_id>",
      "event": "<event>",
      "idempotency_key": "<idempotency_key>"
    },
    "name": "log_drill_event"
  }
}

Input Schema

NameRequiredDescriptionDefault
eventYesimpression: shown to the player. clip_end: watched to the end (marks it seen). open_full_video: opened the whole video (marks it seen; that video then stays out of their library, WhatsApp and Thursday's video for six months). save / unsave: their saved list. practice / unpractice: they did it, or undo that. skip: passed over.
clip_idYesThe clip's id (UUID), from search_drill_clips or get_drill_digest.
idempotency_keyYesA new unique key per action (letters, digits, _ : -). Repeating a key does not log twice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / clip_id / description
      Added value: +"The clip's id (UUID), from search_drill_clips or get_drill_digest."
    • addedInput schema / properties / event / description
      Added value: +"impression: shown to the player. clip_end: watched to the end (marks it seen). open_full_video: opened the whole video (marks it seen; that video then stays out of their library, WhatsApp and Thursday's video for six months). save / unsave: their saved list. practice / unpractice: they did it, or undo that. skip: passed over."
    • addedInput schema / properties / idempotency_key / description
      Added value: +"A new unique key per action (letters, digits, _ : -). Repeating a key does not log twice."
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, it discloses that the write is committed immediately without an approval step, that it does not alter the player's plan, and that the record is isolated from the interest model Morris consumes — all genuinely useful side-effect context for a mutation. The 'idempotent by idempotency_key' claim sits in mild tension with idempotentHint=false, but the description is the more precise statement (the call only repeats safely when the key repeats), so this reads as clarification rather than contradiction; it does not say what the call returns, though.

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, trigger, alternative, and side-effect behaviour in four tight sentences, front-loaded with the primary purpose. The opening sentence is dense to the point of being slightly hard to parse on first read, but no sentence is filler.

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?

For a three-parameter write tool with no output schema, the description covers when to call it, what it does not affect, that it commits without approval, and how duplicates are prevented. The only gap is return behaviour — the agent must infer success handling, presumably via the get_write_status sibling.

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 100%, so every parameter, including the full event enum and the key format, is already documented in structured form. The description adds only the summarised event verbs ('watched, saved, practised or skipped') and the idempotency behaviour of the key, which the schema already states. Baseline 3 is appropriate.

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 specific verb and resource: 'Add one action of the player's on a clip to their drill history.' It immediately bounds the scope by naming what it is not ('kept apart from what Morris reads as their interests and from get_my_drill_activity'), so an agent can distinguish it from the read-side sibling without opening either schema.

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

Usage Guidelines5/5

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

It gives an explicit trigger ('Use it when the player tells you they watched, saved, practised or skipped a clip') and an explicit routing rule to an alternative for a different case ('for a scored attempt use log_drill_attempt'). Both the when and the when-instead are stated, leaving nothing to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.