Skip to main content
Glama

add_private_file

Destructive

Upload a local file to the account's Moodle private files area, previewing with dry_run first and confirming before the irreversible write.

Instructions

Upload a file to this account's Moodle private files area. IRREVERSIBLE once dry_run=False -- no delete tool exists for private files yet, so this permanently adds the file until the user removes it via PLATO's own UI. Only works when this server is running locally (stdio).

Call with dry_run=True (default) first, show the preview to the user, and only call again with dry_run=False after they explicitly confirm.

Input Schema

NameRequiredDescriptionDefault
dry_runNoIf True (default), only preview the upload without doing it. Call again with dry_run=False (same parameters) to actually upload it.
file_pathYesLocal file path to upload.

Output Schema

NameRequiredDescriptionDefault
dry_runYes
messageYes
previewYes
executedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds context annotations cannot: the effect is permanent because no delete tool exists for private files, removal requires PLATO's own UI, and the transport requirement is disclosed. This is exactly the kind of consequence detail an agent needs before a write.

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?

Two short paragraphs: the first establishes what happens and why it is irreversible, the second gives the confirmation protocol. Nothing is redundant and the irreversible warning is front-loaded.

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 two-parameter destructive write with an output schema, full schema coverage, and annotations covering the safety profile, the description supplies everything still missing: permanence, no undo path, transport constraint, and the confirmation sequence.

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 coverage is 100%, so both parameters are already documented, including the dry_run re-call semantics. The description reinforces the dry_run intent but adds no format or syntax detail for file_path beyond what the schema states, so the baseline 3 applies.

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?

States a specific verb and resource: upload a file into this account's Moodle private files area. That scope clearly separates it from download_course_file and get_private_files_info, though no sibling is named explicitly to confirm the distinction.

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?

Gives an explicit workflow: call with dry_run=True (the default) first, show the preview to the user, and only re-call with dry_run=False after explicit confirmation. It also states a hard prerequisite -- the server must be running locally over stdio -- which tells the agent when the tool cannot be used at all.

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