Skip to main content
Glama

OBS Save Registration Draft

obs_save_registration_draft
Destructive

Replace your saved OBS registration draft with 1-12 confirmed CRNs, without registering or dropping courses. Requires explicit confirmation and write opt-in.

Instructions

Replace the saved OBS registration draft with exactly one to twelve supplied CRNs. This changes the user's saved draft and can replace its existing contents. Requires the user's explicit confirmation of the exact CRNs and replacement, confirm=true, and the operator's NINOVA_OBS_REGISTRATION_WRITES=1 opt-in. Does not register or drop courses. If the save would remove courses already in the draft, nothing is sent and the result lists previous_crns and removed_crns; call again with allow_replace=true only after the user accepts losing them. Reports saved, unchanged, rejected or uncertain based on the submission and fresh draft readback. An uncertain result is not proof that the draft was saved. Local stdio only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
crnsYes
confirmYes
allow_replaceNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.2.1

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds far more: which state is destroyed (existing draft contents), the guard that nothing is sent when a save would remove courses, the readback-based outcome reporting (saved/unchanged/rejected/uncertain), the caution that 'uncertain' is not proof of success, and the local stdio constraint. This is behavior beyond what the structured fields convey.

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?

Front-loads the core mutation and its replacement semantics, then sequences confirmation, opt-in, and the removal guard in roughly the order an agent would need them. It is dense and long, but nearly every sentence adds distinct operational guidance rather than repeating structured fields.

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

Completeness5/5

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

For a destructive multi-parameter tool with an output schema present, the description supplies the prerequisites, the failure/removal path, and the interpretation of uncertain results. Nothing an agent needs to call this correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries full burden and does so: it defines crns as one to twelve exact CRNs needing user confirmation, confirm as the explicit-confirmation gate, and allow_replace as the opt-in required only after the user accepts course loss. All three parameters gain meaning not present in the schema.

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?

States a specific verb and resource ('Replace the saved OBS registration draft with exactly one to twelve supplied CRNs') and immediately distinguishes itself from related read tools by noting it does not register or drop courses. An agent can differentiate it from obs_get_registration_draft and obs_validate_registration_plan without opening any 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?

Explicitly states prerequisites (user confirmation of exact CRNs with confirm=true, operator opt-in NINOVA_OBS_REGISTRATION_WRITES=1) and the exact condition for re-invoking with allow_replace=true only after the user accepts losing courses. It also names what the tool is not for ('Does not register or drop courses'), 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.

Deploy Server

Other Tools