ClassQuill MCP server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ClassQuill MCP servershow my upcoming sessions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ClassQuill MCP server
Give any MCP-aware AI tool — Claude, Codex, Cursor, Windsurf, Composio, and more — read access to your ClassQuill tutoring-business data: sessions, students, tutors, parents, invoices, payments, lesson plans, bookings, earnings, and reports.
It's a thin, read-only proxy over the ClassQuill public API
(/v1). Each tool maps 1:1 to a public API endpoint, so the tool list can never drift from
the real API. Your credentials never leave your machine (or, in hosted mode, your request).
ClassQuill is the tutoring-business-management platform by EquateIt. The npm package is published as
equateit-mcp.
Two ways to use it
1. Hosted (recommended — nothing to install)
Point any remote-MCP client at the hosted server:
https://mcp.classquill.com/mcpClaude / Claude.ai — add it as a custom connector and sign in (OAuth).
Codex —
codex mcp add classquill --url https://mcp.classquill.com/mcpAny client — pass your API key as a Bearer token:
Authorization: Bearer ei_live_…
2. Local (run it yourself via npx)
npx -y equateit-mcp # stdio, reads EQUATEIT_API_KEYClaude Code:
claude mcp add classquill -e EQUATEIT_API_KEY=ei_live_xxxx -- npx -y equateit-mcpCursor / Claude Desktop / Windsurf (mcpServers config):
{
"mcpServers": {
"classquill": {
"command": "npx",
"args": ["-y", "equateit-mcp"],
"env": { "EQUATEIT_API_KEY": "ei_live_xxxx" }
}
}
}Related MCP server: Crescender MCP Server
Getting an API key
Create one in the ClassQuill app under Settings → Developers (org admins). Keys look like
ei_live_… and are read-only for this server.
Tools
One read-only tool per /v1 GET route — sessions, students, tutors, parents, invoices,
payments, lesson-plans, homework, questions, subjects, files, results, availabilities,
coverage, reports, and more. The list is generated from the public OpenAPI spec
(npm run gen:tools) so it always matches the live API.
Options & environment
Flag | Env var | Default | Purpose |
|
| — | Your |
| — | off | Run as an HTTP (Streamable HTTP) server instead of stdio. |
|
|
| HTTP port. |
— |
|
| API base (no trailing |
In HTTP mode, each request supplies its own credential as Authorization: Bearer … — an
ei_live_… API key or an OAuth access token.
Develop
npm install
npm run build # → dist/
npm test # unit tests (url builder + auth scheme)Self-hosting the HTTP server is a single container — see Dockerfile.
License
MIT — see LICENSE.
Available Tools
59 toolscoverage_gapsDRead-onlyIdempotentInspect
Coverage Gaps
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max gap rows to return (default 50, max 200) | |
| subject | No | Restrict demand + supply to this subject id | |
| min_tutors | No | A postcode is a gap when fewer than this many tutors cover it |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations disclose read-only, idempotent, non-destructive behavior, but the description adds nothing beyond them. It does not clarify what a 'gap' represents, whether this is a report, or what the output rows mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but short is not concise when it carries zero information. This is under-specification, not efficient writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three optional parameters, an output schema, and many closely related siblings, a single noun phrase is completely inadequate. An agent cannot determine the tool's purpose, expected output, or relationship to coverage_summary/coverage_tutors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with meaningful descriptions for limit, subject, and min_tutors. The description itself contributes no parameter meaning, but the baseline of 3 applies because the schema already documents parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly the tool name: 'Coverage Gaps', with no verb, no resource, and no behavior. It is a tautology and gives an agent no way to know what the tool computes or how to distinguish it from coverage_summary or coverage_tutors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus its sibling coverage tools. No context, prerequisites, or exclusions are given, so the agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coverage_summaryCRead-onlyIdempotentInspect
Coverage Summary
| Name | Required | Description | Default |
|---|---|---|---|
| subject | No | Restrict the counts to this subject id | |
| postcode | No | Meeting-point postcode; covering_area counts tutors within reach |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| online | No | |
| postcode | No | |
| in_person | No | |
| subject_id | No | |
| covering_area | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations. Annotations already communicate read-only, idempotent, and non-destructive behavior, but the description does not explain what the summary contains, how counts are aggregated, or how the optional filters affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
'Coverage Summary' is technically short, but it is under-specification rather than efficient communication. There is no useful content to front-load, so the structure provides no assistance to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having annotations and an output schema, the description does not clarify what the tool computes, when it should be selected, or how it relates to coverage_tutors and coverage_gaps. An agent browsing the sibling list would be unable to confidently choose this tool over similar coverage-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains both parameters: subject restricts counts, and postcode relates to tutor reach. The description itself adds no parameter information, but the high schema coverage makes this acceptable at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Coverage Summary' is a direct restatement of the tool name and provides no verb or specific resource. It does not distinguish coverage_summary from related siblings like coverage_tutors or coverage_gaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool, when not to use it, or what alternatives might be more appropriate. Sibling tools such as coverage_tutors and coverage_gaps are not mentioned, leaving the agent to guess the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coverage_tutorsDRead-onlyIdempotentInspect
Coverage Tutors
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | online | in_person | either (default: all) | |
| limit | No | Records per page (default 100, max 500) | |
| offset | No | Pagination offset | |
| subject | No | Filter to tutors who teach this subject id | |
| postcode | No | Meeting-point postcode; sets each tutor's covers_area + distance_km | |
| arrangement | No | In-person arrangement gate (applies only when mode=in_person) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. However, the description adds zero behavioral context beyond the title, such as pagination behavior, filtering semantics, or how distance_km and covers_area are computed from postcode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but this is under-specification rather than conciseness. A helpful description needs at least a verb and a resource phrase; 'Coverage Tutors' is merely a label. No sentence earns its place because there are effectively no contentful sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema and annotations are relatively rich, but the free-text description leaves the central purpose unstated. An agent cannot reliably distinguish this tool from coverage_summary or coverage_gaps, which is a major gap for a 6-parameter tool. The output schema may explain return values, but it does not compensate for the missing purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all six parameters documented in the input schema. Because the schema carries the full burden of parameter meaning, the baseline is 3 even though the tool description itself contributes no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is only 'Coverage Tutors', which restates the tool's name/title and gives no verb or action. It does not say whether the tool lists, searches, computes, or manages tutors. The ambiguity is especially clear next to siblings like coverage_summary and coverage_gaps, which could also plausibly be described as 'coverage tutors'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as list_tutors, coverage_summary, or coverage_gaps. The description neither states appropriate conditions nor rules out other tools. It provides no context at all, so an agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_availabilityCRead-onlyIdempotentInspect
Get Availability
| Name | Required | Description | Default |
|---|---|---|---|
| availability_id | Yes | Availability rule UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| end_time | No | |
| timezone | No | |
| tutor_id | No | |
| created_at | No | |
| start_time | No | |
| day_of_week | No | |
| schedule_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. However, the description itself adds no behavioral context—it does not describe response behavior, error cases, or what it returns beyond the existing output schema. It neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It contains no useful information beyond the tool's name and does not earn its place as a standalone description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with one well-described parameter, rich annotations, and an output schema, so structural information is complete. However, the description fails to clarify the domain meaning of 'availability' or the intended relationship to list_availabilities, leaving an agent to rely on name inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the single required parameter, availability_id, is described as an 'Availability rule UUID'. The tool description adds nothing about the parameter, so the schema carries the full semantic load and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Availability' simply restates the tool name and annotation title. It identifies a verb and resource but gives no detail about what an availability rule is or how it differs from list_availabilities, so it borders on tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to call this tool instead of list_availabilities or any other sibling. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blog_postCRead-onlyIdempotentInspect
Get Blog Post
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | Blog post UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| date | No | |
| slug | No | |
| tags | No | |
| brand | No | |
| title | No | |
| author | No | |
| status | No | |
| target | No | |
| content | No | |
| excerpt | No | |
| category | No | |
| is_pinned | No | |
| created_at | No | |
| updated_at | No | |
| published_at | No | |
| scheduled_at | No | |
| featured_image | No | |
| organization_id | No | |
| publish_to_portal | No | |
| publish_to_website | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what annotations already state. Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, but the description does not add information about outcomes, errors, return behavior, or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, but it is under-specified rather than deliberately concise. It repeats the tool name without adding useful detail, so it does not earn its place as a helpful definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one well-documented parameter, strong annotations, and an output schema, this is minimally viable. However, it lacks useful information about how it relates to list_blog_posts and when an agent should choose it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents post_id as a 'Blog post UUID' with 100% coverage. The description adds no additional meaning for the parameter, so the baseline of 3 is appropriate because the schema already carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Get') and resource ('Blog Post'), which is specific enough to indicate it retrieves a single blog post. However, it does not explicitly distinguish itself from siblings such as list_blog_posts, and it largely restates the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool vs alternatives. It does not mention that list_blog_posts should be used for fetching multiple posts, nor does it describe prerequisites or context for retrieving a single post.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_classroomCRead-onlyIdempotentInspect
Get Classroom
| Name | Required | Description | Default |
|---|---|---|---|
| classroom_id | Yes | Classroom UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| group_id | No | |
| tutor_id | No | |
| join_code | No | |
| created_at | No | |
| subject_id | No | |
| updated_at | No | |
| price_cents | No | |
| billing_interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear; the description does not contradict them. However, the description itself contributes no additional behavioral context such as error behavior, authorization requirements, or external data semantics, so it adds no value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification, not elegant conciseness: every word ('Get Classroom') duplicates the tool name and title and adds no independent information. There is no sentence structure or lead information beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with a rich annotation set and an output schema, the definition is minimally usable: an agent can infer the required argument from the schema and the read-only safety. Yet it lacks any explanation of the resource, selection criteria, or relationship to list_classrooms, so it is not complete enough for confident use in ambiguous contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, documenting classroom_id as a 'Classroom UUID', so the description need not repeat it. The description adds no extra meaning such as format examples or how to obtain the ID, but the baseline of 3 applies because the schema documentation is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Classroom' is a tautology – it restates the tool name and title without adding any detail about what a classroom is, what fields are returned, or how it differs from sibling tools like list_classrooms. It names a verb and resource, but adds no discriminating information, so it only meets the definition of a restatement rather than a purposeful description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to call get_classroom versus list_classrooms or other get_* siblings. There is no context about classroom_id being required or scenarios where this lookup is appropriate. This is 'no guidance'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceCRead-onlyIdempotentInspect
Get Invoice
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | No | |
| paid_at | No | |
| sent_at | No | |
| currency | No | |
| due_date | No | |
| tutor_id | No | |
| created_at | No | |
| line_items | No | |
| student_id | No | |
| invoice_number | No | |
| amount_due_cents | No | |
| amount_paid_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond those annotations, but it also does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two words, the description is technically concise but is under-specified rather than efficiently informative. It reads as a label rather than a helpful definition, offering no detail to justify its place in the tool contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter schema, the presence of an output schema, and safety annotations, the lack of detail is partially mitigated. However, the description is still too sparse to independently guide an agent, especially with sibling list_invoices available and no clarification of the singular fetch behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage: the only parameter, invoice_id, is described as 'Invoice UUID'. The description adds no additional parameter meaning, but the schema fully documents the parameter, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Invoice' simply restates the tool name and title, adding no new information. It identifies a verb and resource but is essentially tautological, failing to explain what retrieving an invoice entails or how it differs from list_invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not specify when to use this tool versus list_invoices or other get_* siblings, nor does it mention that this tool fetches a single invoice by ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leadDRead-onlyIdempotentInspect
Get Lead
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | Lead UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| No | ||
| notes | No | |
| phone | No | |
| status | No | |
| form_id | No | |
| subject | No | |
| created_at | No | |
| source_url | No | |
| updated_at | No | |
| converted_at | No | |
| source_form_name | No | |
| assigned_tutor_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses no behavioral traits beyond what the annotations already state (readOnly, idempotent, non-destructive, openWorld). It adds no extra context such as error behavior, return semantics, or how the openWorldHint affects lookup results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than genuine conciseness. It consists solely of a two-word restatement of the tool name and offers no structured information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though the input schema and annotations are helpful, the description fails to explain what a lead is, how it fits into the domain, or how to obtain a valid lead_id. The tool cannot be correctly selected based on this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the lead_id parameter is described as 'Lead UUID', so the schema already provides complete parameter documentation. The description adds no additional meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Lead' is a pure restatement of the tool name and annotation title. It names a verb and resource but adds no detail about what a lead is or how this operation is distinguished from the many sibling get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as list_leads or other get_* tools. No context, preconditions, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lesson_participantDRead-onlyIdempotentInspect
Get Lesson Participant
| Name | Required | Description | Default |
|---|---|---|---|
| participant_id | Yes | Lesson participant UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | No | |
| attendance | No | |
| created_at | No | |
| invited_at | No | |
| session_id | No | |
| student_id | No | |
| cancelled_at | No | |
| responded_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is established. However, the description adds no behavioral context beyond the annotations, such as what the participant represents, whether lookup failures return null, or any relationship to lessons.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It repeats the tool name and provides no useful information to the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the output schema exists and annotations are rich, the description still fails to explain what a lesson participant is, how this tool differs from similar get_* tools, or any context about the lookup. A simple single-parameter getter could be adequately described in one or two sentences, but this provides none of that value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% because participant_id is described as 'Lesson participant UUID'. The description adds no extra parameter meaning, but the schema already fully documents the only parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly the tool name, 'Get Lesson Participant', which is a tautology. It states no verb beyond the name and does not distinguish this tool from the many sibling get_* tools such as get_student, get_session, or get_availability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like list_lesson_participants or other get_* tools. The description provides no context, prerequisites, or exclusions, so an agent gets no help selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_locationCRead-onlyIdempotentInspect
Get Location
| Name | Required | Description | Default |
|---|---|---|---|
| location_id | Yes | Location UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| label | No | |
| state | No | |
| suburb | No | |
| owner_id | No | |
| postcode | No | |
| created_at | No | |
| is_default | No | |
| owner_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral information beyond the annotations, which already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. It does not describe pagination, authorization, or the meaning of openWorldHint in practice. No contradiction exists, but the description contributes nothing beyond what structured annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It has no structure, no front-loaded context, and no explanatory content; every useful bit of information comes from the schema and annotations, not the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple single-location getter with a well-covered schema, one required parameter, read-only annotations, and an output schema, so the structured data carries most of the burden. However, the description still fails to clarify what a location is in this domain or how it relates to list_locations, leaving a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter, location_id, is already documented as a 'Location UUID'. The description 'Get Location' adds no additional meaning about the parameter, so it receives the baseline for high schema coverage rather than credit for extra semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Location' simply restates the tool name and title, making it a tautology rather than an explanation. It does not specify what kind of location is returned, what scope it operates on, or how it differs from siblings like list_locations. This is exactly the restates-name/title case, not a meaningful purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to call this tool versus the many sibling tools. It does not mention that it is the single-item counterpart to list_locations or state any conditions, prerequisites, or alternatives. An agent would have to infer usage entirely from the name and parameter schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meCRead-onlyIdempotentInspect
Get Me
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| org_id | Yes | |
| scopes | No | |
| org_name | No | |
| org_slug | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. However, the description itself adds no behavioral context beyond 'Get Me', such as what 'me' refers to, how the identity is determined, or what data is included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than efficient writing. 'Get Me' repeats the tool name and provides no additional structured or contextual information that helps an agent understand the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even for a simple zero-parameter read-only tool, the description is incomplete because it never defines what 'me' means in the API context. With dozens of sibling tools, this ambiguity could cause an agent to misuse or avoid the tool despite the annotations and output schema being present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain about arguments. The empty input schema is fully consistent with the tool's self-referential nature, and the baseline for a parameterless tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Me' merely restates the tool name and does not state what resource or object is returned. It is a tautology that fails to clarify whether this returns the current authenticated user, current session context, or something else.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when get_me should be used instead of sibling tools such as get_student, get_tutor, lookup_user, or get_session, leaving the selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parentCRead-onlyIdempotentInspect
Get Parent
| Name | Required | Description | Default |
|---|---|---|---|
| parent_id | Yes | Parent UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| No | ||
| status | No | |
| last_name | No | |
| created_at | No | |
| first_name | No | |
| student_ids | No | |
| placeholder_email | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses no behavioral traits beyond what the annotations already declare (readOnlyHint, openWorldHint, idempotentHint, destructiveHint). It adds no context about lookup behavior, response contents, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It contains no meaningful structure or front-loaded detail that helps an agent decide to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with annotations, a fully described parameter, and an output schema, the description is minimally sufficient. However, it lacks any context about the parent entity or when to use this tool, so it is only borderline adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parent_id parameter is described as 'Parent UUID'. The description adds no parameter-specific details, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Parent' merely restates the tool name, providing no additional specificity beyond what the name already conveys. It does not describe what a parent is, what data is retrieved, or how this differs from other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is given. The description does not state when to use this tool as opposed to get_student, get_tutor, get_session, or other sibling tools, and no exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paymentCRead-onlyIdempotentInspect
Get Payment
| Name | Required | Description | Default |
|---|---|---|---|
| payment_id | Yes | Payment UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | No | |
| currency | No | |
| tutor_id | No | |
| created_at | No | |
| session_id | No | |
| student_id | No | |
| amount_cents | No | |
| payment_type | No | |
| refund_amount_cents | No | |
| stripe_payment_intent_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. However, the description itself adds no behavioral context beyond a generic 'get' – it does not explain what is returned, whether the record is ephemeral, or any additional effects, so it contributes nothing beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two words, the description is technically concise but it is under-specified and doesn't earn its place: it just repeats the title. A useful description could add purpose and usage context with minimal length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even for a simple single-parameter get-by-id tool, the description is not complete. The schema and annotations cover the parameter and safety, but the description fails to explain the domain meaning of a payment or route the agent to the correct sibling tool, leaving an agent to infer when to use get_payment vs list_payments or get_payout.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the only parameter, payment_id, is already documented as 'Payment UUID'. The description does not add parameter meaning, but the baseline of 3 applies when the schema fully covers parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Payment' merely restates the tool's name and title, making it a tautology. It identifies a verb and resource but provides no detail about what a 'payment' means in this domain or how this tool differs from siblings like list_payments or get_payout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. There is no mention of list_payments for retrieving all payments or get_payout for a related financial entity, and no conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payoutCRead-onlyIdempotentInspect
Get Payout
| Name | Required | Description | Default |
|---|---|---|---|
| payout_id | Yes | Payout UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| paid_at | No | |
| currency | No | |
| is_group | No | |
| tutor_id | No | |
| created_at | No | |
| session_id | No | |
| amount_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses no behavioral context beyond the word 'Get', and the annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. No additional context about authentication, error behavior, or side effects is provided, so the description adds no value beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words that merely repeat the tool name are under-specified rather than productively concise. Every token is redundant, and the description does not earn its place by adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one required UUID parameter, a read-only/idempotent/non-destructive annotation set, and an output schema are all present. However, the description itself leaves usage context and the relationship to list_payouts implicit, making it adequate only because the surrounding structured data compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with payout_id fully described as a required string 'Payout UUID'. The description itself adds no parameter insight, but the schema already carries the full burden, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Payout' is a verbatim restatement of both the tool name and title, making it a tautology rather than an explanation. It names a verb and resource but adds no distinguishing detail to separate it from sibling get_* tools such as get_payment or get_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus list_payouts or other payout-related tools. An agent must infer the intended usage entirely from the name and input schema, which is insufficient for confident selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resultDRead-onlyIdempotentInspect
Get Result
| Name | Required | Description | Default |
|---|---|---|---|
| result_id | Yes | Result UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| mode | No | |
| grade | No | |
| status | No | |
| started_at | No | |
| student_id | No | |
| vce_exam_id | No | |
| completed_at | No | |
| curriculum_level_id | No | |
| homework_assignment_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what the annotations already provide. It does not disclose return behavior, possible empty/open-world outcomes, authentication requirements, or any side effects. There is no contradiction with the annotations, but also no additional transparency from the description itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but it is under-specified rather than concise. It contains no useful content beyond the tool name, so it does not earn its place as a meaningful definition. A two-word tautology is not effective structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The context signals show an output schema and complete parameter schema, but the description still leaves the concept of 'Result' unexplained. In a large sibling family of get_* tools and domain-specific list_ tools, the description is not sufficient for an agent to understand what entity is being fetched or when this tool is relevant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the sole parameter result_id is already documented as a "Result UUID". The description contributes no additional parameter meaning, but because the schema is complete, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly "Get Result", which merely restates the tool name and title. It does not explain what a Result is or what it represents in this domain, so it cannot be distinguished from the many sibling get_* tools such as get_session, get_payment, or get_student. This is a tautology rather than a meaningful purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no usage guidance whatsoever. The description does not state when to call get_result instead of finder tools like list_results, nor does it note any prerequisites, relationship to other entities, or conditions. The agent is left with no support for tool selection beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionCRead-onlyIdempotentInspect
Get Session
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| mode | No | |
| title | No | |
| status | No | |
| ends_at | No | |
| tutor_id | No | |
| starts_at | No | |
| created_at | No | |
| student_id | No | |
| subject_id | No | |
| completed_at | No | |
| duration_minutes | No | |
| amount_owed_cents | No | |
| student_rate_cents | No | |
| tutor_pay_rate_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiceHint=false. The description adds no behavioral context beyond the word 'Get', which merely echoes the read-only nature already captured by annotations. It does not mention auth, rate limits, pagination, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At only two words, the description is under-specified rather than concisely structured. It repeats the title and provides no additional substance for an agent to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and has a single well-documented parameter plus an output schema, the description still lacks semantic context: what a session represents in this domain, how a session_id is obtained, and how this call differs from list_sessions. The agent could guess, but the description alone is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the sole parameter with 'Session UUID' and 100% schema description coverage. The description adds no parameter information, but with full schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Session' restates the tool name and title exactly. It names an operation and resource but does not explain what a session is, what it returns, or how it differs from sibling tools like list_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no exclusions, conditions, or mentions of list_sessions or other get_* siblings, so the agent must infer usage from the name and required session_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_studentCRead-onlyIdempotentInspect
Get Student
| Name | Required | Description | Default |
|---|---|---|---|
| student_id | Yes | Student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| No | ||
| status | No | |
| last_name | No | |
| created_at | No | |
| first_name | No | |
| parent_ids | No | |
| placeholder_email | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. However, the description adds no behavioral context beyond that, such as behavior on missing IDs, permission requirements, or whether the result is a single record or a wrapper object. It neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and has no filler, but it is under-specified rather than concisely informative. It merely repeats the title, so it does not earn its place as useful content for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one required ID, an output schema, and annotations covering safety and idempotency, so much of the necessary context exists outside the description. However, the description itself provides no indication of what distinguishes a student from other entities or when this specific getter should be selected, leaving the agent to rely solely on naming conventions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single required student_id parameter with type and a 'Student UUID' description, so schema coverage is 100%. The description adds no additional parameter-level meaning, such as expected format or how to obtain the ID, but the baseline of 3 applies because the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Student' simply restates the tool name and title, making it a tautology rather than an informative statement of purpose. It contains a verb and resource but no scope, no detail about what is returned, and no differentiation from siblings like get_student_group or list_students.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention list_students, get_student_group, lookup_user, or any other sibling, nor does it describe conditions that would make this tool the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_student_groupCRead-onlyIdempotentInspect
Get Student Group
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Student group UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| color | No | |
| tutor_id | No | |
| avatar_url | No | |
| created_at | No | |
| subject_id | No | |
| updated_at | No | |
| student_ids | No | |
| classroom_id | No | |
| rate_per_student_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description itself adds no behavioral context beyond restating the operation, and it neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but it is under-specified: it merely restates the tool name rather than providing a structured, informative definition. It reads more like a label than a description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the single parameter is well documented and the annotations are rich, the description itself provides no context about the entity, the lookup semantics, or when to prefer this getter over sibling list/get tools. The existing output schema does not compensate for the absence of usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter, group_id, as a student group UUID, so schema description coverage is 100%. The description adds no additional parameter meaning, but the schema carries the semantic burden, yielding the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description exactly restates the tool name and title ('Get Student Group'), making it a tautology rather than a meaningful definition. It does not say what a student group is, how it is identified, or how it differs from list_student_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives such as list_student_groups or get_student. No context, prerequisites, or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tutorDRead-onlyIdempotentInspect
Get Tutor
| Name | Required | Description | Default |
|---|---|---|---|
| tutor_id | Yes | Tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| bio | No | |
| role | No | |
| No | ||
| handle | No | |
| status | No | |
| home_lat | No | |
| home_lng | No | |
| subjects | No | |
| full_name | No | |
| last_name | No | |
| avatar_url | No | |
| created_at | No | |
| first_name | No | |
| covers_area | No | |
| distance_km | No | |
| home_suburb | No | |
| is_published | No | |
| home_postcode | No | |
| max_travel_km | No | |
| teaching_mode | No | |
| tutor_subjects | No | |
| specialisations | No | |
| serves_all_areas | No | |
| placeholder_email | No | |
| service_postcodes | No | |
| in_person_arrangements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, but the description adds no behavioral context on top of them. It does not mention what a 'tutor' is, how lookups behave, whether results can be missing, or any other operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is technically short, but this is under-specification rather than effective concision. The two words simply repeat the tool name and provide no useful structure or additional information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-ID tool with rich annotations and an output schema, the bare description is minimally usable: the agent can infer that it fetches a tutor by UUID. However, it lacks any context about selection criteria, desired usage, or relationship to the many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, with tutor_id described as 'Tutor UUID'. The description itself adds no parameter-level meaning, but the schema already carries that burden adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Tutor' is a tautology that restates the tool name and title without adding any detail. It identifies the resource but does not differentiate this tool from sibling tools such as get_student, get_parent, or get_lesson_participant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. Given the large set of sibling tools, an agent cannot determine from the description why it would choose get_tutor instead of another get_* or list_* tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adjustmentsCRead-onlyIdempotentInspect
List Adjustments
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | period_start <= ISO date | |
| from | No | period_start >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | No | Filter by tutor UUID | |
| include_voided | No | Include voided adjustments (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe, non-mutating behavior is clear without the description. The description adds no additional behavioral context such as pagination behavior, default filtering, or consequences of using voided adjustments, so it provides no value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but wasteful because it repeats the existing title. It is under-specified rather than deliberately concise, and the single sentence does not earn its place by adding information beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The rich input schema, annotations, and output schema compensate for much of what is missing, so the tool is minimally usable. Still, the description never explains what an adjustment is, when adjustment listings are appropriate, or how filters combine with each other, leaving clear gaps for an agent operating outside familiar domain context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each of the 6 parameters already has a meaningful description covering date ranges, pagination, tutor filtering, and voided inclusion. The description adds nothing about parameters, so the baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Adjustments' simply restates the tool name and title in human-readable form. It names a verb and resource but adds no scope, no clarification of what an adjustment is, and no differentiation from the many other sibling list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no mention of required filters, and no exclusions. A user or agent must infer entirely from the name that this is the tool for listing adjustment records, which the schema does not fully convey in prose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_availabilitiesCRead-onlyIdempotentInspect
List Availabilities
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | No | Filter by tutor UUID | |
| day_of_week | No | Filter by day of week (0=Sunday … 6=Saturday) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contributes no behavioral information beyond the verb 'List'. Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so there is no contradiction, but the description adds no extra context such as pagination behavior, authorization needs, or availability semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase with no wasted words and the verb is front-loaded. It is concise, though it is too sparse to add much semantic value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Structured context is strong due to 100% schema coverage, meaningful annotations, and an output schema. However, the description itself leaves out narrative context about availability semantics, pagination behavior, or when to prefer this tool over get_availability, making it minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents all four optional parameters with clear meaning. The description adds no parameter-level detail, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Availabilities' uses a clear verb and resource, so an agent can tell it returns availability records. However, it merely restates the tool name and does not distinguish it from sibling tools like get_availability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of alternatives such as get_availability or other list_* endpoints. The description implies a generic listing operation but provides no context, exclusions, or routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blog_postsCRead-onlyIdempotentInspect
List Blog Posts
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Filter by brand (equateit | classquill). | |
| limit | No | Records per page (default 50, max 200) | |
| offset | No | Pagination offset | |
| status | No | Filter by status (draft | published). | |
| target | No | Filter by target (platform | org). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds no behavioral characteristics beyond that, such as pagination behavior, default ordering, or scope limitations. It is consistent with the annotations but contributes no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three words and front-loaded, but it restates the title without earning its place. It is under-specified rather than genuinely concise, similar to a stub.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, the schema fully documents optional filters, and the output schema exists, so the description needs to convey little about return values. However, with over 60 siblings, it provides no context for when this listing tool is the right choice; it is minimally viable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter schema coverage is 100%, with all five parameters (brand, limit, offset, status, target) individually documented. The description itself adds no parameter semantics, but the schema fully carries that burden, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly the tool title and name: 'List Blog Posts'. It states the operation but adds no detail about scope, filters, or relation to siblings, so it is essentially a tautology rather than an independent explanation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus the many sibling list_* tools, nor when get_blog_post would be more appropriate for a single post. The description provides no usage context, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_booking_requestsCRead-onlyIdempotentInspect
List Booking Requests
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | pending, matched, declined, expired | |
| subject_id | No | Filter by requested subject id |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. However, the description adds no behavioral context of its own, such as pagination behavior, status semantics, or open-world implications; it merely repeats the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but under-specified: it repeats the tool name and does not earn its place by adding useful information. There is no front-loaded differentiation, filtering note, or behavioral detail; this is omission rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The annotations cover read-only/idempotent behavior, all parameters are documented, and an output schema exists, so the invocation requirements are mostly satisfiable. The main missing pieces are business context and when-to-use guidance, which are addressed in the usage dimension; for a simple list endpoint this is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, status, and subject_id are already documented. The description itself adds no parameter-level meaning, but with full schema coverage the baseline of 3 is appropriate and no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Booking Requests' is a verb+resource phrase, but it exactly restates the tool name and title and adds no distinguishing scope or semantics. It also does not separate this from the many sibling list_* tools such as list_sessions or list_leads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives. There is no mention of business context, prerequisites, or exclusions, so an agent has no basis for deciding between this and other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_classroomsCRead-onlyIdempotentInspect
List Classrooms
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| subject_id | No | Filter by subject id, e.g. methods_34 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds no behavioral context beyond the word 'list', which only restates what the annotations imply. No rate limits, result mutability, or other behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal but under-specified rather than efficiently informative. 'List Classrooms' is concise in length but provides no substantive content that earns its place beyond repeating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the annotations plus complete input schema make it minimally callable. However, the description alone does not explain the relationship to get_classroom, whether the list is global or scoped, or what the returned classroom objects represent. This is acceptable for a basic list operation but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents limit, offset, and subject_id with descriptions. The tool description itself adds no parameter-level meaning, but per the rubric the baseline is 3 when the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Classrooms' is essentially a restatement of the tool name 'list_classrooms'. It states a verb and resource, but adds no additional detail about scope, filtering, or what a classroom listing represents, and it does not distinguish itself from sibling tools like get_classroom or list_student_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The description does not mention pagination, filtering, or distinguish list_classrooms from get_classroom or the many other list_* tools in the sibling set. An agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversation_messagesCRead-onlyIdempotentInspect
List Conversation Messages
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 50, max 100) | |
| since | No | created_at >= this ISO timestamp | |
| offset | No | Pagination offset | |
| conversation_id | Yes | Conversation UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, open-world, non-destructive behavior, but the description reveals nothing beyond that. It does not mention ordering, pagination, time filtering behavior, or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence, so it is not verbose, but it does not earn its place because it merely repeats the tool name. This is under-specification rather than useful conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 should communicate return shape or ordering behavior, but it does not. With four parameters and many sibling list tools, the definition leaves too much for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters already have meaningful documentation including limit, offset, since, and conversation_id. The description contributes no parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a verbatim restatement of the tool name and title (List Conversation Messages), so it is tautological and adds no new semantic content. It states a list operation but does not scope the resource or distinguish it from sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of list_conversations, list_org_inbox, or other siblings. An agent must infer the intended use case entirely from the tool name and input schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsCRead-onlyIdempotentInspect
List Conversations
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by type: direct | triad | group | classroom_feed | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint:false, so the safety profile is known without the description. The description adds no behavioral context of its own — no pagination behavior, no auth requirements, and no clarification of what a 'conversation' comprises.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words with zero wasted prose, but this is under-specification, not conciseness. The tool has 3 parameters and ambiguous scope among 60+ siblings, so a minimal restatement does not earn its place as an adequate description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a 0-required-parameter read tool with an output schema and full parameter documentation, the structured data carries most of the load. However, the description is too sparse for an agent to understand what a conversation is here, what the type filter means semantically, or why to choose this over list_conversation_messages and list_org_inbox.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — type (direct | triad | group | classroom_feed), limit (default 20, max 100), and offset are all documented in the schema. Baseline 3 applies because the description itself contributes no parameter information and the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is 'List Conversations' — a word-for-word restatement of the tool name. It identifies a verb and resource but adds no scope, no conversation-type context, and no differentiation from close siblings like list_conversation_messages or list_org_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no guidance on when to use this tool versus alternatives. Nothing distinguishes it from list_conversation_messages or list_org_inbox, and no exclusions, preconditions, or context are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_expensesCRead-onlyIdempotentInspect
List Expenses
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | expense_date <= ISO date | |
| from | No | expense_date >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | logged, approved, rejected, reimbursed | |
| category | No | parking, tolls, materials, training, other | |
| tutor_id | No | Filter by tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral detail beyond that, such as pagination behavior, default scope, or that all parameters are optional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two words, which is under-specification rather than effective conciseness. It has no structure or front-loaded useful content, just a restatement of the tool's name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the schema and annotations are reasonably rich, the description contributes no context about the purpose, filtering semantics, or relationship to sibling tools. An agent selecting among many similar list tools would not be able to distinguish this tool beyond its name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all seven parameters are individually documented in the input schema. The description adds nothing about parameters, but the schema already carries that burden, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Expenses' simply restates the tool name and title, making it a tautology rather than an informative purpose statement. It provides no detail about what the list contains or how it differs from the many sibling list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of related tools like list_payments, list_invoices, or list_mileage. An agent receives no contextual cues about appropriate use cases, filters, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesCRead-onlyIdempotentInspect
List Files
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| scope | No | private, classroom, group, personal, org | |
| offset | No | Pagination offset | |
| resource_type | No | file, link, video, google_drive |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, but the description itself adds no behavioral context beyond what annotations provide. It does not mention pagination behavior, return shape, authentication needs, or any side effects; it also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than conciseness. It restates the tool name and does not earn its place by adding useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain what 'files' refers to, how scope and resource_type interact, or when to choose this over sibling list tools. An agent could invoke the tool mechanically but cannot reliably determine correct parameter combinations or expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all four optional parameters, including allowed values for scope and resource_type, and defaults/max for limit. With near-100% schema description coverage, the description need not repeat parameters; it also adds no extra semantic nuance of its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Files' is effectively a tautology, restating the tool name and title. It identifies a verb and resource but gives no detail about what 'files' means in this system or how it differs from the many sibling list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like list_lesson_plans, list_homework, list_classrooms, or list_availabilities. The description provides no context, prerequisites, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_homeworkCRead-onlyIdempotentInspect
List Homework
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| scope | No | classroom, group, student | |
| offset | No | Pagination offset | |
| student_id | No | Filter by assigned student UUID | |
| homework_type | No | text or exam |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context whatsoever, such as what records are returned, pagination implications, or how scope interacts with homework data. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is under-pecified rather than concise: 'List Homework' is two words with no structure, front-loading, or earnt information. Every sentence should earn its place, but there are no sentences with substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description leaves the core domain concept of 'homework' undefined. While the schema clarifies filters and annotations confirm safety, the agent cannot infer what the tool returns, how homework relates to classrooms/groups/students, or why it exists alongside many similar list_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all 5 parameters with types and descriptions, so schema coverage is high. The description contributes no additional parameter meaning, and per rubric the baseline of 3 applies when the schema already handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is the tautological phrase 'List Homework', restating the tool name without any specification. It fails to distiniguish this tool from sibling 'list_*' tools such as list_questions or list_files, offering no differentiation for agent selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. There are no scenarios, exclusions, or sibling comparisons, leaving the agent without a basis to choose it over other list_* tools in the same family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoicesCRead-onlyIdempotentInspect
List Invoices
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | created_at <= ISO date | |
| from | No | created_at >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | draft, open, paid, void, uncollectible | |
| student_id | No | Filter by student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, and the description does not contradict them. However, it adds no behavioral context of its own, such as pagination behavior, default ordering, or what filters are available beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short with no filler, which is concise in length, but it is under-specified: it restates the name and provides no structured explanation. This is under-specification rather than earned conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six optional parameters and numerous sibling list_* and get_* tools, this definition provides no guidance on when this tool is appropriate or how it relates to siblings. The output schema can inform return shape, but the description leaves the agent without usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all six optional parameters. The description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a verbatim restatement of the tool name and title, offering no information beyond the resource being listed. While 'List Invoices' does include a verb and resource, it is a tautology rather than a clarifying statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explanation of when to use list_invoices versus the related get_invoice or other list_* tools. The sibling list includes many similar list operations, but the description provides no distinguishing context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_leadsCRead-onlyIdempotentInspect
List Leads
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | created_at <= ISO date | |
| from | No | created_at >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | new, contacted, consultation_booked, converted, lost | |
| assigned_tutor_id | No | Filter by assigned tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context beyond the annotations—no mention of filters, pagination, date-range behavior, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At only two words, this is under-specification rather than conciseness. There is ample room for a single sentence explaining scope or key usage considerations, and the description currently earns no structural credit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six optional filter parameters, an output schema, and many sibling list tools, yet the description provides no context for how to invoke it correctly. An agent cannot tell whether this returns all leads, how pagination works, or how it relates to get_lead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the six parameters already has a meaningful description. The tool description adds no parameter-level information, but because the schema carries the full burden, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Leads' is a tautology that restates the tool name and title verbatim. It identifies the verb and resource but adds no detail that distinguishes it from other list_* siblings such as list_students or get_lead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_lead for a single lead or other list_* tools. The description does not mention the filtering, pagination, or scoping options available in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lesson_participantsCRead-onlyIdempotentInspect
List Lesson Participants
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | pending, accepted, declined, cancelled, removed | |
| attendance | No | attended, no_show, excused | |
| session_id | No | Filter by session UUID | |
| student_id | No | Filter by student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral traits beyond what the annotations already declare (readOnlyHint, idempotentHint, etc.). It does not mention pagination, filtering semantics, or any side effects, so the agent gains no additional insight from the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no filler, but it is more of a title than an informative description. It is under-specified because it repeats the tool name without providing contextual value, so while it is short, it does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has six optional filters and is part of a large sibling set, the description alone is insufficient to reliably guide invocation. Annotations and output schema help, but the lack of usage context and filter-combination guidance leaves a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are documented with descriptions. The tool description adds no parameter-specific meaning, but the schema already carries the burden; a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a verb (List) and a resource (Lesson Participants), making the tool's basic purpose unambiguous. It does not explicitly differentiate from sibling tools like get_lesson_participant, but the plural 'participants' and 'list' verb imply a collection operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_lesson_participant or list_sessions. The description does not mention any conditions, exclusions, or scenarios where one sibling should be preferred over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lesson_plansCRead-onlyIdempotentInspect
List Lesson Plans
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| scope | No | classroom, group, student | |
| offset | No | Pagination offset | |
| status | No | draft, ready, delivered | |
| student_id | No | Filter by target student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. However, the description itself adds no behavioral context beyond the name—no mention of pagination behavior, default ordering, or what the returned list represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but acceptable conciseness requires a sentence to add information. 'List Lesson Plans' is only three words and repeats the tool name, so it does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists and annotations cover safety, the description is too sparse for a tool with five optional filters and many list siblings. It does not explain whether filters are combinable, what the default scope is, or whether the result is limited to the current user’s context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented in the input schema. The description adds nothing to the parameter semantics, but per the rubric the baseline is 3 when the schema carries the full load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Lesson Plans' is essentially a tautology of the tool name list_lesson_plans and the annotation title. It states a verb and resource but adds no differentiating detail about what counts as a lesson plan or how this tool differs from the many sibling list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like list_sessions, list_lesson_participants, or list_homework. The description also fails to mention whether filtering is required or optional in practice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsCRead-onlyIdempotentInspect
List Locations
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | No | Filter by owning tutor UUID | |
| owner_type | No | Filter by owner type: org, tutor, student | |
| student_id | No | Filter by owning student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contributes no behavioral information beyond what the name implies. Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false; the description adds no pagination, scoping, or side-effect context, so it adds no transparency value beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are maximally short, but this is under-specification rather than effective conciseness. The phrase duplicates the title and uses its space on no useful distinctions, while the underlying tool has meaningful filters and pagination worth mentioning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters and a large sibling list, the two-word description is inadequate for an aent to understand when to choose this tool and what behavior to expect. The schema and annotations cover some technical details, but purpose, scope, and usage routing remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all five optional parameters with descriptions, so the description does not need to repeat them. However, the description also adds no extra semantic context about filtering or pagination behavior, leaving the schema to carry the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Locations' merely restates the tool name/title and adds no explanatory scope. It identifies the action and resource, but does not differentiate this list operation from get_location or the many other list_* siblings in the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_location or other list endpoints. The sibling list implies a broader category, but the description leaves the agent to guess the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mileageDRead-onlyIdempotentInspect
List Mileage
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | trip_date <= ISO date | |
| from | No | trip_date >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | logged, approved, rejected, reimbursed | |
| tutor_id | No | Filter by tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the read-only safety profile is already covered. The description adds no behavioral context beyond that—no pagination behavior, default ordering, authorization requirements, or response shape—making it purely redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is under-specification rather than effective conciseness. It omits all necessary context and front-loads nothing useful for an agent parsing the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters and no output schema, this description is completely inadequate. It does not state what mileage records represent, how the filters combine, or what the list returns, so an agent cannot reliably determine whether this tool fits a request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all six parameters (to, from, limit, offset, status, tutor_id), achieving 100% schema coverage, so the baseline of 3 applies. The description itself adds no parameter semantics; the schema carries the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Mileage' is a tautology—it merely restates the tool name. It does not specify what mileage records are, what domain they belong to, or how this tool differs from sibling list tools such as list_expenses or list_payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No contextual cues, exclusions, or mentions of sibling tools or filters that would help an agent select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_org_inboxCRead-onlyIdempotentInspect
List Org Inbox
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | Filter by status: unread | read | archived |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, but the description itself discloses no behavior—no mention of pagination, ordering, default statuses, or that results may be open-world. It adds zero context beyond the annotations, so it does not help an agent anticipate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At four words, it is not concise but under-specified. There is no substantive information beyond the name, so the brevity is a defect rather than a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and rich annotations, much is covered elsewhere, but the description still fails to explain what an 'Org Inbox' contains or how this listing differs from the many other list_* tools. For a tool with optional filters like status, some context about use cases is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for limit, offset, and status, so the baseline is 3. The description adds nothing about parameters, but the schema fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description is 'List Org Inbox', which restates the tool name with spacing. It conveys a listing operation on an org inbox but offers no details that distinguish it from the many sibling list_* tools. This is a tautology rather than an informative definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor any prerequisites or context. The description contains no if/then or comparison to siblings. Agents are left to infer that 'Org Inbox' is the resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_parentsCRead-onlyIdempotentInspect
List Parents
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No contradiction with the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) — the description is consistent with a safe read-only listing. However, the description itself contributes zero behavioral context beyond what annotations already convey; it doesn't mention pagination defaults, ordering, or what set of parents is returned. The HIGH calibration example earned a 3 by adding scope constraints; this one adds nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two words, the description is under-specification rather than conciseness. It contains no front-loaded distinguishing fact, no exclusion, and no behavioral note — there is nothing here that earns its place beyond restating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The surrounding structured context is rich: output schema exists, both parameters are documented, and annotations fully describe the safety profile. For a simple paginated list tool, an agent can likely invoke it correctly. Yet the description itself is the weakest link — with ~60 mostly read-only list_* siblings, the tool is only minimally identifiable, so 3 (minimum viable) rather than higher.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both limit and offset are fully documented in the input schema with defaults and max values. Per the baseline rule for high coverage, the description need not add parameter detail; it also doesn't, so it neither helps nor hurts. Score 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Parents' is a near-verbatim restatement of the tool name 'list_parents' — a tautology that adds no information beyond the name itself. While it does convey a verb and resource, it fails to differentiate this tool from the many list_* siblings like list_students, list_sessions, and list_tutors, and says nothing about scope or content of the listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With get_parent among the siblings, there is no mention of the list-versus-get distinction, and no context such as 'use for bulk operations' or 'use get_parent for a single record.' The agent is left to infer usage entirely from naming convention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_paymentsCRead-onlyIdempotentInspect
List Payments
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | created_at <= ISO date | |
| from | No | created_at >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | succeeded, pending, refunded, failed, ... | |
| tutor_id | No | Filter by tutor UUID | |
| student_id | No | Filter by student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), which lowers the bar, but the description contributes no behavioral context whatsoever beyond the name. Notably, openWorldHint=true suggests the result set may be non-exhaustive or scope-dependent, yet the description never clarifies this or any pagination/filtering behavior. There is no contradiction between description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words with zero excess, but this is under-specification rather than conciseness. There is no front-loaded scoping constraint, behavioral note, or routing hint — the description earns none of its potential explanatory value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The structured data is rich — full parameter coverage, safety annotations, and an output schema — so call mechanics and return values are covered. However, with 7 optional parameters and no required fields, the description never states the default scope of an unfiltered call, and the domain distinction between payments, payouts, and invoices is never addressed, leaving a meaningful gap for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — all 7 parameters (to, from, limit, offset, status, tutor_id, student_id) carry meaningful descriptions in the schema itself. The description adds no parameter-level meaning, so the baseline 3 applies with the schema doing the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Payments' is a verbatim restatement of the tool name 'list_payments' — a tautology that adds no meaning beyond the name itself. It identifies a verb and resource but provides zero differentiating information against related siblings such as get_payment, list_payouts, list_invoices, or tutor_earnings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. With over 60 sibling tools including other list_* operations and finance-related tools like list_payouts and tutor_earnings, the description leaves the agent with no basis for selecting this tool, and states no exclusions, prerequisites, or routing conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payoutsCRead-onlyIdempotentInspect
List Payouts
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | paid_at <= ISO date | |
| from | No | paid_at >= ISO date | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | No | Filter by tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, but the description adds no behavioral context beyond this. It does not mention date filtering, pagination behavior, or ordering, though these are inferable from parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It provides no meaningful content, so its brevity does not serve the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with five parameters and a large sibling set, the description is far too sparse. It lacks guidance on filtering semantics, relationship to payment vs invoice listing, or when pagination parameters matter. The annotations and schema cover safety and parameter names, but not usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description adds no additional semantic meaning, so it relies entirely on the schema, which is sufficient for a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Payouts' is a tautology that simply restates the tool name and title. It identifies the resource but does not distinguish this tool from siblings like list_payments or get_payout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_payments or get_payout. No context is provided about which scenarios call for listing payouts as opposed to retrieving a single payout.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_questionsCRead-onlyIdempotentInspect
List Questions
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| topic | No | Filter by topic name | |
| offset | No | Pagination offset | |
| source | No | Filter by source. A catalogue source (VCAA, EquateIt, Bank) returns only that catalogue; 'own' returns only this org's authored questions. Omit to get the full catalogue PLUS this org's own questions. | |
| curriculum_level_id | No | Only questions with a part tagged to this curriculum level |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral information beyond the annotations. Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered, but the description itself says only 'List Questions' and provides no context about pagination, defaulting behavior, or what data is returned. There is no contradiction, but also no added transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but under-specified rather than concise. A single sentence that merely restates the title does not earn its place because it adds no information. A helpful description could be one sentence with scope and filtering intent without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The structured context partially compensates: annotations describe the safety profile, the input schema documents all filters, and an output schema exists for return shape. However, the description itself lacks any usable guidance for tool selection among the large sibling list, and it does not clarify what 'questions' means in this system. The overall definition is workable but leaves important selection context to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: all five parameters have meaningful descriptions, and the source parameter explicitly explains catalogue versus own authored questions and the omit behavior. Since the input schema already carries the semantic weight, the description need not repeat parameter details. It does not, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Questions' exactly restates the tool name and title, so it is tautological. It gives no scope, no filtering semantics, and no way to distinguish this tool from the many other list_* siblings (list_sessions, list_students, list_results). A minimally useful purpose statement would mention what questions are listed or how the catalogue relates to the org's own questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when to use this tool versus alternatives. It does not name sibling tools, state when the source filter should be used, or mention any exclusions or prerequisites. The useful usage context in the source parameter description is part of the input schema, not the tool description, so it does not count here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rate_bandsCRead-onlyIdempotentInspect
List Rate Bands
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide read-only, idempotent, open-world, and non-destructive hints. The description adds no behavioral context beyond the word 'List', such as pagination defaults, ordering, or any filtering semantics, so it provides no value beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three words and contains no filler, making it very concise and front-loaded. However, it is so minimal that it relies heavily on the name and schema, though this is not penalized heavily here because conciseness itself is strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has well-documented optional parameters, no required inputs, and an output schema, so the description is adequate for basic invocation. It lacks domain context about what a 'rate band' is or how it differs from rate cells, but this is a moderate gap given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with limit and offset both clearly documented in the schema itself. The description does not need to repeat parameter details, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'List Rate Bands'. It is not a tautology, but it does not differentiate this endpoint from closely related siblings such as list_rate_cells or list_tutor_tiers, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like list_rate_cells or when pagination is necessary. The description gives no context about the intended scenario or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rate_cellsCRead-onlyIdempotentInspect
List Rate Cells
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| band_id | No | Filter by rate band UUID | |
| subject_id | No | Filter by subject id, e.g. methods_34 | |
| include_pay | No | Include pay-sensitive tutor-pay fields (tutor_pay_mode, tutor_pay_pct, tutor_flat_rate_cents). Default false. | |
| session_kind | No | 1on1_online, 1on1_inperson, group, classroom | |
| tutor_tier_id | No | Filter by tutor tier UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the description does not contradict them. However, the description adds no behavioral context such as pagination behavior, filter interaction, or result size limits beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but it is under-specification rather than concise writing. It simply repeats the tool name and does not use its few words to convey any additional information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and annotations are rich, and the optional filters are well documented, but the description fails to explain the domain concept of a rate cell or when this tool should be invoked. Because the output schema exists, return-value details are not required, but the core purpose and selection context remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a meaningful description, including defaults, examples, and filter semantics. The description itself adds no parameter information, but the schema fully carries that burden, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is simply 'List Rate Cells', which restates the tool name without adding any meaning. It does not explain what a rate cell is or how this tool differs from related siblings like list_rate_bands or list_tutor_tiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Given the large sibling list containing several similar list_* tools, the agent receives no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resultsCRead-onlyIdempotentInspect
List Results
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | completed_at <= ISO date | |
| from | No | completed_at >= ISO date | |
| mode | No | vce_exam, topic_practice, sac, homework | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | not_started, in_progress, submitted, completed | |
| student_id | No | Filter by student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. However, the description adds no behavioral context beyond that—no mention of pagination behavior, default ordering, date-range semantics, or relationship to other endpoints. With annotations present, the bar is lower, but the description contributes nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two words and is under-specification rather than valuable conciseness. It is not front-loaded with meaningful information—there is no real content to structure. A short description can be effective, but this one provides no useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, an output schema, and a large sibling set, the description is completely inadequate. It does not explain what results are, how filters interact, what the output represents, or when to prefer this over get_result. The presence of an output schema covers return shapes, but the description fails to provide any operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 7 parameters have descriptions in the input schema. The tool description adds no parameter information, but since the schema fully documents parameters, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description is 'List Results', which merely restates the tool name with capitalization. It identifies the verb and resource but adds no specificity about what a 'result' is or how this tool differs from get_result and other list_* siblings. This is a tautology rather than a meaningful purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like get_result for a single result, or how to choose among the many filter parameters. The description provides no context, exclusions, or preferred usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_session_feedbackCRead-onlyIdempotentInspect
List Session Feedback
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | No | Filter by tutor user UUID | |
| anonymize | No | Return reviewer initials instead of full names | |
| public_only | No | Only feedback the author made public |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what the annotations already state. The readOnly, idempotent, and non-destructive hints are present in annotations, but the description itself does not explain filtering behavior, output shape, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, but it is under-specified: it essentially restates the tool name and provides no additional useful content. This is under-specification rather than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and output schema cover the mechanics, but the description lacks the context needed to decide when this tool is appropriate among dozens of sibling list tools. It does not explain what session feedback represents, how it relates to tutor reviews, or when filters should be used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds no extra meaning, but it does not need to because the schema already explains each parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: it lists session feedback. However, it does not differentiate this from nearby sibling tools such as list_tutor_reviews or list_sessions, so it is clear but not distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. There is no mention of typical scenarios, exclusions, or how session feedback differs from related list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsCRead-onlyIdempotentInspect
List Sessions
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | starts_at <= this ISO date, e.g. 2026-05-31 | |
| from | No | starts_at >= this ISO date, e.g. 2026-05-01 | |
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| status | No | Filter by status: completed, scheduled, cancelled, pending, etc. | |
| tutor_id | No | Filter by tutor UUID | |
| student_id | No | Filter by student UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description contributes no additional behavioral context such as default date ranges, sorting, timezone semantics, pagination behavior, or data scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified. 'List Sessions' is concise in length but not in value: it contains no information beyond the tool name/title and does not earn its place as an explanatory definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complete output schema, rich annotations, and self-documenting parameters, the tool is minimally invocable from structured data alone. However, the description leaves unstated what counts as a 'session' and how this relates to the singular get_session tool, so it is only barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema documents all seven parameters with descriptions, giving 100% schema description coverage, so the baseline is 3. The description itself adds no parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Sessions' is essentially a tautology of the tool name and title. It identifies the verb and resource but provides no scope, meaning of 'session', or differentiation from sibling tools such as get_session or list_session_feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives. No exclusions, no mention of get_session for single-session lookup, and no indication of whether this is the canonical list endpoint among many sibling list_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_student_groupsCRead-onlyIdempotentInspect
List Student Groups
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| subject_id | No | Filter by subject id, e.g. methods_34 | |
| classroom_id | No | Filter by parent classroom UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive, but the description adds no behavioral context beyond that—no pagination behavior, filter semantics, or default ordering. It does not contradict the annotations, so it is not a 1, but it contributes nothing beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three words long and under-specified. It is concise in word count but not appropriately sized for a tool with four parameters and a large sibling set; there is meaningful content missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the annotations and output schema covering safety and return shape, the description does not explain what a 'student group' is, how filters interact, or how this differs from other list tools. The context is insufficient for an agent to confidently choose and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, offset, subject_id, classroom_id) are already documented. The description itself adds no parameter meaning, but the baseline of 3 applies because the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Student Groups' is essentially the tool name rewritten with spaces, adding no scope, filtering intent, or differentiation from the many sibling list_* tools. It is a tautology rather than a substantive definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_student_group, list_students, or list_classrooms. No conditions, exclusions, or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_studentsCRead-onlyIdempotentInspect
List Students
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds no behavioral context beyond that, but it also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise to the point of under-specification. It is a short phrase that merely repeats the tool name, providing no front-loaded useful elaboration about behavior, return values, or selection criteria.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set, strong annotations, and presence of an output schema, the tool is minimally callable. However, the description itself is too sparse to fully contextualize the resource or its relationship to the many sibling list tools, leaving selection ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the two parameters (limit and offset), and both have clear descriptions. The tool description adds no parameter-level meaning, but the baseline of 3 is appropriate because the schema already carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Students' is essentially a restatement of the tool name, providing no additional specificity about scope, filtering, or what a 'student' record includes. It also does nothing to distinguish this tool from siblings like list_student_groups, list_lesson_participants, or list_students-related listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description does not mention when to prefer list_students over other list_* siblings, nor any exclusions or context such as 'list all students in the organization'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subjectsARead-onlyIdempotentInspect
List Subjects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description itself adds no behavioral detail beyond the tool name. However, annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the most important behavioral guarantees are covered elsewhere; there is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with no wasted words. It could be slightly more informative by saying 'Returns all subjects', but for a zero-parameter list tool this length is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, rich annotations, and presence of an output schema, the description is sufficiently complete. It does not explain what 'subjects' means or mention pagination/ordering, but these are not critical for such a simple parameterless list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. The baseline of 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation and resource: 'List Subjects'. It is distinguishable from the many sibling list_* tools because no other sibling targets subjects, so an agent can select it without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicit: an agent can infer 'use this when a list of subjects is needed', but the description does not state this directly or mention any situations where a sibling tool should be preferred. Since there are no sibling subject tools, the ambiguity is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tutor_reviewsCRead-onlyIdempotentInspect
List Tutor Reviews
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| tutor_id | Yes | Tutor UUID | |
| anonymize | No | Return reviewer initials instead of full names |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. However, the description itself adds no behavioral context such as pagination behavior, default ordering, whether anonymization affects output, or any other runtime characteristics beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but it is also redundant with the tool name and title. It is under-specified rather than efficiently informative; the single phrase does not earn its place because it provides no new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters and sits among dozens of siblings, the description is too minimal to help an agent understand what tutor reviews are, when to call this tool, or how it relates to similar tools. The output schema exists but does not compensate for the lack of context around the tool's purpose and typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a meaningful description in the input schema. The description adds no parameter-level meaning, but the schema carries the full burden, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is 'List Tutor Reviews', which exactly restates the tool name and annotation title. It communicates a verb and resource, but adds no detail beyond the name, so it reads as a tautology rather than a real explanation of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The sibling list includes many similar list_* tools such as list_session_feedback, list_tutors, and list_students, but the description does not distinguish tutor reviews from those or mention any use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tutorsCRead-onlyIdempotentInspect
List Tutors
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset | |
| is_published | No | Filter by public-listing state. `true` returns only publicly-listed tutors (what a public tutor grid wants); a member with no tutor profile counts as not-published and is excluded. `false` returns the non-published remainder. Omit to return all staff. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contributes no behavioral context beyond the annotations, which already declare readOnly, idempotent, openWorld, and non-destructive hints. It does not disclose pagination defaults, authorization needs, or the subtle published-versus-staff filtering behavior; the rich filtering semantics live only in the parameter schema, not in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At two words, the description is certainly short, but it is under-specified rather than concise. It provides no front-loaded scoping, no behavior, and no value beyond the tool name itself, so it fails the 'every word earns its place' test.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The overall tool definition is somewhat rescued by the annotations, a rich parameter schema, and an output schema, all of which reduce the burden on the description. Still, the description leaves out the core context of what list_tutors returns and when to choose it over siblings, making it minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the is_published parameter is documented in unusual detail, including what `true` and `false` mean and what happens when the parameter is omitted. The description adds nothing to parameter understanding, but the schema is self-sufficient, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Tutors' exactly restates the tool name and title, making it a tautology rather than a purpose statement. It identifies a verb and a resource but gives no scope, such as whether this returns all staff or only published tutors, and it does not distinguish itself from get_tutor, recommend_tutors, or coverage_tutors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance in the description about when to use this tool versus any sibling list/get/recommend tool. The is_published parameter schema hints at public tutor grid use, but that context is embedded in the schema, not in the tool description, and no alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tutor_tiersCRead-onlyIdempotentInspect
List Tutor Tiers
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page (default 20, max 100) | |
| offset | No | Pagination offset |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. However, the description adds zero behavioral context beyond the annotations — no mention of pagination behavior, data scope, or any operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only four words and adds no informational value beyond the tool name. It is under-specified rather than genuinely concise — it could have been omitted entirely with no loss of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema and parameter schema exist, the description leaves the concept of 'tutor tiers' undefined and provides no guidance on when the result set is needed. For a list tool the definition is minimal but still missing the core meaning of the resource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both limit and offset are documented with meaning. The description itself provides no additional parameter context, but the high schema coverage justifies the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List Tutor Tiers' is a tautology — it restates the tool name and title verbatim without adding any detail about what a tutor tier is or how this listing differs from sibling list tools. It names a verb and resource but provides no differentiating information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as list_tutors or list_students. The description gives no context, preconditions, or exclusions, leaving the agent to infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_userCRead-onlyIdempotentInspect
Lookup User
| Name | Required | Description | Default |
|---|---|---|---|
| No | Exact email (case-insensitive) | ||
| phone | No | Exact phone number |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| No | ||
| last_name | No | |
| created_at | No | |
| first_name | No | |
| account_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds no behavioral context beyond that. It does not mention behavior around missing parameters, multiple matches, or exact-match semantics, though it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but under-specified; it merely restates the tool name. It is not structured or informative enough to count as an effective description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description leaves important context unclear, such as whether email and phone are alternatives, whether at least one is required, and what kind of 'user' is being looked up versus students, tutors, or parents. The output schema and annotations fill some gaps, but the core purpose remains ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both email and phone have meaningful descriptions. The description adds no extra parameter semantics, but the baseline of 3 is appropriate because the schema already documents the parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is essentially a paraphrase of the tool name ('Lookup User'), providing no details beyond the name. It does not specify what kind of user is meant or how this differs from sibling tools like get_student, get_tutor, or get_lead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_student or get_parent. No criteria, exclusions, or context are provided to help an agent choose this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
org_join_linkDRead-onlyIdempotentInspect
Org Join Link
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tutor_url | No | |
| tutor_code | No | |
| student_url | No | |
| student_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is known. However, the description itself adds no behavioral context beyond the title, such as what the link represents or what organization context is relevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief, but this is under-specification rather than effective conciseness. A single noun phrase provides no structured or front-loaded guidance for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and safe annotations, the description fails to state what the tool actually does or returns. With an ambiguous name and a long sibling list, an agent cannot reliably determine this tool's purpose or when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics the description needs to clarify. The baseline of 4 applies because no parameter documentation burden exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is just the tool name repeated: 'Org Join Link'. It contains no verb, no resource semantics, and no indication of what action is performed. It cannot be distinguished from the many sibling tools without guessing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool or how it relates to alternatives such as list_org_inbox, get_student_group, or get_session. An agent would have no basis for selecting this tool over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parent_balanceCRead-onlyIdempotentInspect
Parent Balance
| Name | Required | Description | Default |
|---|---|---|---|
| parent_id | Yes | Parent UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| parent_id | Yes | |
| total_paid_cents | No | |
| outstanding_cents | No | |
| open_invoices_count | No | |
| total_invoiced_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) already cover the safety profile. The description adds no behavioral context beyond that—no mention of what 'balance' means, whether it is a single value or a computed sum, or any other runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of a single non-sentence phrase and is under-specified rather than concise. It does not front-load any functional information—it simply echoes the name and title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists and the tool has only one parameter, the absence of a functional description leaves a critical gap. The agent can only guess whether this returns a computed balance, a ledger, or something else, and no sibling differentiation is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: parent_id is described as 'Parent UUID'. The tool description adds no parameter details, but the schema fully covers the single parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly the phrase 'Parent Balance', which merely restates the tool name and title. It does not use a verb or specify a clear action or resource, so an agent cannot tell what the tool actually does beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus sibling tools like get_parent or list_payments. It does not state any context, exclusions, or alternatives, leaving the agent to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingDRead-onlyIdempotentInspect
Ping
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| org_id | Yes | |
| status | Yes | |
| org_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds zero behavioral context beyond the annotations. The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description does not disclose what the tool does, what it returns, or any operational traits. No contradiction exists, but no value is added either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One word is concise, but this is under-specification rather than efficient writing. The description 'Ping' repeats the tool name and earns no place; a phrase like 'Check API connectivity' would be equally concise and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the rich annotations and empty schema, the description is completely inadequate for a tool among many get_/list_ siblings. It does not explain that this is a liveness or health-check operation, leaving the agent to guess what the tool does and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is nothing for the description to explain. The 100% schema description coverage and absence of parameters make this dimension non-issue, warranting the 0-param baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus any sibling, nor any context for invocation. The description is just 'Ping', with no mention of health checks, readiness probes, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_tutorsCRead-onlyIdempotentInspect
Recommend Tutors
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max tutors to return (default 10, max 50) | |
| request_id | Yes | Booking request UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| request_id | Yes | |
| subject_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral information beyond what the annotations already provide. While annotations (readOnlyHint, idempotentHint, openWorldHint, destructiveHint) cover the safety profile, the description does not disclose any operation-specific behavior such as ranking logic, why some tutors are recommended, or any side effects (though none are expected).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It lacks any explanatory structure or additional context that would justify its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description is incomplete for an agent to correctly use the tool. It does not explain what 'recommend' returns or why, when this should be used relative to other tutor-related tools, or how request_id influences the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents request_id and limit with adequate explanations. The description adds no parameter-level meaning, which is acceptable given the schema already carries that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Recommend Tutors' is essentially a restatement of the tool name, adding no detail about what 'recommend' means in this context. It does not specify the input context (e.g., a booking request) or the nature of the recommendations, leaving it ambiguous compared to siblings like list_tutors or coverage_tutors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of exclusions or prerequisites. The required request_id parameter implies it is tied to a booking request, but the description does not state this usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_summaryDRead-onlyIdempotentInspect
Reports Summary
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| active_tutors | No | |
| sessions_today | No | |
| active_students | No | |
| outstanding_cents | No | |
| pending_approvals | Yes | |
| settled_this_week_cents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations. With readOnlyHint, openWorldHint, and idempotentHint already present, the description merely restates the label and offers no insight into what the operation observes or returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While extremely concise, the description is under-specified to the point of being uninformative. It contains only a label and provides no operational clue, so brevity is not serving the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description gives no indication of what reports are included, how the summary is scoped, or what information the agent can gain from calling this tool. The description is far too weak to support correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema carries no semantic burden and the description does not need to explain parameter meaning. A baseline of 4 is appropriate because there is nothing missing for an agent to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is exactly identical to the tool name and title: 'Reports Summary'. It provides no verb, no resource detail, and no information about what kind of summary is produced, making it a pure tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance whatsoever on when to use this tool, when not to use it, or how it relates to sibling tools such as coverage_summary. An agent cannot determine the appropriate context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tutor_available_slotsDRead-onlyIdempotentInspect
Tutor Available Slots
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Window end, ISO date e.g. 2026-07-07 | |
| from | Yes | Window start, ISO date e.g. 2026-07-01 | |
| duration | No | Slot length in minutes (default 60) | |
| tutor_id | Yes | Tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| slots | No | |
| to_date | Yes | |
| tutor_id | Yes | |
| from_date | Yes | |
| duration_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations, which already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. There is no contradiction, but the description itself contributes nothing about behavior, limits, or return semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but this is under-specification, not concise efficiency. The three-word phrase provides no actionable information and does not earn its place in the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, an output schema, and many related siblings, the description is bare bones and leaves the agent to guess what the tool returns, how it behaves, and how it differs from alternatives. It is not nearly complete enough for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions none of the parameters and adds no semantic meaning beyond the schema's property descriptions, so it neither harms nor improves parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Tutor Available Slots' is a direct restatement of the tool name/title and contains no verb, so it fails to explicitly state what the tool does (e.g., list, fetch, or search). It weakly hints at a resource but does not describe the action or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as list_availabilities, get_availability, or coverage_tutors. The description gives no context for selection and does not mention any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tutor_earningsCRead-onlyIdempotentInspect
Tutor Earnings
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Session starts_at <= ISO date | |
| from | No | Session starts_at >= ISO date | |
| tutor_id | Yes | Tutor UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tutor_id | Yes | |
| period_end | No | |
| earned_cents | No | |
| period_start | No | |
| unpaid_cents | No | |
| paid_out_cents | No | |
| sessions_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context beyond these annotations, such as aggregation behavior, date filtering semantics, or what the earnings represent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but it is under-specification rather than effective conciseness. It simply repeats the tool name and contains no substantive content for an agent to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with annotations and an output schema present, the core question of what this tool returns is unanswered. An agent cannot determine whether earnings are aggregated, date-bounded, or how they relate to payments/payouts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a description. The tool description contributes no additional meaning, but the schema already carries the semantic weight, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is 'Tutor Earnings' — a noun phrase that restates the tool name with no verb or explicit action. It does not distinguish this tool from siblings like list_payments or get_payout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention any conditions, prerequisites, or relationships to other earnings/payment tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
59 tool updates
v1.0.4- First observed
coverage_gaps - First observed
coverage_summary - First observed
coverage_tutors - First observed
get_availability - First observed
get_blog_post - First observed
get_classroom - First observed
get_invoice - First observed
get_lead - First observed
get_lesson_participant - First observed
get_location - First observed
get_me - First observed
get_parent - First observed
get_payment - First observed
get_payout - First observed
get_result - First observed
get_session - First observed
get_student - First observed
get_student_group - First observed
get_tutor - First observed
list_adjustments - First observed
list_availabilities - First observed
list_blog_posts - First observed
list_booking_requests - First observed
list_classrooms - First observed
list_conversation_messages - First observed
list_conversations - First observed
list_expenses - First observed
list_files - First observed
list_homework - First observed
list_invoices - First observed
list_leads - First observed
list_lesson_participants - First observed
list_lesson_plans - First observed
list_locations - First observed
list_mileage - First observed
list_org_inbox - First observed
list_parents - First observed
list_payments - First observed
list_payouts - First observed
list_questions - First observed
list_rate_bands - First observed
list_rate_cells - First observed
list_results - First observed
list_session_feedback - First observed
list_sessions - First observed
list_student_groups - First observed
list_students - First observed
list_subjects - First observed
list_tutor_reviews - First observed
list_tutor_tiers - First observed
list_tutors - First observed
lookup_user - First observed
org_join_link - First observed
parent_balance - First observed
ping - First observed
recommend_tutors - First observed
reports_summary - First observed
tutor_available_slots - First observed
tutor_earnings
TDQS
Scored across 59 tools
Most tools follow a clear resource-oriented pattern (list_<entity>, get_<entity>), so list_students and get_student are easy to distinguish. However, a few overlapping concepts like coverage_tutors/coverage_summary/coverage_gaps and tutor_available_slots/list_availabilities could cause occasional misselection.
The dominant list_ and get_ prefix pattern is consistent and readable, but several tools deviate with noun-first or action-style names such as tutor_earnings, parent_balance, org_join_link, and coverage_summary. All names use snake_case, which keeps the overall set predictable despite the mixed conventions.
With 59 tools, this server far exceeds the reasonable scope for a focused MCP toolset and crosses the 50+ extreme threshold. Many tools are simple list/get pairs for niche resources like mileage, rate_cells, and blog_posts, making the set feel like an exhaustive read model rather than a curated tool surface.
The toolset is almost entirely read-only: there are no create, update, or delete operations for students, sessions, payments, invoices, or any other domain entity. This severely limits an agent's ability to perform basic tutoring-management workflows, leaving obvious lifecycle gaps.
Maintenance
Related MCP Connectors
Read-only MCP for AI usage profiles, leaderboards, stats, and docs; no writes or private data.
Read-only MCP access to performix.app's public capability guides and book corpus.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceProvides read-only access to TrustLayer's public API, enabling users to query and retrieve data about parties, documents, projects, and other TrustLayer entities through MCP-compatible tools.MIT
- AlicenseAqualityDmaintenanceRead-only MCP server that connects AI clients to Crescender's school asset, loan, member, and asset-comms API.6MIT
- AlicenseNot gradedqualityDmaintenancePublic read-only MCP server for FoxTrove Voice, enabling LLMs to query call logs, customer records, assistant stats, and analytics via secure OAuth.MIT
- AlicenseAqualityCmaintenanceProvides read-only access to LessonLab's lesson workflow, pricing, FAQ, and official links for MCP-compatible AI clients.3MIT