Chorus
Server Details
Gathers voice, video and written messages from a group into one book for one person.
- Status
- Healthy
- Uptime
- 99.5% over 36 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 14 tools
Each tool maps to a distinct lifecycle action (create, add, invite, chase, read, close/reopen, order, status, find). The only mild overlaps are among the link-returning tools (get_links, their_own_link) and messaging tools (send_it_out vs chase_the_missing), but descriptions make the boundaries clear (invitations vs reminders; group link vs self link).
Casing is uniformly snake_case, but the structural pattern is mixed: most are verb phrases (start_book, send_it_out, chase_the_missing) while several are bare nouns (order, order_status, book_status, their_own_link). It stays readable but breaks a single predictable convention.
Fourteen tools is reasonable for a book/message-collection app that spans creation, contributor management, invitations, chasing, reading, links, payments and auth. Nothing feels clearly redundant, though the surface is on the fuller side.
The lifecycle is well covered: create book, add people, invite, chase, read, close/reopen, get links, order and check status, plus discovery via find_my_book. Minor gaps exist (no remove-person or delete-book/edit-message operations), but core workflows are complete.
Available Tools
14 toolsadd_peopleName the people the book is waiting on, with an address where there is one.AIdempotentInspect
Records who is expected to record. Somebody with an email address can be written to by send_it_out and reminded by chase_the_missing; somebody with only a name is reached in a group chat and their name is what the chase reads out. Adding a person sends nothing on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| people | Yes | The people, each as a name, or as a name and an email address. A name on its own is somebody reached in a group chat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it explicitly states that 'Adding a person sends nothing on its own,' which is important for an agent to know this is not a communication tool. It also explains the downstream effects (send_it_out and chase_the_missing can use the added people). The annotations already indicate idempotentHint=true and destructiveHint=false, and the description doesn't contradict these. It could have mentioned whether adding duplicates is handled, but the idempotent hint covers that implicitly.
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 sentences, each earning its place. The first states the core purpose, the second explains the two input formats and their downstream implications, and the third clarifies a key behavioral fact (no messages sent). It's front-loaded with the primary action and avoids redundancy with the schema.
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 2 parameters, 100% schema coverage, and no output schema, the description covers the essential context: what the tool does, how to format inputs, and what it doesn't do. It could have mentioned whether the operation is additive-only or if it can replace existing people, but the idempotentHint and the simple nature of the tool make this a minor gap. The description is complete enough for an agent to call it correctly.
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 schema already documents both parameters (book and people). The description adds meaning by explaining the format of people entries: 'a name, or as a name and an email address' and clarifies that a name alone means group chat reach. This adds value beyond the schema's terse description, but the schema already covers the basics, so a 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 tool's purpose: 'Records who is expected to record.' It specifies the resource (people associated with a book) and the action (adding them). It also distinguishes itself from siblings by explaining how added people are used by send_it_out and chase_the_missing, which helps an agent understand its role in the workflow.
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 clear context on when to use this tool: when you need to record who is expected to record. It explains the difference between people with email addresses (can be written to/reminded) and those without (reached in group chat), which guides input formatting. However, it doesn't explicitly state when NOT to use it or name alternative tools for similar operations, though the sibling list and context make the purpose fairly distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_statusWho has recorded, who is still out, and how long is left.ARead-onlyIdempotentInspect
Returns who is in with their name and relationship, how many voices, videos and written messages have landed, how many carried a photo, who the organiser is still waiting on, and the days left before collecting stops.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds detail about the returned status fields but no additional behavioral traits such as side effects, permissions, or rate limits, which is acceptable given the annotation coverage.
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, well-structured sentence that starts with the action and then efficiently lists all status elements. Every clause adds useful information, with no filler or repetition of schema details.
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 without an output schema, the description fully explains what the agent should expect: names and relationships, counts by media type, photo count, outstanding people, and days remaining. For a simple status query with one parameter, this is complete enough to invoke correctly.
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 has 100% description coverage for the single 'book' parameter, explaining it as the handle start_book gave. The tool description adds no extra parameter meaning, but because the schema already documents the parameter fully, 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 uses a clear verb ('Returns') and a specific resource (book collection status), then enumerates exactly what status information is provided: who is in, message counts, photo counts, missing people, and days left. This clearly distinguishes it from siblings like order_status and start_book.
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 context is clear: this tool reports collection progress, including outstanding contributors and time remaining. It does not explicitly name alternatives or state when not to use it, but its purpose is distinct enough among the sibling tools that an agent can infer when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_the_bookChange the closing date, the questions, or what people may send.AIdempotentInspect
Changes the settings the organiser can change on the site: the day collecting stops, the questions people are asked, whether they may send voice, video or writing, and which one the button offers first. Nobody is told about a change.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| closes_on | No | The day collecting stops, as a date. It means stop collecting rather than finished. | |
| lead_with | No | Which one the big button offers first. | |
| questions | No | The questions people are asked, up to twelve. | |
| answer_with | No | Any of voice, video and written. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds a useful behavioral detail beyond annotations: 'Nobody is told about a change.' This extra side-effect information helps the agent reason about consequences. 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 front-loaded with the main action and then lists the changed settings efficiently. The closing sentence 'Nobody is told about a change' earns its place as a meaningful behavioral note. It is slightly long but well organized.
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 plus schema covers all parameters and the tool's core behavior. However, with no output schema and no mention of return values or what the response looks like, an agent is left without guidance on what to expect after a successful call. There is also no explicit relationship to sibling tools like close_collecting or reopen_collecting.
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 all five parameters. The description re-expresses several parameters in plain language ('day collecting stops' for closes_on, 'questions people are asked' for questions), which adds readability but no materially new information beyond the schema.
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 specific verb ('Changes') and a specific resource ('the settings the organiser can change on the site'), then enumerates exactly which settings: closing date, questions, allowed media, and button choice. This makes it clearly distinct from sibling tools like close_collecting, reopen_collecting, or book_status.
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 context is clear: use this tool when the organiser needs to modify collection settings. It does not explicitly say when not to use it or mention alternatives like close_collecting, but the scope is specific enough that an agent can infer 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.
chase_the_missingRemind the people who have not recorded yet.AInspect
Works out who is still out, emails a reminder to the ones with an address, and hands back a message naming them, ready for the group chat and ready for one person. A person gets at most one reminder a day and three in all, and never one after they have asked to stop.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| also_email | No | Leave it out to send the reminder. Set it false to get the message and the taps only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing concrete side effects: it sends emails, returns a message, sends at most one reminder per day, at most three total, and respects opt-out requests. This is exactly the behavioral detail agents need for a mutating tool.
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 sentences cover the main action, output, and key limits. The phrasing 'ready for the group chat and ready for one person' is slightly awkward and repetitive, but overall the description is compact and front-loaded with the primary behavior.
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 only two simple parameters and no output schema, the description supplies the essential behavioral context: what is computed, what is emailed, what is returned, and the rate/opt-out limits. It lacks details such as what happens when no one is missing or what 'the taps' means, but it is sufficiently complete for 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%, so the schema already explains 'book' and 'also_email'. The description adds a little context around the message being 'ready for the group chat and ready for one person', but it does not meaningfully extend the parameter semantics beyond the schema.
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 title and description clearly identify the operation: compute who has not recorded and email them a reminder. It adds specific verbs ('works out', 'emails', 'hands back') and a resource (the book's missing people). However, it does not explicitly contrast itself with siblings like send_it_out, so differentiation is implicit rather than explicit.
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 implies the tool is for chasing people who have not yet recorded, and explains the two modes of use (with or without email). It does not state when to prefer this tool over alternatives or provide exclusions, so usage guidance is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_collectingStop collecting, and get the link that plays every message.AInspect
Stops new messages arriving and returns the final counts with the gift link. Nothing is deleted and nothing is finished; it can be reopened.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations by stating 'Nothing is deleted and nothing is finished; it can be reopened.' This discloses the non-destructive, reversible nature of the operation. It also clarifies the result (final counts with gift link), which is useful since there is no output 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 two concise sentences with no wasted words. The primary action and result are front-loaded, followed by the important reversibility note. Every sentence earns 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?
For a one-parameter tool with no output schema, the description adequately covers what happens, what is returned, and the reversible nature of the action. It could be slightly more explicit about when exactly to call it (e.g., after start_book), but the param description covers the required input and the overall flow is understandable.
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 parameter 'book' as 'The handle start_book gave you.' The description does not add extra parameter meaning beyond what the schema already provides, 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 states a specific action ('Stops new messages arriving') and a specific output ('returns the final counts with the gift link'). It clearly distinguishes from siblings like reopen_collecting and get_links by describing the unique stopping-and-linking behavior.
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 implies when to use this tool—when you want to stop collecting and obtain the gift link—but does not explicitly contrast it with alternatives such as book_status or get_links. The mention 'it can be reopened' hints at a relationship with reopen_collecting, but no explicit when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_my_bookGet back into a book when the handle is gone.AInspect
Call it with the email address the book belongs to and Chorus sends that address a six digit code, returning nothing about the books. Call it again with the address and the code and it hands back every book on that account with its handle. Holding the mailbox is the proof, so a book cannot be found by guessing an address.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The six digit code that was emailed. Leave it out on the first call to have one sent. | |
| Yes | The email address the book belongs to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful side effects and behavior beyond the annotations: it sends an email, returns nothing on the first call, returns all books with handles on the second call, and explains the security property that mailbox access is the proof. This fully compensates for the sparse annotation hints.
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?
Three sentences carry exactly the needed information: first call behavior, second call behavior, and the security rationale. No filler or redundant restatement of 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?
Even without an output schema, the description specifies exactly what each call returns and what the caller must provide. The two-step flow, return behavior, and security model are all covered, making it complete for an agent to invoke correctly.
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 schema already describes email and code meaning. The description adds value by explaining the temporal relationship: code is omitted on the first call, required on the second, and is a six-digit code sent to the email.
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 defines a specific two-step recovery operation: first call triggers a six-digit code email, second call returns all books with handles for that account. The title 'Get back into a book when the handle is gone' adds a distinct purpose that separates it from the sibling tools like book_status or change_the_book.
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 explicit invocation guidance: call once with email alone, then again with email plus code. It does not explicitly name alternative tools or say when not to use it, but the call sequence and context are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linksThe collecting link, the gift link, and a message to send with them.ARead-onlyIdempotentInspect
Returns the link to forward to contributors, the link that plays every message straight through, and a short message the organiser can paste alongside.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
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. The description adds no extra behavioral context such as error cases or auth requirements, which is acceptable for a simple read-only tool.
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 sentence, front-loaded with the verb, and each phrase specifies one of the three returned artifacts. No wasted words or redundant restatements of 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?
With only one parameter and no output schema, the description provides the semantic content of all three return values. It doesn't give output field names or error behavior, but this is a minor gap for such a simple 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% for the sole parameter 'book', and the description does not add parameter-specific semantics. The baseline of 3 applies because the schema already documents the parameter 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 names a specific verb ('Returns') and concrete artifacts: the forwarding link, the play-through link, and a paste-ready message. This clearly distinguishes get_links from sibling tools that start, close, or check book status.
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 explicit when-to-use or alternative guidance, but the tool's purpose is self-evident from the description: call it when you need the contributor links and accompanying message. This is implied usage rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orderHand the organiser a payment page for the option they chose.AInspect
Returns a payment link for one of the three ways to keep the book: voices, book, or keepsake, which is the printed hardcover. Stripe shows the price and takes the card and, on the keepsake, the postal address. This tool never takes a card and never names a price. Read the prices from https://choruskeepsake.com/llms.txt when the person asks what it costs.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| option | Yes | voices, book, or keepsake. Only the keepsake is printed and posted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and idempotentHint=false, the description adds meaningful behavioral context: Stripe shows the price, takes the card, and, for keepsake, collects the postal address. It also states 'This tool never takes a card and never names a price,' clarifying that the agent should not quote prices itself. 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 four sentences and every sentence earns its place: what it returns, what Stripe does, what the tool itself does not do, and where to get prices if asked. It is front-loaded with the core purpose and remains compact.
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 no output schema, this is nearly complete: it specifies the returned artifact (payment link), the Stripe flow, the price-source external URL, and the only special behaviour around keepsake. It could add what happens on repeat calls or invalid handles, but that is a minor gap for this 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%, so the baseline is 3. The schema already explains both 'book' (handle from start_book) and 'option' (voices, book, or keepsake). The description adds only the detail that keepsake is the printed hardcover, which is useful but not a major compensation 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 names a specific verb ('Returns a payment link') and a specific resource ('one of the three ways to keep the book'), and it enumerates those options: voices, book, keepsake. This clearly distinguishes it from siblings like order_status or start_book: this tool produces a live payment link, not status or setup.
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 clear context: use it to hand the organiser a payment page after the option has been chosen. It also explicitly says the tool never names a price and directs the agent to read prices from https://choruskeepsake.com/llms.txt when cost is asked, which is useful when-to-use guidance. It does not explicitly enumerate alternatives, but the price instruction effectively rules out misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_statusWhether it is paid, and where the printer is with it.CRead-onlyIdempotentInspect
Returns whether the book has been paid for and which option was bought, and on a printed one the stage the printer is at with the tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
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 context about what data is returned (payment status, option, printing stage), which is useful beyond annotations. It does not disclose any other behavioral traits like auth or rate limits, but given the annotations, a 3 is appropriate.
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 long sentence that is somewhat convoluted, especially the clause 'on a printed one the stage the printer is at with the tracking.' It could be split and reworded for clarity, but it is not excessively long. It front-loads the main purpose but the phrasing detracts from 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 must explain return values. It partially does (payment status, option, printing stage), but it is ambiguous about what 'on a printed one' means and what 'tracking' refers to. It also doesn't specify the format of the returned data. For a simple status check, this is insufficient for an agent to reliably parse the output.
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 only parameter 'book' is fully described in the schema ('The handle start_book gave you'), and the description does not add any additional meaning. Since schema coverage is 100%, the baseline of 3 is justified.
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 tool returns payment status, purchased option, and printing stage for a book. It uses a specific verb ('returns') and resource ('book'), distinguishing it from sibling tools like 'order' (placing orders) and 'book_status' (likely different status). However, the phrase 'on a printed one' is ambiguous, slightly weakening clarity.
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 such as 'book_status' or 'order'. It does not mention prerequisites (e.g., needing a handle from start_book) or exclude scenarios. An agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_the_messagesWhat people said, written out.ARead-onlyIdempotentInspect
Returns every message with who left it and what they said. A written message reads back whatever was paid; a voice or a video is written out on the tier that includes the words, and where it is not, the tool says so rather than half-answering.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotent, so the safety profile is covered. The description adds real behavioral context by explaining how voice or video messages are handled (only written out when the tier includes them) and explicitly states the tool refuses to half-answer rather than giving partial results. This goes beyond the annotations and helps an agent predict edge-case 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 is only two sentences and leads with the main action. The second sentence, while a bit dense, conveys important edge cases about voice/video handling without unnecessary words. It earned its place and stays compact, though the semicolon-comma flow could be smoother.
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 there is no output schema, the description states the shape of the return value: every message with who left it and what they said. The necessary parameter is documented in the schema, and the description handles the voice/video tier case. I am missing, maybe, ordering or pagination details, but the tool is simple enough that this is not fatal.
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 description for 'book' ('The handle start_book gave you') already defines what the parameter is, and coverage is 100%, so the baseline is 3. The tool description does not add any additional semantics about the parameter 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 opens with 'Returns every message with who left it and what they said,' which states the exact verb (returns), resource (messages), and what data is included (who left it, content). It distinguishes clearly from sibling tools like book_status or find_book, so an agent immediately understands this is the message-reader tool.
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 implies that the tool is used when you want to retrieve messages, but it gives no explicit context for when to use it versus alternatives, nor any exclusions or prerequisites. There is no mention of 'use this instead of X if you need Y.' The usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_collectingLet messages in again, with a new closing date if there is one.BInspect
Reopens a book that was closed or whose date ran out, and returns the collecting link to send round again.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| closes_on | No | A new day to stop collecting, as 2026-11-14. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint: false, destructiveHint: false, idempotentHint: false. The description adds an important behavior: returns the collecting link to send round again. With annotations lacking explicit mutation/destructive flags, the description partially compensates by revealing the state-changing action ('reopens'). It does not cover potential side effects (e.g., resets collection, possible data loss) beyond reopening, and annotations contradict 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?
One clear sentence, no waste. The action (reopens) and outcome (returns the collecting link) are front-loaded. It earns high marks for being concise while conveying essential purpose, though a touch more detail on parameters could be added.
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 write operation with no output schema, the description covers the function but not the return format details (e.g., whether the link is in a specific field), nor any side effects on existing messages. The absence of enums and output schema increases the burden, but the operation is simple enough that the description is 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 coverage is 100%: 'book' described as 'the handle start_book gave you', 'closes_on' as 'a new day to stop collecting' with a format example. The description adds no extra parameter info beyond the schema. It's a baseline 3 because the schema handles it all.
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: 'Reopens a book that was closed or whose date ran out, and returns the collecting link to send round again' uses specific verbs (reopens, returns) with the resource (book), clearly distinguishing from siblings. The title adds context ('Let messages in again, with a new closing date if there is one'), providing a clear purpose. It doesn't explicitly name a sibling, but the action verb 'reopens' is distinct enough.
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 implies usage: when a book is closed or its date has run out, it should be reopened and the link re-shared. It clearly states the trigger condition ('was closed or whose date ran out'). However, it does not explicitly mention when NOT to use it or alternatives, relying on implication rather than explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_it_outSend the link to everyone, and get the tap that puts it in a group chat.AIdempotentInspect
Emails the invitation once to every person added with an address, and hands back a tap that opens WhatsApp, a text or a mail draft with the message and the link already written, for the family group and for anyone with no address. Nobody is written to twice by this tool, and a caller sends a limited number of emails a day.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. | |
| also_email | No | Leave it out to send the invitation. Set it false to get the taps only and send nothing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-destructive, idempotent, open-world), and the description adds real context beyond them: one email per person, no duplicate sends, and a daily cap on emails. It does not explain what happens if the daily limit is hit or what permissions are needed, which keeps it out of 5 territory.
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 key behavior is front-loaded, but the text is a single run-on sentence in a chatty register, and the 'family group' aside is incidental. Every clause carries some information, yet the delivery is looser than it needs to be.
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 no output schema, the description correctly explains the return value (a tap that pre-fills WhatsApp/SMS/mail), and it discloses the dedup and rate-limit guarantees. What is missing is failure handling when the daily email cap is reached, which an agent invoking a sending tool would want to know.
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%, so both parameters are already documented, and the description mostly restates their effect ('get the taps only and send nothing'). It adds only the framing that the tap is for people with no address, 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 names a concrete verb-chain (emails the invitation, hands back a shareable 'tap') and the resource (the invitation/link tied to a book). An agent can tell this is the dispatch step rather than a collection or lookup step, though it never names a sibling like add_people or get_links to sharpen the boundary.
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 through the schema — the required 'book' handle 'start_book gave you' and the 'also_email' switch — and the no-address case is described. There is no explicit when-not or alternative routing, so the agent must infer that this is the terminal step after people have been added.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_bookStart a Chorus book, and get the one link to forward.AInspect
Starts a book of voice, video and written messages and returns the single link the organiser sends to everyone taking part. The book is for one person or a couple, or it is called by a title when it is for nobody in particular: a family’s recipes, a class’s year, a team’s goodbye. Start the simplest book that fits what the person said and hand over the link straight away. Gathering is free and the people recording need no app and no account. Use this as soon as somebody wants to collect messages from a group, whether or not there is an occasion. The first call emails the organiser a six digit code and makes nothing. Call it again with the same details and the code, and the book is made in their account.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The six digit code emailed to the organiser. Leave it out on the first call to have one sent. | |
| title | No | What the book is called, in the person’s words, for example The Kelly family recipes. One line, up to 40 characters. | |
| occasion | No | A big birthday, A wedding, A new baby, As they grow, In memory, or Something else. Plain words are matched to one of those. | |
| closes_on | No | The day collecting stops, as 2026-11-14. Allow three weeks before the day if a printed copy is wanted. | |
| expecting | No | Who is expected to record, by name or role, so book_status can say who is still out. Never email addresses. | |
| lead_with | No | Which of those is the big button on a contributor’s phone. | |
| questions | No | The questions everybody is asked, up to 12, written from what the person told you, each one line of up to 200 characters that a person can answer out loud in a minute or two. In a book with subject_name, {name} in a question becomes that name. When this is left out, a book with subject_name gets the set for the occasion and a book with only a title gets three open questions. | |
| answer_with | No | Any of voice, video and written. Voice and written when not said. | |
| subject_name | No | Who the book is for, when it is for one person or a couple, as the organiser says it, for example Mum. Give subject_name, title or both. A book for one person needs only subject_name. | |
| organiser_email | Yes | The organiser’s email. The book belongs to this address and they get in with a six digit code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnly=false and idempotent=false, the description carries real extra load: it discloses the two-step flow (first call emails a six-digit code and creates nothing, second call with the same details plus code creates the book) and that gathering is free with no app or account needed by contributors. This is behavioral context an agent cannot get from 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 opening sentence front-loads purpose well, but the middle section drifts into examples of occasion types and 'the Kelly family' imagery that add length without invocation-relevant detail. Several sentences could be trimmed without losing guidance.
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 10-parameter creation tool with no output schema, the description covers what is produced (a link) and the two-call code flow, which is the critical thing an agent needs. It does not address error or failure behavior, but nothing essential for correct invocation is missing.
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 every parameter already has a rich description, so the schema does the heavy lifting. The prose confirms the title/subject_name relationship and the code flow but adds little syntax or format detail beyond what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — starting a book of voice, video and written messages — and explicitly says it returns the single link the organiser forwards. An agent can tell this apart from change_the_book or book_status without opening the schema.
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?
Gives strong when-to-use guidance: 'Use this as soon as somebody wants to collect messages from a group, whether or not there is an occasion' and 'Start the simplest book that fits what the person said.' It does not name a sibling alternative or exclusion, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
their_own_linkThe separate link for the person the book is about.ARead-onlyIdempotentInspect
Returns the second link, which asks the person the book is for about their own life rather than about somebody else. It refuses on a memorial, a new baby and an as they grow book, where the person cannot answer, and it is never the link to put in a group chat.
| Name | Required | Description | Default |
|---|---|---|---|
| book | Yes | The handle start_book gave you. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond that: it refuses on memorial, new baby, and 'as they grow' books, and it should never be placed in a group chat. This enriches the agent's understanding without contradicting 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 two sentences with no filler. It front-loads the core return value, then adds necessary refusal and usage conditions, and every clause contributes 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?
For a single-parameter read-only tool, the description covers the key return value and important edge cases. It is slightly reliant on prior context for what 'the second link' means, and it does not point to the alternative link for cases where the subject cannot answer, but overall it is sufficiently 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 coverage is 100% and the one parameter, 'book', is documented as the handle start_book gave. The description adds no parameter-specific semantics, 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 clearly states the verb and resource: it returns the second link and says what that link does. It distinguishes conceptually from 'somebody else' links, but it does not explicitly name a sibling tool, so it falls short of full sibling differentiation.
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 explicit conditions when the tool refuses and states it is never for a group chat. This provides useful usage guardrails, but it does not name an alternative tool to use in those refused scenarios, so guidance is strong but incomplete.
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.
2 tool updates
- Changed
find_my_book1 field changed- changed
Input schema / properties / code / descriptionPrevious value: -"The eight digit code that was emailed. Leave it out on the first call to have one sent."New value: +"The six digit code that was emailed. Leave it out on the first call to have one sent."
- Changed
start_book6 fields changed- changed
Input schema / properties / code / descriptionPrevious value: -"The eight digit code emailed to the organiser. Leave it out on the first call to have one sent."New value: +"The six digit code emailed to the organiser. Leave it out on the first call to have one sent." - changed
Input schema / properties / organiser_email / descriptionPrevious value: -"The organiser’s email. The book belongs to this address and they get in with an eight digit code."New value: +"The organiser’s email. The book belongs to this address and they get in with a six digit code." - changed
Input schema / properties / questions / descriptionPrevious value: -"Questions to ask, if the organiser wants their own. The set for the occasion is used when this is left out."New value: +"The questions everybody is asked, up to 12, written from what the person told you, each one line of up to 200 characters that a person can answer out loud in a minute or two. In a book with subject_name, {name} in a question becomes that name. When this is left out, a book with subject_name gets the set for the occasion and a book with only a title gets three open questions." - changed
Input schema / properties / subject_name / descriptionPrevious value: -"Who the book is for, as the organiser says it, for example Mum."New value: +"Who the book is for, when it is for one person or a couple, as the organiser says it, for example Mum. Give subject_name, title or both. A book for one person needs only subject_name." - added
Input schema / properties / titleAdded value: +{ + "description": "What the book is called, in the person’s words, for example The Kelly family recipes. One line, up to 40 characters.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "subject_name", - "organiser_email" -]New value: +[ + "organiser_email" +]
2 tool updates
- Changed
find_my_book1 field changed- changed
Input schema / properties / code / descriptionPrevious value: -"The six digit code that was emailed. Leave it out on the first call to have one sent."New value: +"The eight digit code that was emailed. Leave it out on the first call to have one sent."
- Changed
start_book2 fields changed- changed
Input schema / properties / code / descriptionPrevious value: -"The six digit code emailed to the organiser. Leave it out on the first call to have one sent."New value: +"The eight digit code emailed to the organiser. Leave it out on the first call to have one sent." - changed
Input schema / properties / organiser_email / descriptionPrevious value: -"The organiser’s email. The book belongs to this address and they get in with a six digit code."New value: +"The organiser’s email. The book belongs to this address and they get in with an eight digit code."
1 tool update
- Changed
start_book1 field changed- added
Input schema / properties / codeAdded value: +{ + "description": "The six digit code emailed to the organiser. Leave it out on the first call to have one sent.", + "type": "string" +}
7 tool updates
- Added
add_people - Added
change_the_book - Added
chase_the_missing - Added
find_my_book - Added
read_the_messages - Added
send_it_out - Added
their_own_link
7 tool updates
- First observed
book_status - First observed
close_collecting - First observed
get_links - First observed
order - First observed
order_status - First observed
reopen_collecting - First observed
start_book
Related MCP Connectors
Create personalized stories, gifts, memoirs, tributes, classroom books, and printed keepsakes.
- shareOAuthcom.htmlradar
Send a web page to specific people, control who opens it, see how it was read, and update it.
- FotifyOAuthapp.fotify
Create events, collect guest photos and manage RSVP invitations for weddings and parties.
- reefOAuthme.reefwith
Shared, living memory for you and your people — coves your AI assistant can read and write.
Related MCP Servers
- AlicenseAqualityAmaintenanceBuilds interactive, filterable timelines from your own materials through an interview process, generating self-contained offline files with optional web publishing and cross-device sync.19Apache 2.0
- AlicenseNot gradedqualityDmaintenancePreserve grandma's handwritten recipe cards before they're lost. 13 MCP tools to OCR-import cards from photos, capture the story behind each dish (who made it, when, why), search by family member, plan meals, and share with cousins — backed by a real cookbook app that prints as a hardcover heirloom. Free tier, no credit card.MIT
- AlicenseNot gradedqualityBmaintenanceEnables older adults to log medication doses by voice, receive double-dose and safety alerts, record mood check-ins, request help, and exchange family messages, while giving caregivers multilingual AI digests, adherence reports, refill forecasts, and proactive notifications.MIT
- AlicenseNot gradedqualityBmaintenanceEnables a user's AI to exchange messages with people they already know and those people's AIs in DMs and group chats, handle routine communication, and flag only items needing attention. It supports OAuth sign-in and private invite-based connections without a directory or search.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.