Skip to main content
Glama

Report a homework job done

homework_done

Reports a job done: the public link of every item you posted, by its ref, and any item you left out with the reason; for a photos job or an end card job, the refs of the items you sent files for (sent), with links empty. Every item needs one of them, except on a job Marsell confirms itself before it accepts your report: setting up a Google Ads account is reported with links empty, and Marsell looks for the Google Ads connection, refusing the report with why until it sees it (the owner still has to press Connect Google Ads); it also closes the job on its own once it sees the connection. Marsell marks those posts as out, and reads the photos you sent.

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": {
      "job_id": "<job_id>",
      "links": "<links>"
    },
    "name": "homework_done"
  }
}

Input Schema

NameRequiredDescriptionDefault
sentNoA photos job or an end card job only: the refs of the items you sent files for through get_upload_link.
linksYesOne entry per item you posted: its ref and the public https link it went out at.
notesNoAnything the owner should know about the job.
job_idYesThe job's id from homework_list (hw- and 16 hex characters).
projectNoThe project's id or exact name. Optional when the account has one project.
skippedNoThe items you left out, each with the reason.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only say it is a non-read, non-destructive, closed-world write; the description adds real substance beyond that — a completeness rule ("Every item needs one of them"), a server-side refusal path with a reason until the Google Ads connection is observed, and an automatic job closure plus marking of posts as out. It still says nothing about rejection of a bad link, resubmission after refusal, or idempotency of the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content-wise there is little waste, but it is delivered as one long comma-and-colon-chained sentence that buries the general rule behind the Google Ads special case. A front-loaded summary sentence followed by the exception would serve an agent far better, especially since the exception occupies roughly half the text.

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 six-parameter write tool with no output schema and only coarse annotations, this covers the required payload shape, the optional fields' roles, the validation rule, and the one documented special case with its refusal and auto-close behavior. Gaps remain around what the response looks like and what happens after a refusal, but the definition is usable as-is.

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?

Schema coverage is 100%, so the baseline is 3; the description goes beyond the schema by explaining the relationship between `sent`, `links` and `skipped` as a per-item coverage requirement and by documenting the exception where links are legitimately empty. `notes` and `project` are not discussed, which keeps it from a 5.

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?

The opening clause names a specific verb and resource ("Reports a job done") and immediately scopes it to the homework-job domain, which separates it from siblings like homework_get, homework_list and homework_take. It never states in plain terms that this closes/completes a job in the homework workflow, but the mechanics it describes make the intent unambiguous.

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

Usage Guidelines3/5

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

Conditional guidance is given for which fields apply per job type (photos/end card use `sent` with empty links; the Google Ads setup job is reported with links empty). What is missing is when to call this at all versus homework_stuck or homework_take, and whether the job must first be taken or fetched — the workflow prerequisites are left implicit.

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.