Skool by Cotlet
Server Details
Posts, members, courses, events and DMs for your Skool community.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cotletdev/skool-api-mcp-server
- GitHub Stars
- 1
- Server Listing
- Skool MCP Server
TDQS
Scored across 89 tools
Most tools target a distinct resource and action, and the descriptions are unusually precise about admin gating and approval behavior. However, the surface mixes two products (Skool community management and Cotlet browser/account infrastructure), and several tools overlap: search_group vs search_members, discover_groups vs list_groups, get_group vs get_group_stats, and cotlet_browser_open vs connect vs navigate. With 89 tools, these boundary cases make misselection likely even with good descriptions.
Nearly all tools use snake_case with a verb_noun pattern, and the cotlet_browser_* family is especially consistent. Minor deviations are noun-only tools such as cotlet_apps, cotlet_balance, and cotlet_whoami, plus cotlet_get_call breaking the verb-first pattern. Overall predictable, but not perfectly uniform.
The server exposes 89 tools, which is very heavy for an agent-facing MCP surface even given Skool's broad feature set. Many admin-only CRUD operations, approval-gated variants, and separate Cotlet browser/account tools could be consolidated. Each tool maps to a real action, but the count will increase selection errors and context load.
Coverage is extensive across Skool: posts, comments, members, roles, bans, categories, courses, lessons, events, links, rules, questions, levels, notifications, chat, polls, reports, stats, leaderboard, and search. Remaining gaps include group creation/settings beyond the About page, poll creation, and course/lesson deletion. These are minor compared with the overall breadth, but not a fully closed lifecycle.
Available Tools
89 toolsadd_group_linkAdd group linkADestructiveInspect
Add a link to the group's sidebar. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Where the link goes. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| label | Yes | Link text, up to 34 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false and readOnlyHint=false, so safety and idempotency are covered structurally. The description's added value is the admin-only authorization requirement, but it says nothing about what a repeat call does (relevant given idempotentHint=false) or about any cap on sidebar links.
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 short sentences, zero filler, with the primary action front-loaded and the authorization constraint immediately after. Nothing to trim.
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 3-parameter mutation with no output schema and rich annotations, the core is present, but an agent still lacks whether the tool returns the created link, how duplicates behave, or whether there is a maximum number of sidebar links. Adequate but with 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 group, label and url are already documented, including the 34-character label limit and the group URL-name format. The description adds no parameter meaning beyond the schema, so the baseline 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?
States a specific verb and resource plus the destination ('Add a link to the group's sidebar'), which cleanly separates it from update_group_link, delete_group_link and list_group_links. It stops short of naming those siblings explicitly, so it is clear but not differentiation-complete.
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?
'Admins only' gives one concrete calling prerequisite, but there is no guidance on when to add versus update an existing link, nor on limits or duplicate handling. Usage is implied by the create verb rather than described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_group_ruleAdd group ruleADestructiveInspect
Add a rule at the end of the group rules. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | Yes | Rule title, up to 30 characters. | |
| description | No | What the rule means, shown under the title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare mutability, non-idempotency, open-world behavior, and destructive effects. The description adds meaningful operational context: the rule is appended at the end, and the tool is restricted to admins. It does not explain duplicate handling or what exactly is affected, but with annotations covering safety traits this is a solid addition.
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 short sentences with zero wasted words. The placement behavior and admin restriction are front-loaded and immediately actionable.
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 three-parameter creation tool with full schema coverage and rich annotations, the description is mostly complete. It covers authorization and placement, though it could mention duplicate-rule behavior or ordering nuances; those gaps are minor given the structured data available.
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 three parameters (group, title, description) are documented directly in the input schema. The description adds no parameter-specific syntax or constraints beyond what the schema already provides, 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?
States a specific verb and resource ('Add a rule'), clarifies ordering ('at the end of the group rules'), and distinguishes the operation from update/delete/list siblings by using 'Add'. An agent can identify this as the creation tool 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?
The description gives a useful prerequisite ('Admins only'), which tells the agent about authorization constraints. However, it does not explain when to use this vs. update_group_rule or list_group_rules, nor does it specify any exclusions or preconditions beyond admin access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_membership_questionAdd membership questionADestructiveInspect
Add a question people answer when they ask to join the group. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | text (default), email or options (multiple choice, one answer). | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| options | No | Up to 4 answers when type is options. | |
| question | Yes | The question, up to 150 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds useful admin-only authorization context, but it does not explain the destructive hint, duplicate/add behavior, or idempotency implications beyond what annotations already state.
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 short sentences with no wasted wording. The core action is front-loaded, and the admin restriction follows immediately.
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 schema's full parameter descriptions and the presence of annotations covering write, destructive, non-idempotent, and open-world behavior, the description is mostly complete for correct invocation. The main remaining gap is that it does not route the agent between add, update, and delete membership question siblings.
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 all four parameters, including the type enum, options limit, group URL format, and question length. The description adds no parameter-specific meaning beyond the schema, 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 states a specific verb and resource: add a membership question. It also explains the resource in context: a question people answer when requesting to join the group. It does not explicitly distinguish this from sibling tools like update_membership_question or delete_membership_question, so it is clear but lacks 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 provides a clear prerequisite, 'Admins only,' and implies usage during the group join process. However, it does not say when to use this versus updating or deleting a membership question, nor does it describe exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_membership_requestApprove membership requestCDestructiveInspect
Let an applicant into the group. Your AutoDM, if set, goes out as usual. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| request_id | Yes | request_id from list_membership_requests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotentness, so the safety bar is lower. The description does add real behavioral context beyond the annotations — the AutoDM side effect firing on approval — but omits what the call returns, whether re-approving an already-approved request errors, and what happens if the AutoDM is unset.
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 short sentences, front-loaded with the effect, no restated title boilerplate. "Goes out as usual" is slightly vague filler but does not bloat 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 mutation with side effects and no output schema, the description covers the AutoDM consequence but leaves the return value, failure modes, and the actual semantics of the "owner's approval" wait unexplained. Adequate but with a clear gap at the exact point an agent would need certainty.
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%, including where request_id comes from, so the schema carries parameter meaning. The description adds nothing about the group vs. request_id pairing or format constraints, which is acceptable given full coverage but is not value-add.
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?
"Let an applicant into the group" conveys the action and resource, and the tool name/siblings make the contrast with decline_membership_request inferable. However, "Waits for the owner's approval" undercuts the verb — it is unclear whether this call actually admits the member or merely registers an approval that then pends, leaving the agent unsure of the effect.
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 statement of when to use this versus decline_membership_request, no mention of first calling list_membership_requests, and no prerequisites or preconditions. Usage is only implied by the noun 'applicant'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ban_memberBan memberADestructiveInspect
Ban a member from the group, optionally deleting their recent posts. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| member_id | No | member_id from list_members; needed with delete_recent_posts. | |
| membership_id | Yes | membership_id from list_members. | |
| delete_recent_posts | No | Also delete their recent posts and comments, as Skool offers. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and non-idempotent, and the description adds genuinely new behavioral facts: an admin permission requirement, that recent post/comment deletion is an optional cascade, and that the call defers to owner approval rather than completing immediately. That last point is the key operational surprise an agent needs, though it is not spelled out whether the call blocks or returns a pending status.
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 short sentences, front-loaded with the action and side effect, with permissions and approval as follow-ups. Efficient overall; the approval sentence is slightly telegraphic given how much behavior it implies.
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 destructive mutation with no output schema, the definition covers permission requirements, destruction scope, and the approval deferral, which are the main things an agent must anticipate. Gaps remain around the dependency between delete_recent_posts and member_id and around what a pending-approval response actually means.
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 every parameter, including the member_id/membership_id split and the default for delete_recent_posts. The description only restates the post-deletion option at a high level and adds no format or interaction detail (e.g. that member_id becomes necessary when delete_recent_posts is set).
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 ('Ban a member from the group') with the optional side effect ('deleting their recent posts') made explicit. It is clear what the tool does, but it never distinguishes itself from the sibling `remove_member`, which an agent would also see in the list and could easily confuse with this one.
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?
'Admins only' gives one usage precondition, but there is no statement about when to choose ban over removal, no exclusions, and no indication of what happens when approval is refused. The boundary with `remove_member` is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_on_postComment on postADestructiveInspect
Comment on a post, or reply to a comment, as you. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| post_id | Yes | post_id from list_posts (not the slug). | |
| parent_comment_id | No | comment_id from get_post: reply under that comment instead of the post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (destructiveHint=true, openWorldHint=true, non-idempotent), and the description adds two things they don't: the comment is submitted as the authenticated user, and it 'waits for the owner's approval' – a critical fact meaning the comment may not appear immediately. It stops short of saying whether approval always applies or what happens to the pending comment.
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 short sentences with zero filler, and the core action is front-loaded before the approval caveat. Nothing redundant.
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 non-idempotent write tool with no output schema, the description should say what comes back (a pending comment id?) or how approval affects repeated calls. The approval disclosure is valuable but leaves these gaps, making it adequate rather than 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 all four parameters are already documented with sourcing hints (post_id from list_posts, parent_comment_id from get_post). The description adds only the 'as you' acting identity and the reply-vs-top-level distinction, which the schema already conveys via parent_comment_id.
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 ('Comment on a post') plus the second mode ('reply to a comment'), which distinguishes it from siblings like create_post, like_post, and follow_post. The 'as you' clause even identifies the acting identity, so an agent knows exactly what this 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?
No guidance on when to use this versus alternatives, and no exclusions or preconditions beyond the approval note. The workflow hints ('post_id from list_posts', 'comment_id from get_post') live only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_appsCotlet: apps I can useARead-onlyInspect
The apps of the user's workspace and whether each works now: access granted or requested, the app account in the user's Cloud Browser (connected, signed out, not enabled for agents), and the one step the user has to take, with the console link. Free. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | Only this app, e.g. skool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds real context beyond them: it is free, it requires the user's Cotlet API key or sign-in, and it enumerates the status fields returned. Auth and cost disclosure are exactly the kind of extra behavioral facts that earn credit here; transport/pagination is the only minor gap.
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 return content is front-loaded in the first sentence, with cost and auth as short trailing clauses. It is dense but not padded; every clause (statuses, cost, auth) conveys distinct 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 read-only tool with annotations and no output schema, the description adequately describes what comes back (per-app access and browser-account state plus the required user step and console link) and states auth needs. The missing piece is any pointer to the related request/browser tools, but nothing essential to calling it correctly is absent.
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?
With 100% schema description coverage and a single optional 'app' filter, the schema carries parameter meaning. The description never references the filter, so it adds nothing over the structured field; 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 clearly states the resource (the apps in the user's workspace) and what is reported per app: access status, Cloud Browser account state, and next step. It does not name or distinguish itself from the closest sibling, cotlet_request_apps, so an agent must infer which one to call when it wants to request access.
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?
'Free. Needs the user's Cotlet API key or sign-in.' gives a prerequisite but not a when-to-use rule. There is no explicit routing to cotlet_request_apps (for requesting an app) or to the cotlet_browser_* tools (for acting once an app is connected), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_balanceCotlet: credit balanceARead-onlyInspect
The user's current credit balance. Free. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description still adds non-obvious context beyond them: that the call costs nothing ('Free') and that authentication is required, which are genuine behavioral facts an agent needs.
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 short sentences with the main purpose front-loaded and no padding. The 'Free.' fragment is terse but conveys a meaningful fact efficiently.
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 zero-parameter, read-only lookup with no output schema, the description covers what it returns, what it costs, and what auth it needs. Only minor gaps remain (e.g., currency/format of the balance), which is acceptable at 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?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify and it does not attempt to misdescribe inputs.
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 the specific resource returned: the user's current credit balance. The verb ('get'/'retrieve') is implied rather than stated, and it doesn't differentiate from cotlet_whoami or other cotlet_* account tools by name, but the resource is unambiguous.
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?
'Free' signals there is no cost/credit consumption to calling it, and the auth prerequisite ('needs the user's Cotlet API key or sign-in') tells the agent what is required before calling. There is no explicit when-to-use vs. alternative guidance, leaving usage implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_clickClick on the pageADestructiveInspect
Clicks a link, button or other element of the current page in the user's browser on Cotlet, by its number in the page's element list, and returns the URL and title after the click. It acts as the user on that site. Buttons that pay or buy and buttons on account or sign-in pages are refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | The element's number in the element list of the current page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/openWorld/non-idempotent annotations, it discloses that the tool acts as the user on the site, that certain action classes (payment, account/sign-in) are blocked, what is returned after the click, and the billing model with a 3-minute idle expiry. These are exactly the operational constraints an agent cannot infer from structured fields.
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?
Four sentences, all load-bearing: action, side-effect return, refusal policy, and cost/lifetime. The final sentence packs two distinct facts (credit cost and 3-minute idle expiry) into one long clause, which slightly hurts scanability.
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 covers the return value (URL and title), the side-effect profile, refusal conditions, and the session/cost lifecycle. An agent has everything needed to decide and 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 single parameter is fully documented in the schema (100% coverage), and the description's 'by its number in the page's element list' merely restates the schema text. No extra guidance on how to obtain valid element numbers, 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?
States a specific verb (clicks) and resource (a link, button or other element of the current page in the user's browser) plus the addressing mechanism (its number in the element list) and the return (URL and title). This clearly separates it from siblings like cotlet_browser_press, cotlet_browser_type, cotlet_browser_select and cotlet_browser_navigate without needing to name them.
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 explicit exclusion rules: pay/buy buttons and buttons on account or sign-in pages are refused, which tells the agent when this call will fail. It also frames the cost/session lifecycle (credits per started minute, session ends 3 minutes after the last call), but it never explicitly routes the agent among alternatives such as press vs select vs type for a given widget.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_closeClose the browserAIdempotentInspect
Ends the session in the user's browser on Cotlet (with app, that app's browser): the browser keeps its cookies, goes to sleep and the per-minute charge stops. Returns the session's minutes and credits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial detail beyond annotations: cookies are retained, the browser sleeps, billing stops, and the tool returns session minutes and credits. This is consistent with destructiveHint=false because no cookies or session history are described as destroyed.
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 front-loaded sentence that states the action, side effects, and return value without filler. Every clause contributes useful invocation context.
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 zero-parameter close tool with no output schema, the description is largely complete: it explains side effects and return values and aligns with the annotations. The only gap is the undefined `app` reference, which slightly undermines clarity.
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 has zero parameters and full coverage, which normally supports a baseline of 4. However, the description references `app` even though no such parameter exists in the input schema, creating a small ambiguity about how app scope is selected.
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: ending the browser session on Cotlet, with app-specific scope noted. This distinguishes it from siblings like cotlet_browser_open, cotlet_browser_connect, and cotlet_browser_sessions without needing their 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?
The description implies when to use it by explaining that the per-minute charge stops, but it does not explicitly contrast this with cotlet_browser_sessions or explain when not to close a session. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_connectCotlet: drive the user's Cloud BrowserAInspect
Wakes the user's Cloud Browser of one app (a real Chrome on Cotlet, signed in to that app as the user) and returns cdp_url, a Chrome DevTools Protocol WebSocket that gives a CDP client full control of the browser. It works in one open tab, the app's: the user watches it live, and new tabs are refused. Every started minute of an open connection costs credits. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses that only one tab exists, that new tabs are refused, that the user watches live, that credits accrue per started minute of an open connection, and that a Cotlet API key or sign-in is required. These are exactly the operational facts an agent needs before opening a metered, user-visible session, and nothing contradicts the declared 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?
Four tight sentences, front-loaded with the action and return value, then constraints, then cost and auth. Minor awkwardness in "It works in one open tab, the app's:" but no sentence is wasted.
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?
Covers return value, auth, cost, and tab restrictions, which is strong for a tool with no output schema. The gap is the missing link between "one app" and the zero-parameter schema: an agent is never told how the target app is chosen, nor that cotlet_browser_close should be called to stop the metered session.
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 takes zero parameters, so the 4 baseline applies. The description adds the useful note that the browser is tied to "one app" and signed in as the user, which is context the empty schema cannot convey, though it never explains how that app is determined.
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?
A specific verb and resource ("Wakes the user's Cloud Browser") plus a concrete return value (cdp_url) makes the operation unambiguous. It distinguishes itself from interaction siblings like cotlet_browser_click/navigate by saying it hands over a CDP WebSocket, but it never names the closest alternative (cotlet_browser_open) so the boundary is inferred rather than stated.
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 a CDP client full control" implies the use case (you need raw CDP rather than the click/type/navigate helpers), and the auth/cost constraints hint at prerequisites. However, there is no explicit when-to-use versus cotlet_browser_open or cotlet_browser_sessions, and no when-not-to-use guidance despite a crowded browser sibling family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_openOpen the browserARead-onlyInspect
Wakes the user's own browser on Cotlet, a real Chrome hosted for them: their web browser with the sites they signed in to there, or with app that app's browser, signed in to the app. Opens url when given and returns the page's URL and title. The user watches every step live. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public http or https address, e.g. https://example.com. In an app's browser, a page of that app. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare read-only, open-world, non-idempotent and non-destructive. Beyond them, the description discloses that the user watches every step live, that every started minute costs credits, and that the session ends on close or three minutes after the last call. That billing and expiry model is exactly the context an agent needs before invoking the 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?
Four dense sentences with no filler, and the core identification of what is being opened comes first. The lifecycle/cost details are clustered at the end, which reads a bit run-on but is still well-ordered.
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 appropriately states that the page URL and title are returned, and it covers cost and session expiry. The remaining gaps are the error behavior and routing to related session 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 coverage is 100%, so the single url parameter is fully documented in the schema, and the baseline is 3. The description does explain the two browsing contexts (the user's signed-in browser versus an app's browser), but it refers to an `app` parameter that does not exist in the schema, which can confuse an agent about what it can pass.
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 and resource: it wakes the user's own hosted Chrome on Cotlet and opens a URL. That is clear and concrete. However, it never contrasts itself with siblings like cotlet_browser_connect or cotlet_browser_navigate, which an agent must distinguish when starting a browsing session.
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 agent can infer that this is the entry point for starting a browsing session, and the closing sentence hints at session lifecycle. But there is no explicit 'use this when' versus connect/navigate, nor any guidance on whether to open the browser before calling click/type/read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_pressPress a keyADestructiveInspect
Presses one key on the current page in the user's browser on Cotlet, on the element that has focus: Tab to the next field, Enter to send, Escape to close a dialog or pop-up, arrows to move through a suggestion list. Returns the URL and title after it. Enter on account pages is refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructive, openWorld, non-idempotent) by disclosing a safety guardrail (Enter refused on account pages), the return payload (URL and title after the press), and the billing/session model (every started minute costs credits, session ends on close or 3 minutes after the last call). Those are exactly the non-obvious traits an agent needs before deciding to act.
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 front-loaded sentences: action and scope first, key semantics second, then constraints and side effects. No filler, and the credit/session warning is placed after the operational content where it belongs.
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 one enum-constrained parameter and no output schema, the description still names the return value, the refusal case, and the session lifetime. Nothing material 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 coverage is 100% with a fully enumerated key list, so the baseline is 3; the description adds real meaning by mapping keys to intents (Tab to next field, Enter to send, arrows for suggestion lists), which the bare enum does not convey.
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 ('Presses one key on the current page in the user's browser on Cotlet') and scopes it to the focused element. The concrete key examples (Tab, Enter, Escape, arrows) separate it cleanly from cotlet_browser_type and cotlet_browser_select without needing their 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?
Gives concrete when-to-use guidance per key ('Tab to the next field, Enter to send, Escape to close a dialog or pop-up') plus an explicit refusal rule ('Enter on account pages is refused'). It never explicitly says when to prefer cotlet_browser_type or cotlet_browser_select instead, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_readRead the pageARead-onlyIdempotentInspect
Returns the current page of the user's browser on Cotlet: its readable text, up to 20,000 characters, and a numbered list of its links, buttons and fields. Field values, cookies and storage are never returned. On a page longer than that, both start near where it is scrolled to. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral context beyond annotations: limits (20,000 chars), exclusions (field values, cookies, storage), scroll-relative start on long pages, and cost model (credits per started minute, session ends after 3 minutes idle or on close). No contradiction with readOnly/idempotent 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?
Four sentences, front-loaded with what the tool returns, then limits, scroll behavior, and cost. Every sentence earns its place and no waste.
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, but the description fully explains return values (text, numbered list) and key operational details (size limits, exclusions, cost, session lifetime). Complete for a read 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?
Zero parameters, so baseline is 4. The description need not explain parameter semantics; it correctly focuses on return behavior and constraints instead.
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 ('Returns') and resource ('current page of the user's browser on Cotlet'), and enumerates what is returned (readable text, numbered list of links/buttons/fields). This clearly distinguishes it from sibling browser tools like screenshot or click.
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?
Implies usage (read the page's text and interactive elements), but provides no explicit when-to-use guidance or alternatives among the many browser tools (e.g., screenshot, navigate). An agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_screenshotSee the pageARead-onlyIdempotentInspect
Returns a JPEG image of the visible part of the current page in the user's browser on Cotlet, with its URL and title: boards, canvases and layouts that the page text does not show. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all of which it is consistent with), the description discloses two things an agent could not otherwise know: cost ('Every started minute of the session costs credits') and session lifecycle ('ends when closed or 3 minutes after the last call in that browser'). For a metered, session-bound tool this is exactly the right kind of added context.
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 dense sentences; the core output is front-loaded before the cost/lifecycle caveats. The colon-introduced list ('boards, canvases and layouts') is slightly awkward but each clause carries real information rather than restating 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 no output schema and no parameters, the burden falls on the description, and it covers output form, cost, and timeout. It does not state prerequisites (an active browser session) or what happens when no browser is connected, which is the main remaining gap for a session-scoped 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?
There are zero parameters, so no parameter semantics are required — the baseline for a parameterless tool applies. The description correctly adds nothing spurious about inputs.
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 and resource ('Returns a JPEG image of the visible part of the current page') and even flags the return payload as URL + title. The clause 'boards, canvases and layouts that the page text does not show' indirectly distinguishes it from cotlet_browser_read, but it never names that sibling, so the differentiation is inferred rather than stated.
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 phrase 'that the page text does not show' gives a usable heuristic for choosing screenshots over the text-reading sibling. What is missing is an explicit instruction such as 'use cotlet_browser_read for text' or a note that a browser session must already be connected via cotlet_browser_open/connect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_scrollScroll the pageARead-onlyIdempotentInspect
Scrolls the current page in the user's browser on Cotlet with the mouse wheel, as a person does: down or up by screens viewport heights (default 0.8), to the top or the bottom, or until element element is in view. Content that loads on scroll appears, and the next read lists it. Returns the URL, title and scroll position (at_top, at_bottom). Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| element | No | Scroll until this element of the element list is in view. | |
| screens | No | How far, in viewport heights, for down and up. Default: 0.8. | |
| direction | No | Where to scroll. Default: down. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing the cost model ('every started minute of the session costs credits'), the session lifecycle ('ends when closed or 3 minutes after the last call'), the implicit lazy-load side effect, and the exact return payload (URL, title, at_top, at_bottom). These are operational facts an agent cannot get from readOnly/idempotent hints alone.
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 dense but front-loaded paragraph: mode enumeration first, then side effect/return, then billing. Every sentence carries information, though the billing clause is appended to a long sentence and could have been separated for scanability.
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 compensates by naming the returned fields and their meaning (at_top, at_bottom). Combined with the three-mode explanation and session-cost warning, an agent has everything needed to call this correctly on the first attempt.
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 the baseline is 3; the description adds cross-parameter meaning the schema does not, namely that `screens` describes distance for the down/up modes while `element` selects the scroll-until-visible mode. It restates the 0.8 default and the direction set, which is mildly redundant with 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?
Starts with a specific verb+resource ('Scrolls the current page in the user's browser') and enumerates the three distinct modes of operation (by screens, to top/bottom, until element). An agent can distinguish it from siblings like cotlet_browser_read or cotlet_browser_navigate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Content that loads on scroll appears, and the next read lists it' effectively tells the agent when to use this tool (to reach lazy-loaded content, then call cotlet_browser_read). It does not explicitly name a when-not condition or state that element-based scrolling supersedes the screens/direction parameters, so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_selectChoose from a listADestructiveInspect
Chooses an option of a drop-down list on the current page in the user's browser on Cotlet, by the list's number in the element list and the option's label as read lists it (or its value). Returns the URL and title after it. Card fields and account pages are refused. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| option | Yes | The option. | |
| element | Yes | The element's number in the element list of the current page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag the operation as destructive, non-idempotent, and open-world; the description goes well beyond that by disclosing the return payload (URL and title after selection), the refusal of card fields and account pages, and the credit/session economics including the 3-minute inactivity timeout. That is exactly the kind of context an agent needs before spending money and mutating page state.
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 core action is front-loaded in the first clause and each following sentence carries distinct information (return values, refusals, billing). It is dense rather than wasteful, though the session-cost sentence is boilerplate that inflates the definition relative to the two-parameter operation.
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 mutation tool with no output schema, the description covers what is returned, what is blocked, and the session lifecycle cost, which is nearly everything an agent needs. The one remaining gap is what happens on an unsuccessful match (error vs. silent no-op), which matters given destructiveHint=true.
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?
With 100% schema coverage, the schema already documents both parameters, so the baseline is 3. The description does add a little meaning by clarifying that 'option' can be matched by the label as the list renders it or by its value, but it says nothing about partial matching, case sensitivity, or failure behavior for an unmatched label.
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 ('Chooses an option') and resource ('drop-down list on the current page') and scopes it to Cotlet's browser session, which cleanly separates it from navigation or screenshot siblings. It does not explicitly name the neighboring tools (click/type/read) that an agent might confuse with selection, so it stops just short of full 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?
'On the current page' establishes the precondition that a page must already be loaded, and 'Card fields and account pages are refused' gives an explicit when-not boundary. It stops short of a 5 because it never names the alternative action (e.g., use click or type when the element is not a select).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_sessionsCotlet: browser sessions and closing themADestructiveIdempotentInspect
Open Chrome DevTools connections to the user's Cloud Browsers with the minutes and credits each has cost so far, and the cdp_url links still valid. With close: true it ends the open connections and takes back the unused links, of one app or of all. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| close | No | End the connections and revoke the links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: it discloses the authentication requirement, that costs and minutes are reported, that only still-valid cdp_url links are returned, and that closing revokes unused links. This is consistent with destructiveHint=true and readOnlyHint=false.
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 compact and front-loads the main behavior, with the close behavior following immediately. The phrase 'of one app or of all' is unnecessary and confusing given the one-parameter schema, but overall there is little waste.
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 low-complexity tool with rich annotations and no output schema, the description covers the main return data and authentication. The unresolved 'one app or all' scope is a real gap because the schema cannot express app selection, leaving the agent unsure how to interpret that claim.
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 the close parameter is already documented. The description adds that close=true ends connections and takes back unused links, but it also mentions 'of one app or of all' even though the schema exposes no app-targeting parameter, which creates ambiguity rather than clarity.
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 identifies the resource as Cloud Browser sessions and explains that it exposes cost, minutes, and valid cdp_url links, with an optional close behavior. It does not explicitly distinguish itself from sibling tools such as cotlet_browser_close or cotlet_browser_connect, and the opening verb 'Open' is slightly ambiguous.
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?
It gives a useful condition for the close parameter ('With close: true') and states the authentication prerequisite. However, it does not explain when to use this tool versus cotlet_browser_close or other browser siblings, and the 'of one app or of all' scope is not actionable through the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_typeType on the pageADestructiveInspect
Types text into a field of the current page in the user's browser on Cotlet, by the field's number in the page's element list, and with submit presses Enter. Returns the URL and title after it. Password, card and one-time code fields and sign-in pages are refused: the user fills those in themselves. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to type. | |
| submit | No | Press Enter after typing, e.g. to search. | |
| element | Yes | The element's number in the element list of the current page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the return value (URL and title after typing), a security refusal policy for sensitive fields and sign-in pages, a credit cost per started minute, and session lifetime ('ends when closed or 3 minutes after the last call'). The mutation/destructive framing is consistent with destructiveHint=true and openWorldHint=true.
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?
Front-loads the action and addressing scheme, then layers behaviour, refusals and cost in three tight clauses. The billing sentence is slightly off-topic for a typing tool but is genuinely useful context, so only a minor deduction.
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 destructive, open-world browser mutation with no output schema, the description covers the action, how elements are addressed, the return value, safety refusals, and session/cost lifecycle — everything an agent needs to call it without surprises.
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 three parameters are already documented, and the description largely restates them (`submit` presses Enter, element numbering from the page's element list). Baseline 3 is appropriate; it adds no constraints or gotchas 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?
States a specific verb and resource ('types text into a field of the current page') plus the addressing scheme ('by the field's number in the page's element list'), which cleanly separates it from siblings like cotlet_browser_press, cotlet_browser_select and cotlet_browser_click.
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 clear when-to-use context via the `submit` note ('presses Enter after typing, e.g. to search') and an explicit when-not: password, card, one-time code fields and sign-in pages are refused and left to the user. It does not name the sibling to use instead for keystrokes like Tab/Escape, so it stops just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_browser_uploadUpload a fileADestructiveInspect
Puts files into a file field of the current page in the user's browser on Cotlet, or into the file picker that an upload button opens, by its number in the element list. A file is given as {"url": "https://..."} for a file online or {"file_id": "..."} for one uploaded to Cotlet first; up to 10 files, 20 MB each. Returns the URL and title after it. Every started minute of the session costs credits; it ends when closed or 3 minutes after the last call in that browser.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | The files. | |
| element | Yes | The element's number in the element list of the current page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive, open-world, non-idempotent behavior, and the description adds real value on top: accepted file source shapes, the 10-file / 20 MB limits, the returned URL and title, and the per-minute credit cost with the 3-minute idle timeout. It does not say what happens on partial failure or whether existing field content is replaced, which keeps it short of a 5.
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 dense sentences, purpose and input shape front-loaded, with cost/session policy last. Every clause carries information, though the credit-and-timeout clause sits somewhat awkwardly in a tool-purpose 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?
With no output schema, the description correctly states the return value (URL and title), and it covers input forms and limits. The main gap is the missing reference to how a browser session must already exist and how this differs from cotlet_upload_file.
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 the baseline is 3. The description restates the url/file_id alternatives and the element-number meaning that the schema already documents, adding limits (10 files, 20 MB) but no genuinely new semantics such as how the element list is obtained or what happens if element is not a file input.
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 gives a specific verb and resource ('puts files into a file field of the current page in the user's browser'), plus the targeting mechanism (element number). It distinguishes itself from generic upload behavior by naming the browser/session context, but it never contrasts itself with the sibling cotlet_upload_file, which an agent could easily confuse it with.
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 browser-session framing and the note that the session ends on close or 3 minutes after the last call imply when this tool fits, but there is no explicit 'use this instead of cotlet_upload_file when...' guidance, and no prerequisites (e.g. needing an open browser session from cotlet_browser_open/connect) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_get_callCotlet: check a callARead-onlyInspect
Status of an earlier Cotlet call, by its call_id: pending (waits for the owner's approval in the Cotlet console), approved, running, success, rejected, expired, blocked or failed. For a call that answered with status pending or running.
| Name | Required | Description | Default |
|---|---|---|---|
| call_id | Yes | call_id from the earlier call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description contributes the status vocabulary and the polling context, but says nothing about behavior for an unknown or expired call_id, retention window, or whether repeated polling is rate-limited.
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 short sentences, front-loaded with the resource and key, with the status set inlined rather than padded into separate sentences. The trailing 'answered with status pending or running' is slightly awkward phrasing but earns its place as scoping 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 one-parameter read tool with no output schema, the description supplies the crucial return-value information (the full status enum) that the structured fields omit. Only minor gaps remain, such as what accompanies the status in the response.
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?
There is a single required parameter with 100% schema description coverage, so the schema already carries the semantics. The description's 'by its call_id' merely restates the schema and adds no format or sourcing detail (e.g. where the call_id came from).
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 resource (an earlier Cotlet call) and a specific retrieval (its status, keyed by call_id), and enumerates every terminal and intermediate state so the agent knows exactly what it will get back. No sibling tool overlaps this resource, so the lack of an explicit 'not for X' does not create ambiguity.
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 closing clause scopes it to calls whose prior response was pending or running, which effectively tells the agent this is a polling tool rather than a general history lookup. It stops short of naming an alternative or saying what to do once a terminal status is reached.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_report_issueCotlet: report a bug or a missing featureAInspect
Sends a report straight to the Cotlet team: a tool that failed or returned wrong data, an error you could not get past, or a tool, field or app the task needed and Cotlet lacks. The report carries the error text and call_id when there is one, never passwords or tokens. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | App slug the report is about, e.g. 'skool'. | |
| kind | Yes | bug: a tool did the wrong thing or returned wrong data. error: a call failed or returned an error you could not get past. feature_request: something new the user wants. missing_feature: an app is here but lacks a tool, field or option the task needed. other: anything else. | |
| tool | No | Tool or endpoint name, e.g. 'skool_list_members'. | |
| title | Yes | One line, e.g. 'skool_list_members stops after 50 members'. | |
| client | No | Agent or tool sending this, e.g. 'Claude Code'. | |
| call_id | No | call_id of the call that went wrong, if any. | |
| description | Yes | What you tried, what you expected and what happened, with the error text if there was one. No passwords, tokens or other secrets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-destructive, non-idempotent write, so the description only needs to add context. It does: it states where the report goes, that error text and call_id are attached when available, that secrets are never included, and that an API key or sign-in is required. It does not mention what happens on duplicate submissions, consistent with idempotentHint=false but not explained.
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 dense sentences, front-loaded with the action and its goal, then the trigger scenarios, then the content and auth constraints. No filler and nothing repeated from the title or annotations.
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 mutation tool with no output schema, the description covers purpose, triggers, attached payload, secret handling and authentication, which is enough to call it correctly. It omits what the caller receives back or whether filing duplicates creates separate reports, a minor gap for a write 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 coverage is 100%, so enum values for `kind` and field meanings for `tool`, `app` and `call_id` are already documented in the schema. The description adds only marginal meaning, clarifying that call_id and error text are picked up automatically when present, which is the baseline expectation given full schema documentation.
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 and resource ('Sends a report straight to the Cotlet team') and enumerates the concrete situations it covers: failed or wrong-data tools, blockers, missing tools/fields/apps. It stops short of explicitly distinguishing itself from the sibling cotlet_request_apps, which plausibly overlaps with the 'app the task needed and Cotlet lacks' case.
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?
Clear contextual triggers are given ('failed or returned wrong data', 'an error you could not get past', 'needed and Cotlet lacks'), which is enough for an agent to decide when to file a report. It offers no explicit exclusion or pointer to cotlet_request_apps / cotlet_get_call, so edge-case routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_request_appsCotlet: request access to appsAInspect
Requests access to apps for the user's workspace, as Request access in the console: a live app is granted at once, any other goes to the Cotlet team, who answer within 72 hours. Takes app slugs as listed at https://cotlet.dev/api/v1/apps. Free. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| apps | Yes | App slugs, e.g. ["skool", "substack"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: a live app is granted immediately, other requests go to the Cotlet team with a 72-hour response window, the operation is free, and authentication via Cotlet API key or sign-in is required. The mutation-like but non-destructive nature is consistent with 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?
Three tight sentences with the core action front-loaded, followed by outcome behavior, slug source, cost, and authentication. No wasted words.
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 one-parameter request tool with no output schema, the description provides everything needed to call it correctly: what it does, how outcomes differ, where to get valid slugs, and what credentials are required.
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 the schema already documents the apps parameter and slug examples. The description adds useful context by pointing to https://cotlet.dev/api/v1/apps as the canonical slug list, though it does not mention the maxItems limit.
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: request access to apps for the user's workspace. It distinguishes this from informational siblings like cotlet_apps and cotlet_balance by describing an action that submits an access request and explains the two possible outcomes.
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 clearly frames the tool as the programmatic equivalent of 'Request access' in the console, which implies when to use it. It does not explicitly say to use cotlet_apps first to discover slugs, so a small inference remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_upload_fileCotlet: upload a file for a toolAInspect
Returns a one-time upload_url and a file_id for a local file (an image for a post, an attachment). The file is sent to upload_url with an HTTP PUT; an argument that takes a file accepts {"file_id": "..."}. Up to 25 MB, the URL works once. Free. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name, e.g. photo.jpg. | |
| content_type | No | MIME type, e.g. image/jpeg. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: it returns a one-time upload_url and file_id, requires an HTTP PUT to upload_url, enforces a 25 MB limit, states the URL works only once, and notes the Cotlet API key/sign-in requirement. These details are consistent with the non-read-only, non-destructive annotation profile and materially help the agent understand the workflow.
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 most important fact—what is returned and how it is used—is front-loaded in the first sentence. The remaining sentences cover upload method, size limit, one-time behavior, and auth without wasted words.
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 fully explains the return values, the upload workflow, the file size constraint, one-time URL behavior, and authentication needs. An agent has enough information to invoke and chain this tool 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%, with both name and content_type documented with examples in the schema itself. The description does not add parameter-specific syntax or constraints beyond that, 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 states a specific verb and resource: it returns a one-time upload_url and file_id for a local file. It also clarifies the intended use cases (an image for a post, an attachment), but it does not explicitly distinguish this helper from sibling tools such as cotlet_browser_upload.
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 usage context: call this to obtain upload_url and file_id, PUT the file to upload_url, then pass file_id to any argument that accepts a file. It does not name when-not-to-use cases or alternative tools, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cotlet_whoamiCotlet: who am IARead-onlyInspect
The Cotlet account this connection acts as: email, workspace, access status, the API key or OAuth client in use with its scope, the apps the workspace may call and its credit balance. Free. Needs the user's Cotlet API key or sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds genuine value beyond them: it declares the call is credit-free ('Free') and that authentication via the user's Cotlet API key or sign-in is required, which matters for failure handling. It does not say what shape/format the response takes, but the field list largely compensates.
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 short sentences: the first front-loads the substantive return contents, the second carries the cost and auth facts. No filler, no restatement of the title, and every clause 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?
There is no output schema, so the description must carry the return contract — and it does, enumerating each field the agent will receive. Combined with the required-auth note, an agent has enough to call it correctly. Only minor gaps remain, such as how failures look when the key is missing or what access-status values are possible.
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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Nothing in the text conflicts with the empty 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 names a concrete resource — the Cotlet account identity for this connection — and enumerates exactly what comes back (email, workspace, access status, API key/OAuth client scope, callable apps, credit balance). That is far more specific than the bare 'who am I' title. It stops short of explicitly distinguishing itself from siblings like cotlet_balance and cotlet_apps, which overlap on the balance and app-list portions of the response.
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 context is implied rather than stated: an agent can infer this is the pre-flight identity/permission check, and 'Needs the user's Cotlet API key or sign-in' plus 'Free' tells it the prerequisites and that no credits are consumed. However there is no explicit 'call this before cotlet_apps or cotlet_balance to verify access' routing, and no stated conditions under which this tool should be skipped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryCreate categoryBDestructiveInspect
Add a category to a group's feed. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name, up to 30 characters. | |
| sort | No | How the category orders posts. Default: default. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| who_can_post | No | members (default) or admins only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is documented in structured data. The description adds one genuinely new behavioral fact, the admin-only permission requirement, but says nothing about limits on category count, duplicate-name behavior, or what a failed call looks like.
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 short sentences, front-loaded with the action and followed by the permission constraint. Nothing is padded, though the extreme brevity leaves gaps that a third sentence could have closed.
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 destructive, non-idempotent mutation with fully documented parameters and no output schema, the description is just barely adequate. It covers what and who, but not what the call returns or how the destructive hint manifests, leaving the agent to rely on annotations for the risk picture.
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 both enums (sort, who_can_post) are documented in-schema with defaults, so the description is not required to compensate. 'group's feed' only loosely gestures at the required group parameter, adding no syntax or format detail 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?
Specific verb+resource: 'Add a category' to a group's feed, which distinguishes it from the sibling update_category, delete_category and list_categories. Scope is narrowed to a group's feed, but the description never names those siblings explicitly.
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?
'Admins only' gives a real precondition, which is more than most sibling tools offer. However, it never states when to choose this over update_category or when a category already exists, so the agent must infer the create-vs-update boundary 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.
create_courseCreate courseADestructiveInspect
Add a course to the group's Classroom, as a draft or published. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | Yes | Course title, up to 50 characters. | |
| min_level | No | Unlock only from this level up. Default: open to all members. | |
| published | No | true shows it to members now; default false keeps it a draft. | |
| description | No | Shown on the course card, up to 500 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds an authentication requirement ('Admins only') and clarifies that course creation can result in a draft or published item. With annotations already declaring destructiveHint=true and openWorldHint=true, the description is adequate but does not explain the destructive or non-idempotent implications of calling it.
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 short sentences with no wasted words. The main action and scope are front-loaded, followed by the key permission constraint.
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 creation tool with no output schema, the description covers the action, scope, and permission requirement. It leaves out return behavior and consequence details, which would help an agent understand the result of creating a course.
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 all five parameters are already documented in detail. The description adds only the draft/published distinction, which is already covered by the published parameter schema, so it does not meaningfully extend parameter 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 clearly states a specific verb and resource: adding a course to the group's Classroom. It also distinguishes admin-only creation, but does not explicitly differentiate from related tools such as create_lesson or set_course_published.
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?
It gives two useful usage constraints: admin-only access and the ability to create a draft or published course. However, it does not explain when to use this tool versus set_course_published or how it relates to course creation within the broader Classroom workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_eventCreate eventADestructiveInspect
Add an event to a group's calendar. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| start | Yes | Start, ISO 8601. Without an offset it is read in timezone. | |
| title | Yes | Event title. | |
| access | No | Who sees it: all members (default), members from min_level up, or a course's members. | |
| location | No | The Zoom or Meet link, the address or the URL. | |
| timezone | No | IANA zone the event is shown in, e.g. America/New_York. Default: UTC. | |
| course_id | No | With access course: course_id from list_courses. | |
| min_level | No | With access level. | |
| description | No | What the event is about. | |
| location_type | No | zoom, meet, address or link (default), skool_call or skool_webinar. | |
| duration_minutes | No | Length in minutes. Default: 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, openWorld=true, and idempotent=false. The description adds meaningful behavioral context beyond annotations: admin-only access and an approval workflow before the event is finalized.
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 short sentences, front-loaded with the core action, followed by the two critical constraints. There is no wasted text.
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 an 11-parameter mutation tool with no output schema, the description covers the essential permission and approval context. The remaining details are handled by the comprehensive input schema.
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 11 parameters are already documented in the input schema. The description adds no parameter-specific details, which is acceptable given the schema's completeness.
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 and resource: adding an event to a group's calendar. It is clearly a creation operation and distinguishishable from update_event/delete_event by the name and description, though it does not explicitly name sibling alternatives.
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?
It provides explicit usage constraints: admins only and owner approval required. It does not compare against alternatives such as update_event, but the creation case is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lessonCreate lessonADestructiveInspect
Add a lesson at the end of a course, with text and a video link. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Lesson text. A blank line starts a new paragraph. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | Yes | Lesson title. | |
| course_id | Yes | course_id from list_courses or create_course. | |
| published | No | false keeps it a draft. Default: true. | |
| video_url | No | YouTube, Vimeo, Loom or Wistia link shown above the text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotency. The description adds the meaningful auth constraint ('Admins only') but says nothing about the destructive aspect or that duplicate titles/lessons can be created – useful context that annotations alone don't convey.
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 short sentences, action and scope first, permission constraint second — nothing to trim.
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 6-param create tool with no output schema, the description covers purpose, placement and permissions, but leaves the agent without any hint of what is returned (e.g. a lesson id needed later for mark_lesson_complete) or the published/draft default's implications.
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 parameters are fully documented already; the description's mention of 'text and a video link' just restates body and video_url without adding format or constraint detail. 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+resource ('Add a lesson') and its placement ('at the end of a course'), which cleanly separates it from create_course and update_lesson. It doesn't explicitly name a sibling, so it stops short of a 5.
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?
'Admins only' gives a usable prerequisite, but there is no guidance on when to use this versus update_lesson (e.g. editing an existing lesson) or create_course, and no note that new lessons are appended rather than positioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postCreate postADestructiveInspect
Publish a post to the community feed in a category, as you. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Post text. Links are kept as typed. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | Yes | Post title. | |
| category | Yes | Category name as the group shows it, any letter case. | |
| poll_options | No | Answers of a poll under the post, 2 to 10. Members vote with vote_on_poll. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotency, so the safety profile is covered. The description adds an important fact not in the annotations: the post is attributed to the caller and is queued pending owner approval, which affects how an agent should report 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?
Two short sentences with zero filler; the identity and approval constraints are front-loaded before any secondary 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?
The approval-wait behavior and authorship are the key non-obvious facts for a mutation tool with no output schema, and both are stated. What the call returns (e.g., a pending post id) and poll creation side effects are left unaddressed, a minor 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 every property, including poll_options with its 2–10 bound and vote_on_poll cross-reference, is documented there. The description only adds 'as you' (no author parameter) and 'in a category', so it earns no more than 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?
States a specific verb and resource ('Publish a post to the community feed'), plus the scope ('in a category') and authorship context ('as you'). It is clearly distinguishable from siblings such as update_post and comment_on_post.
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 by the authoring verb and the 'as you' phrasing, but the description never says when to prefer this over update_post or comment_on_post, nor names any alternative. There is no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decline_membership_requestDecline membership requestBDestructiveInspect
Decline an applicant's request to join. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| request_id | Yes | request_id from list_membership_requests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds the phrase 'Waits for the owner's approval,' which suggests a potentially pending approval process, but the phrase is ambiguous and does not clearly explain the effect, reversibility, or notification 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 short and front-loads the main action. However, the second sentence is ambiguous and does not clearly earn its place because 'waits for the owner's approval' is not explained.
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 destructive mutation tool, the description lacks clarity about the outcome, whether the decline is immediate or pending, and what the owner approval phrase means. The schema and annotations cover parameters and safety signals, but the description leaves behavioral 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?
The input schema has 100% description coverage for both parameters, including that request_id comes from list_membership_requests. The description adds no parameter-specific meaning beyond the schema, 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 verb and resource: declining an applicant's request to join. This clearly distinguishes it from the sibling approve_membership_request by the opposite action, without requiring schema inspection.
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?
It says what the tool does but gives no guidance on when to use it, when not to use it, prerequisites, or alternatives beyond the implicit contrast with approval. An agent must infer usage context from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_categoryDelete categoryADestructiveInspect
Delete a feed category and move its posts to another. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| category_id | Yes | category_id from list_categories. | |
| move_posts_to | No | category_id that gets the deleted category's posts. Default: the first other one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is known. The description adds meaningful context beyond that: posts are relocated rather than destroyed, admin privilege is required, and the action blocks on owner approval – a non-obvious async/pending trait.
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 short sentences, zero padding, with the destructive scope and posting behavior front-loaded.
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 covers the key facts an agent needs: what gets destroyed, where posts go, and the approval wait. It could say a bit more about failure/confirmation behavior for a destructive, non-idempotent call.
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 the schema already documents group, category_id, and move_posts_to (including its default). The description only hints at move_posts_to via 'move its posts to another,' adding no syntax or format detail beyond the schema – 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 states a specific verb+resource ('Delete a feed category') and adds the important side-effect scope ('move its posts to another'), which distinguishes it from update_category and delete_post. It doesn't name a sibling explicitly, 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?
'Admins only' and 'Waits for the owner's approval' give useful preconditions for calling it, but there's no guidance on when to delete versus recategorize with update_category, nor on ordering/retry behavior for what is a destructive op.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_eventDelete eventADestructiveInspect
Delete a calendar event. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| event_id | Yes | event_id from list_events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds two things annotations cannot express: an authorization requirement (admins only) and an approval gate by the event owner. The only weakness is that 'Waits' is ambiguous — whether the call blocks or returns a pending status is left unclear.
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 short sentences, front-loaded with the action, then the permission constraint, then the workflow caveat. No filler at all.
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 destructive, non-idempotent mutation with no output schema, the description covers auth and the approval gate but leaves key operational questions open: does the call block until approval, what does it return, and is the deletion reversible or recoverable after approval. Adequate but with clear gaps for a destructive 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%: 'group' explains the group URL form and 'event_id' points back to list_events, which is stronger routing than the description provides. The description adds nothing about parameters, so baseline 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?
Specific verb+resource ('Delete a calendar event') that clearly separates it from update_event, create_event, and get_event in the sibling list. It does not explicitly name those siblings, but the resource naming is unambiguous.
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?
'Admins only' establishes a prerequisite for use, which is real guidance. However, there is no statement of when to prefer update_event (e.g., cancel vs. delete) or what happens if the caller is not an admin — behavior is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_group_linkDelete group linkADestructiveInspect
Remove a link from the group's sidebar. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| number | Yes | Link number from list_group_links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond the annotations: admin-only authorization and the fact that deletion waits for owner approval (an async/pending workflow). The annotations already cover destructiveness and non-idempotency, so this supplementary info earns a solid score.
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 tight sentences, action front-loaded, zero filler. Every sentence adds distinct value (action, permission, workflow).
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 destructive mutation with no output schema, the description covers authorization and the approval workflow well enough to call correctly. It could note the outcome on success or link-number sourcing, but the schema handles the latter, so it is largely 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?
With 100% schema description coverage, the schema fully documents both parameters (group URL name and link number from list_group_links). The description adds no additional parameter meaning, so baseline 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?
States a specific verb (Remove) and resource (a link from the group's sidebar), and clearly distinguishes it from siblings like add_group_link and update_group_link. An agent can identify the operation 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?
The 'Admins only' note gives a permission prerequisite, which is useful usage context. However, it doesn't explicitly state when to use this versus update_group_link (to modify) or add_group_link, leaving the alternative routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_group_ruleDelete group ruleADestructiveInspect
Delete a group rule. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| number | Yes | Rule number from list_group_rules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: the admin-only authorization gate and the fact that deletion is gated on an owner approval step. What remains unstated is whether the call blocks until approval or returns a pending state.
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 terse sentences, no waste, with the destructive action stated first and the constraints following. Everything is front-loaded for a scanning 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 two-parameter destructive mutation with no output schema, the description covers the two non-obvious things an agent must know: authorization level and the approval gate. The one gap is what the call returns while approval is pending, which matters given there is no output schema to explain 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?
Schema description coverage is 100% and both parameters are documented in-schema (group URL name, rule number from list_group_rules). The description adds no parameter-level detail, so the baseline 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?
States a specific verb and resource ("Delete a group rule"), which cleanly separates it from update_group_rule, add_group_rule, and list_group_rules in the sibling set. It stops short of naming those siblings explicitly, so differentiation is implied rather than stated.
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?
"Admins only" and "Waits for the owner's approval" give a prerequisite and a workflow condition, which is useful context. However, it never says when to delete versus update a rule, or what to do if the caller isn't an admin, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_membership_questionDelete membership questionBDestructiveInspect
Remove a membership question. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| number | Yes | Question number, from add_membership_question or get_group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so safety profile is largely covered by structured data; the description's added value is the admin-permission requirement. It says nothing about whether answers or submitted responses are also removed, or whether the deletion can be undone.
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 short, front-loaded sentences with no filler, and the read-only-then-constraint order is sensible. The clipped fragment style is efficient but offers no structure beyond the minimum.
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 destructive, non-idempotent mutation with no output schema, the description covers the operation and the permission gate but omits the blast radius (cascading removal of answers/submissions) and confirmation expectations. Adequate but with clear gaps given the destructive nature.
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 both parameters (group, number) are fully documented in the schema, including where the question number comes from. The description adds no parameter-level detail, so baseline 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?
States a specific verb (Remove) and resource (membership question), which cleanly separates it from add_membership_question and update_membership_question in the sibling list. It stops short of naming those alternatives explicitly, but an agent can still identify the 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?
"Admins only" gives a genuine precondition for use, but there is no guidance on when to delete versus update a question, no note on confirming with a user before an irreversible removal, and no reference to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_postDelete post or commentADestructiveInspect
Delete a post or a comment for good: yours, or anyone's as an admin. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| post_id | Yes | post_id from list_posts, or comment_id from get_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description still adds meaningful behavior: 'for good' reinforces permanence, and 'Waits for the owner's approval' discloses a non-obvious moderation/approval step that no annotation or schema field conveys. It stops short of saying what the immediate response looks like while the deletion is pending.
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 short sentences, zero filler, and the core action plus permanence is front-loaded before the approval caveat. Nothing repeats the name or the annotations needlessly.
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 two-parameter destructive tool with no output schema, the essentials are present, but the approval behavior is left ambiguous: it is unclear whether deleting your own content also queues for approval, whether the delete is immediate or pending, and what the tool returns. The single most surprising behavior is named but not explained.
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 'group' and 'post_id' are documented, including that post_id may be a comment_id from get_post. The description adds only that either a post or a comment may be targeted, which the schema already states, so it does no extra work here.
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 and resource ('Delete a post or a comment') and clarifies the dual target type, which is more than the title alone conveys. It does not explicitly differentiate itself from sibling delete_* tools (delete_category, delete_event, delete_group_link), but the resource is unambiguous.
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?
'Yours, or anyone's as an admin' implies the permission context under which the tool is appropriate, which is useful implied guidance. However, it never states when not to use it, nor points to any alternative (e.g. get_post to obtain the comment_id first, list_posts for the post_id), leaving the caller to infer prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_groupsDiscover groupsARead-onlyIdempotentInspect
Search Skool's public directory of communities, with members, price and rating.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Words to look for. Left out: the top groups. | |
| cursor | No | Next page cursor from the previous call. |
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. The description adds useful context about what comes back (members, price, rating), but says nothing about result volume, ranking, or how many results a page returns despite the cursor parameter implying paging.
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?
A single front-loaded sentence with no filler; the trailing clause about result fields earns its place by telling the agent what it will get back.
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-only, no-required-param tool with full annotation coverage, the definition is nearly sufficient. The only meaningful gap is the absence of any routing hint versus list_groups and search_group, which matters in a sibling set of this size.
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 both parameters are self-documented, including the behavior of omitting 'query' (top groups). The description adds nothing beyond the schema, which is the expected baseline when the schema does the work.
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 ('Search') and resource ('Skool's public directory of communities'), and adds what each result carries (members, price, rating). It implicitly differentiates from list_groups/search_group by being a directory search of external communities, but never names those siblings explicitly.
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 only implied: an agent can infer this is for discovering new communities rather than managing the groups it belongs to. No when-to-use condition, no exclusions, and no mention of list_groups or search_group as alternatives, so the agent must reason about the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_postFollow postBDestructiveInspect
Get notified of new comments on a post, or stop.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| post_id | Yes | post_id from list_posts (not the slug). | |
| following | No | false stops the notifications. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is carried by structured data. The description adds the actual behavioral effect — you are subscribed to new-comment notifications — which annotations cannot express, but it says nothing about reversibility, permission requirements, or whether stopping removes historical notification state. Note destructiveHint=true is consistent with 'stop' removing a follow, not a 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?
A single ten-word sentence with the effect front-loaded and zero filler. It is efficient, though the trailing 'or stop' is clipped enough to require a second read.
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 three-parameter toggle with full schema documentation, existing annotations, and no output schema, the description is adequate but thin — an agent gets the gist but must infer the follow/unfollow toggle model and any membership prerequisites from the schema and annotations 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 description coverage is 100%: group format, the post_id sourcing from list_posts, and the following=false semantics and default are all documented in the schema. The description adds no meaning beyond that, so the baseline 3 for high coverage 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?
States a concrete effect (notifications for new comments on a post) and its inverse ('or stop'), plus the resource 'post', which is enough to distinguish it from like_post, comment_on_post, and get_post. It never uses the verb 'follow' explicitly and leaves the toggle framing (follow vs. unfollow in one tool) to the reader, so it stops short of a precise 5.
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?
'or stop' implies the two usage modes (start receiving notifications, stop receiving them), but there is no explicit when-to-use guidance, no prerequisites (e.g., must be a group member, must have post_id from list_posts — that hint lives only in the schema), and no named alternative when a different tool would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auto_dmGet AutoDMARead-onlyIdempotentInspect
The welcome message Skool sends every new member, and whether it is on. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful context that access is admin-only and that the resource is the new-member welcome message, but it does not describe error behavior, return format, or rate limits.
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 short sentences with no wasted wording, and it front-loads the resource definition before the admin access constraint. It communicates the essential scope efficiently.
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 low-complexity, one-parameter read tool with rich annotations and full schema coverage, the description is nearly complete. It covers the resource and admin-only constraint, though it could more explicitly frame the operation as retrieval and clarify behavior for non-admin callers.
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 group parameter is already documented with a concrete URL-name example. The description adds no parameter-level meaning beyond the schema, 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 identifies the AutoDM resource clearly as the welcome message sent to every new member and whether it is enabled. It is distinguishable from set_auto_dm by name and by the read-oriented framing, but it lacks an explicit verb such as 'retrieve' and does not name the sibling tool directly.
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 phrase 'Admins only' gives an important access prerequisite, but the description does not explicitly say when to use this tool versus set_auto_dm or what conditions require it. Usage is implied by the get/set naming pair and the admin constraint, but no alternatives 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_conversationGet conversationBRead-onlyIdempotentInspect
The latest messages of one Skool Chat conversation, oldest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1 to 100. Default: 50. | |
| conversation_id | Yes | conversation_id from list_conversations or send_message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the useful behavioral detail of ordering (oldest first) and recency (latest), but says nothing about how many messages come back when limit is omitted or whether older history is reachable.
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?
A single short sentence with no wasted words, front-loading the scope ('latest messages') before the ordering detail. It is efficient, though the fragmentary phrasing slightly obscures the action being performed.
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 with full schema coverage and complete annotations, most of what an agent needs is present. However, with no output schema, the description gives no hint of the return shape (messages with authors, timestamps, content) or whether 'latest' is bounded by limit and whether paging backwards is possible.
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 conversation_id (with its provenance) and limit (range 1-100, default 50) are documented in the schema. The description adds no parameter semantics of its own, so the baseline 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 names a specific resource (the messages of one Skool Chat conversation) and a scope (latest, ordered oldest first), which distinguishes it from list_conversations. It lacks an explicit verb ('returns'/'fetches') and is written as a noun fragment, so it falls short of the 5 bar.
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 statement of when to use this tool versus the obvious alternative list_conversations, and no prerequisites such as needing a conversation_id obtained elsewhere. The only such guidance lives in the schema parameter description, not the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_courseGet courseARead-onlyIdempotentInspect
One course with its lessons and folders in Classroom order; get_lesson reads a lesson.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| course_id | Yes | course_id from list_courses or create_course. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered and the description is correct not to repeat it. The description adds the return shape ('lessons and folders in Classroom order') but nothing about permissions, visibility of unpublished courses, or pagination.
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?
A single compact sentence with the primary fact (one course plus its lessons and folders) front-loaded and the sibling disambiguation trailing. Nothing is wasted.
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 trivial 2-parameter schema, full schema coverage, and no output schema, the description supplies the one thing structured data cannot: that the response nests lessons and folders in Classroom order. It could say more about how folders and lessons are nested, but nothing essential to calling it correctly 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 both parameters carry their own descriptions, including where to obtain course_id ('from list_courses or create_course'). The description adds nothing about the parameters, 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 names a specific verb-resource pair ('one course') and specifies exactly what is returned ('its lessons and folders in Classroom order'), which distinguishes it from get_lesson and, implicitly, from the list_courses sibling. It stops short of naming list_courses as the alternative, but the scope is unambiguous.
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?
It explicitly routes the agent: use this tool for a course and its nested contents, use get_lesson to read an individual lesson. That is a clear positive-selection rule, though no exclusions or preconditions (e.g., 'call list_courses first to obtain course_id') are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventGet eventBRead-onlyIdempotentInspect
One calendar event with its full description, place and access.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| event_id | Yes | event_id from list_events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context about the returned content (full description, place, access), but does not discuss not-found behavior or any other operational nuance.
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 tight sentence with no redundant wording. The key scope and returned fields are front-loaded.
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 two-parameter read tool with full schema coverage and explicit safety annotations, the description provides adequate context by naming the returned data. It could be slightly more complete by explicitly distinguishing list_events, but nothing critical 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 both parameters are clearly documented in the schema. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline score 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 identifies a single calendar event and the returned fields (description, place, access), which is more specific than the title. It implies the get-vs-list distinction through the word 'One', but does not explicitly name list_events as the sibling it complements.
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 guidance on when to use get_event versus list_events or other retrieval tools. The usage is only implied by the singular scope and the schema note that event_id comes from list_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupGet groupBRead-onlyIdempotentInspect
A group's name, About text, privacy, price, counts, owner and membership questions.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world. The description adds the returned field set, which is useful context, but says nothing about permissions, missing-group behavior, or whether private groups are accessible.
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?
A single field-list fragment with no filler; the key content is front-loaded. It is concise but grammatically incomplete, so not a 5.
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-only, one-parameter tool with full schema coverage and explicit safety annotations, the description supplies enough return-content context for selection. It could be stronger if it named the resource action or sibling boundaries.
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?
There is one parameter and schema coverage is 100%, including the URL-name example. The description does not add syntax or constraints for the group parameter, so baseline 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 enumerates the group attributes returned (name, About text, privacy, price, counts, owner, membership questions), so an agent can infer it retrieves a group's details. However, it omits an explicit verb and does not distinguish this tool from get_group_stats or list_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?
No when-to-use guidance or alternatives are named; the description does not say whether to use this for one group's full profile versus get_group_stats or list_groups. The group parameter's URL-name usage is left entirely to the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_group_statsGet group statsARead-onlyIdempotentInspect
Total, new and churned members and monthly recurring revenue for a period. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| period | No | 7d, 30d or 90d. Default: 30d. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds the admin authorization gate, which is genuinely beyond the annotations, but says nothing about return shape, MRR currency, timezone boundaries of the period, or behavior for groups with no data.
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 short sentences, zero filler, with the returned metrics front-loaded and the access constraint trailing as a quick caveat. Nothing could be removed without losing 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?
With no output schema, the description carries the burden of describing returns and does so by enumerating the four metric families. It stops short of clarifying MRR currency or how churn is computed, which a reporting tool arguably should state.
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 period enum with its default is fully documented in the schema. The phrase 'for a period' merely echoes the period parameter without adding format or edge-case detail, so the schema does the substantive work.
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 the specific metrics returned (total, new and churned members plus MRR) scoped to a period, which clearly separates it from siblings like get_group (profile data) or list_members (roster). The verb is implicit in the tool name rather than stated, but the resource and output are unambiguous.
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?
'Admins only' gives a real prerequisite for calling the tool, which is useful guidance. However, it never states when to prefer this over adjacent analytics-ish siblings such as get_leaderboard or get_group, leaving the selection context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardGet leaderboardBRead-onlyIdempotentInspect
The group's top 10 members by points for the last 7 days, 30 days or all time, and your rank.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| period | No | 7d, 30d or all time. Default: 30d. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds useful return-shape context (a fixed top-10 cap and the personal rank entry), which matters since there is no output schema. It does not address auth requirements (whose rank is 'yours') or result behavior for ties/inactive members.
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 front-loaded sentence that covers scope, size limit, dimensions and an extra return element with zero filler.
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 read-only, two-parameter tool with full schema coverage, the description says enough: what is ranked, over which periods, how many entries, and that the caller's rank is included. Only the identity/auth assumption behind 'your rank' is left implicit.
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%, with the group param documented via URL-name format and the period enum enumerated with a stated default. The description repeats the three period options but adds no semantics beyond the schema, 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?
States precisely what is returned: the group's top 10 members ranked by points, across three named periods, plus the caller's own rank. This clearly distinguishes it from sibling tools like list_members or get_group_stats, though it never names an alternative explicitly.
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 or when-not-to-use guidance is given, and no prerequisites are stated. An agent must infer that this is the tool for ranking questions rather than member enumeration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lessonGet lessonCRead-onlyIdempotentInspect
One lesson's text and video link.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| course_id | Yes | course_id from list_courses or create_course. | |
| lesson_id | Yes | lesson_id from get_course or list_courses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description's added value is disclosing the return payload (text and video link), which matters because no output schema exists, but it says nothing about access restrictions (e.g., unpublished courses) or missing-lesson 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?
A single fragment with zero waste is front-loaded, but the terseness crosses into under-specification rather than true conciseness. The sentence earns its place but leaves obvious gaps that more detail would have closed.
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 tool with full annotations, 100% schema coverage, and no output schema, the description conveys the essential return shape. It still lacks any hint about access conditions or failure modes, so it is 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 each parameter already explains its provenance (course_id from list_courses/create_course, lesson_id from get_course/list_courses). The description adds nothing about the three required identifiers, so the baseline 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 sentence identifies the resource (a single lesson) and what it contains (text and video link), which is more than a tautology of the title. However, it omits an explicit verb and does nothing to distinguish it from adjacent readers like get_course or list_courses, so an agent must infer that this is the single-lesson fetch.
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 when-to-use guidance, no mention of the alternative readers (get_course, list_courses), and no stated prerequisite such as needing course_id first. The agent gets no routing signal 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_memberGet memberBRead-onlyIdempotentInspect
One member's profile in a group: name, bio, role, level, points and when they were last online.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| member_id | Yes | member_id from list_members, search_members or get_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description contributes the field inventory but says nothing about failure modes (e.g. unknown member_id), permissions needed, or whether hidden members are visible.
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?
A single compact sentence with the scope front-loaded and no filler. It is a noun phrase rather than a full clause, but nothing needs trimming.
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 two-parameter read with rich annotations and no output schema, listing the returned fields (name, bio, role, level, points, last online) is exactly the compensation needed. Only error/empty-result behavior is left unaddressed.
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 already explains both `group` (URL name) and `member_id` (its sources). The description adds no parameter-level meaning beyond that, so baseline 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 resource and scope — 'One member's profile in a group' — which contrasts implicitly with the plural list_members and search_members siblings. It also enumerates the profile fields returned, so an agent can tell what it gets. It lacks an explicit verb ('Returns') and never names the sibling tools it differs from.
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 statement of when to use this instead of list_members, search_members or get_post, and no prerequisites or exclusions. The only routing hint — that member_id comes from list_members, search_members or get_post — lives in the input schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poll_resultsGet poll resultsARead-onlyIdempotentInspect
Answers and vote counts of a post's poll, optionally with who voted for what.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| voters | No | Also list who voted for each answer, up to 30. Default: false. | |
| post_id | Yes | post_id or slug of the post with the poll. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description usefully discloses the return content (answers plus counts, and optionally voter identities), but stops short of privacy/permission notes for voter data or any size limits beyond the schema's 'up to 30'.
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?
A single short sentence front-loads the resource and return content with zero padding. Nothing to trim.
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 fully documented parameters, strong read-only annotations, and a description that covers the return shape despite there being no output schema, an agent has enough to call this correctly. Minor gaps are the absence of a no-poll/error case and voter-privacy caveats.
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 three parameters are documented in the schema, and the description's 'optionally with who voted for what' merely restates the voters flag without adding format or behavior detail. Baseline 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?
States a specific resource (a post's poll) and what is returned (answers and vote counts), which cleanly separates it from vote_on_poll and get_post. It does not explicitly name those siblings, so differentiation is inferable rather than stated.
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 only implied: an agent can infer 'call this to read poll results'. There is no explicit when-to-use, no mention of vote_on_poll as the mutation counterpart, and no note about what happens when the post has no poll.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postGet postARead-onlyIdempotentInspect
One post with its full text and comments, replies nested under their comment.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| post_id | Yes | post_id or slug from list_posts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing the shape of what comes back — full post text plus comments with nested replies — which matters because there is no output schema. It does not cover failure behavior (e.g., unknown post_id), keeping it below a 5.
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?
A single compact clause with zero filler, and the most useful detail (single post, includes comments) is front-loaded. It lacks an explicit action verb, which slightly weakens the opening.
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 two-parameter read tool with full annotation coverage and complete schema docs, the description supplies exactly the missing piece — the return content and nesting. No output schema exists, yet the agent still knows what to expect.
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%: 'group' explains the URL-name form and 'post_id' points back to list_posts, so the parameters are already well documented. The description adds nothing further about parameter semantics, so the baseline 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 names the resource precisely ('One post with its full text and comments') and even specifies the return structure (replies nested under their comment), which lets an agent separate it from bulk siblings like list_posts. The verb is only implied via the title 'Get post', so it stops short of a fully self-contained verb+resource 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 explicit when-to-use guidance and no named alternative (e.g., 'use list_posts to browse, use this once you have a post_id'). The single-post framing implies the use case, but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_membersInvite members by emailBDestructiveInspect
Email people an invitation that lets them straight into the group. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| emails | Yes | Up to 50 addresses. | |
| course_ids | No | Long course ids to unlock for them on joining (from create_course or get_course). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context (admin-only, owner approval gate), but leaves unclear whether the invite really grants immediate access versus pending approval, and says nothing about failure modes or per-address outcomes.
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 short sentences with the action front-loaded and no filler. Slightly cheapened by the internal tension between 'straight into the group' and 'waits for the owner's approval', which costs a point.
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 and a mutation that sends real email, the description should clarify the approval flow or what is returned per address. It covers permissions and the approval gate, but not the outcome of a call or partial-batch 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?
Schema description coverage is 100%, so all three parameters including the 50-address cap and course_ids linkage are documented in the schema. The description adds no parameter-level meaning, so baseline 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?
States a specific verb and resource ('Email people an invitation') and the effect ('lets them straight into the group'), which is enough to distinguish it from send_message and approve_membership_request. It does not explicitly name a sibling, so it falls short of a 5.
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?
'Admins only' gives a real permission prerequisite, but there is no guidance on when to choose this over alternatives like approve_membership_request or send_message, or when not to bulk-invite. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
like_postLike post or commentBDestructiveInspect
Like a post or a comment, or take the like back.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| liked | No | false takes the like back. Default: true. | |
| post_id | Yes | post_id from list_posts, or comment_id from get_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, destructiveHint=true, and idempotentHint=false. The description adds the useful behavioral detail that the operation can be reversed ('take the like back'), which explains the destructive hint. It does not disclose return behavior or side effects beyond that, so it adds some value over annotations but not a lot.
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?
A single front-loaded sentence with no boilerplate or filler. It is appropriately brief for the tool's simplicity, though it could be slightly more structured by explicitly pairing the like and unlike modes.
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, full schema coverage, and rich annotations, the description plus structured fields give an agent enough to call the tool correctly. The only minor gap is that it does not mention return values, but with no output schema and a simple toggle operation, this is not a serious omission.
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%, with all three parameters documented in the schema, including the meaning of liked=false and the post_id/comment_id duality. The description adds no parameter detail beyond what the schema already provides, which meets the baseline for high coverage.
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 and resource: like a post or comment, plus the inverse operation (unlike). It is clearly distinct from siblings like list_post_likes, follow_post, and comment_on_post. It stops short of naming siblings or explicitly contrasting with them, which keeps it from a 5.
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?
It describes what the tool does, including the toggle-off behavior, but gives no guidance on when to choose this over follow_post or vote_on_poll, and no prerequisites or exclusions. The implied usage is minimal and left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesBRead-onlyIdempotentInspect
The feed categories of a group: name, who can post, sort order, post count.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true and openWorldHint=false, so the safety profile is fully covered without the description. The description's contribution is limited to enumerating returned fields; it says nothing about permissions required, pagination, or behavior when the group has no categories.
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?
A single short sentence with zero filler, front-loading the resource and then the return contents. Its fragmentary style (no verb) slightly reduces readability but nothing is wasted.
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 is the only source of return-shape information and it lists four fields — but it omits identifiers (e.g., a category id) that the agent would need to chain into update_category or delete_category. For a simple single-param read tool that is a noticeable gap rather than a fatal one.
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 single 'group' parameter is documented in the schema with a concrete URL-name example, so the description carries no additional burden here. It adds no meaning beyond what the schema already states.
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 resource ('the feed categories of a group') and enumerates what it exposes (name, who can post, sort order, post count), so the agent can tell it apart from create_category/update_category/delete_category. It lacks an explicit verb and reads as a noun phrase, but the intent to retrieve is unambiguous.
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 statement of when to call this versus siblings like get_group or search_group, and no prerequisites (e.g., whether the caller must be a member or admin). The agent must infer usage entirely from the name and the single required group param.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsList conversationsBRead-onlyIdempotentInspect
Your Skool Chat inbox: who, unread count and last message preview.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1 to 30 (Skool refuses more). Default: 20. | |
| cursor | No | Next page cursor from the previous call. | |
| unread_only | No | Only conversations with unread messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, idempotent operation, so the description does not need to carry the safety profile. The description adds useful context about the return content (who, unread count, preview), but does not describe pagination behavior or other operational details beyond what the schema provides.
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, front-loaded sentence with no wasted words. It efficiently communicates the tool's scope and key return fields.
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 usefully names the main return fields (who, unread count, preview). The input schema fully documents parameters, and annotations cover safety. Minor gaps remain around pagination behavior and full return shape, but the definition is sufficient for correct 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 all three parameters (limit, cursor, unread_only) are fully documented in the schema. The description adds no additional parameter semantics beyond what the schema already provides, which is the baseline expectation when coverage 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 clearly identifies the resource as the Skool Chat inbox and specifies the key content returned: who, unread count, and last message preview. It is specific enough to distinguish a conversation list from unrelated tools, but it does not explicitly contrast with the sibling get_conversation 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 phrase 'Your Skool Chat inbox' implies the tool is for viewing conversations, but there is no explicit guidance on when to use it versus get_conversation, list_notifications, or other messaging tools. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_coursesList coursesBRead-onlyIdempotentInspect
Courses in the group's Classroom, open or locked for you, with the modules of open ones.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value by disclosing that locked courses are returned but modules are only included for open ones, which explains partial/inconsistent payload depth. It still says nothing about pagination, ordering, or size limits.
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 dense sentence with no filler, and the scope condition ('open or locked for you') is placed early. Slightly elliptical phrasing ('for you', 'open ones') costs it a point but nothing is wasted.
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 one required parameter, no output schema, and full annotation coverage, the definition covers the essentials for invoking the tool. It remains thin on what a returned course or module actually contains and whether results are paginated, which matters for a listing tool with no output schema.
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 'group' parameter is fully documented in the schema with an example format. The description references 'the group's Classroom' but adds no syntax or format detail beyond the schema, 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?
States the resource ('Courses in the group's Classroom') and the scope ('open or locked for you, with the modules of open ones'), which is specific enough that an agent can distinguish it from get_course or create_course. However, it never names the sibling it contrasts with, so differentiation relies on the tool name rather than the 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?
There is no explicit guidance on when to call this versus get_course (single course) or other list tools, and no stated prerequisites such as group membership. The 'list' vs 'get' distinction is only inferable from the tool name, not the description text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsList eventsARead-onlyIdempotentInspect
Events on a group's calendar in one month: title, time, place and who can join.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| month | No | YYYY-MM. Default: this month. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds the useful detail that results carry title, time, place and joinability, effectively a light return-value sketch in the absence of an output schema, but says nothing about ordering, past vs upcoming events, or behavior for an unknown group.
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?
A single compact sentence with no filler, and the scope constraint is front-loaded. It is a fragment rather than a full statement, which keeps it tight but leaves the action implicit.
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 two-parameter read tool with full schema coverage and rich annotations, this is nearly complete, and the field list compensates for the missing output schema. Minor gaps remain around result ordering, time window (past vs future), and pagination that an agent might need.
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%, with the group URL name example and the YYYY-MM pattern plus 'Default: this month' already documented in the schema. The description reinforces the month scoping ('in one month') but adds no syntax or semantic detail beyond that, so the baseline 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 names a specific resource (events on a group's calendar) and a specific scope (one month), and lists the fields returned, which separates it from get_event (single event) and create_event/update_event (mutations). The verb 'list' is only carried by the title, not the sentence, so it stops just short of a fully self-contained 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?
Usage is implied by the 'group's calendar in one month' framing, but there is no explicit when-to-use or when-not guidance and no siblings named as alternatives. An agent can infer it is the collection read counterpart to get_event, but must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_group_linksList group linksBRead-onlyIdempotentInspect
The links on a group's sidebar, numbered as the group shows them.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
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 fully covered. The description contributes one genuinely new behavioral fact: results are numbered in the group's own display order. It says nothing about permissions needed, whether hidden/unpublished links are included, or whether the list is paginated.
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?
A single short sentence with no filler, and the two useful facts (sidebar links, display order) come first. It is efficient, though its brevity is partly under-specification rather than pure concision.
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 tool with rich annotations and no output schema, this is minimally adequate but leaves real gaps: it never says what a link record contains (label, URL, position), whether deleted or hidden links appear, or what the invocation returns. An agent could call it correctly but would be guessing about 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?
Schema coverage is 100% and the single 'group' parameter is documented in the schema with a concrete URL-name example. The description only implies that the group scopes the sidebar being read, adding no format or edge-case meaning beyond the schema; baseline 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?
States the specific resource: the hyperlinks shown in a group's sidebar, and adds that they are ordered/numbered as the group displays them. It is clearly distinct from list_group_rules or list_categories, though it is phrased as a noun fragment rather than an explicit 'list' verb and does not name a sibling to contrast with.
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 indication of when to call this versus the closely related add_group_link, update_group_link, delete_group_link or list_group_rules. The agent must infer from the name alone that this is the read path for the group's link set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_group_rulesList group rulesCRead-onlyIdempotentInspect
The rules of a group, numbered as the group shows them.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The one added detail is that rules are "numbered as the group shows them," which tells the agent the response carries display ordering — mildly useful but thin against an absent 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?
One short sentence with no filler, and the resource is front-loaded. It is efficient, though the terseness comes at the cost of information rather than because nothing more was needed.
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, fully annotated read tool this is nearly sufficient, but with no output schema the description never says what a rule looks like (text plus position?) or how many are returned. An agent knows how to call it but not what to expect back.
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 single `group` parameter is fully documented in the schema (100% coverage) including the URL-name example. The description adds nothing beyond that, which is acceptable at high coverage but earns only 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 rules of a group" identifies the resource, but the verb is only carried by the tool name/title, so the description essentially restates the name. It does not distinguish itself from siblings such as add_group_rule, update_group_rule, or delete_group_rule, nor does it say it returns a list.
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 statement of when to use this versus the other rule tools, and no prerequisites mentioned (e.g., that the caller must be a member or admin to view rules). Usage is only inferable from the read-only framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsList groupsARead-onlyIdempotentInspect
Skool groups of your account, with your role (or pending), member count and price.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed-world scope, so the safety profile is fully covered. The description earns credit for disclosing return content — role (or pending state), member count, and price — which tells the agent what data it will get. It does not mention ordering, pagination, or behavior when the account has no groups.
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?
A single economical clause with the most important scope qualifier ('of your account') up front. It is a fragment rather than a full sentence, which reads as telegraphic but wastes nothing.
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 parameterless read tool with rich annotations and no output schema, the description covers purpose, scope, and returned fields. Only minor gaps remain: result ordering and empty-list behavior. No output schema exists, so describing the return payload is genuinely additive here.
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 takes zero parameters, so the schema carries no semantic burden and the baseline is 4. Nothing is missing that the description could supply.
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 the resource ('Skool groups of your account'), which scopes it to the caller's own memberships rather than public discovery. That scope implicitly separates it from discover_groups and search_group, though neither sibling is named. The verb is only implied by the name, not the description text.
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 phrase 'of your account' implies when this tool applies: enumerating the groups you belong to. There is no explicit guidance on when to prefer get_group, discover_groups, or search_group instead, so the routing signal is inferential rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_levelsList levelsARead-onlyIdempotentInspect
The group's 9 levels with their custom titles and how many members reached each.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context by stating that it returns exactly the group’s 9 levels, including custom titles and member counts, which helps the agent understand the response shape even without an 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 a single, efficient sentence that front-loads the returned content. Every part of the sentence contributes useful information without redundancy.
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-only list tool, the definition is complete enough: annotations cover safety behavior, the schema fully documents the required group parameter, and the description explains the returned data. No output schema exists, but the description adequately describes the response contents.
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 required group parameter is fully documented in the schema. The description does not add any parameter-specific detail beyond what the schema already provides, which is appropriate for a one-parameter 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 clearly identifies the resource (a group’s levels) and the returned fields (custom titles and member counts). It is specific about what is listed, but it does not explicitly name a sibling tool or state how it differs from related tools like rename_level or get_leaderboard.
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 explicit guidance on when to use this tool versus alternatives. It implies usage by describing the resource, but it does not mention prerequisites, exclusions, or related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList membersARead-onlyIdempotentInspect
Members of a group with role, level, points and join date, newest first; also banned or churned.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | all, admin, moderator or member. Default: all. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| limit | No | 1 to 30. Default: 30. | |
| cursor | No | Next page cursor from the previous call. | |
| status | No | Which members tab: active (default), banned, churned (left) or cancelling (paid groups). | |
| joined_since | No | Only members who joined on or after this date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, read-only, idempotent operation, so the bar is lower. The description adds useful behavioral context: it discloses the fields returned, that results are ordered newest first, and that banned or churned members are included. It does not mention pagination or rate limits, but the schema covers pagination 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 a single, front-loaded sentence with zero waste. Every phrase—returned fields, ordering, and status inclusion—provides useful information. It is appropriately sized for a list tool with a fully documented 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?
Given the presence of annotations covering safety and a fully described schema, the description is adequate but not complete. It explains the return shape and ordering well, but lacks guidance on when to use this tool instead of search_members or get_member. Adding that usage context would make it more 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 all six parameters are fully documented in the schema itself. The description does not add any meaning beyond what the schema provides for parameters like role, status, or joined_since. Baseline 3 is appropriate when 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 clearly identifies the resource (members of a group) and lists the specific fields returned (role, level, points, join date), along with ordering. It distinguishes the tool from a single-member lookup by implying a list, but does not explicitly differentiate it from siblings like search_members or get_member.
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 by mentioning that it returns members including banned or churned ones, suggesting it's for browsing member lists. However, it does not specify when to use this tool versus search_members or get_member, nor does it give explicit when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membership_requestsList membership requestsARead-onlyIdempotentInspect
Pending requests to join, with each applicant's Membership Questions answers. Admins and moderators only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| limit | No | 1 to 30. Default: 30. | |
| cursor | No | Next page cursor from the previous call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the admin/moderator permission requirement and the fact that applicant answers are included, which is useful behavioral context 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 definition is two short sentences with no filler. The resource scope and permission restriction are both front-loaded and immediately useful.
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 low-complexity list tool with a fully described schema and rich annotations, the description covers the key points: pending join requests, applicant answers, and admin/moderator-only access. Pagination details are left to the schema, which is acceptable given the schema coverage.
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 group, limit, and cursor parameters are already documented in the schema. The description adds no additional parameter meaning, such as pagination behavior, 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 states exactly what resource is returned: pending requests to join, including each applicant's Membership Questions answers. This clearly differentiates it from sibling tools like list_members and the approve/decline membership request actions.
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?
It adds a useful audience restriction, 'Admins and moderators only,' which acts as a prerequisite. However, it does not explicitly say when to use this versus list_members or approve/decline_membership_request, so usage is implied by the resource rather than fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsList notificationsARead-onlyIdempotentInspect
Your Skool notifications: new posts, comments, mentions, likes and approvals, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Only this group's notifications, by URL name. Default: all groups. | |
| limit | No | 1 to 30. Default: 30. | |
| cursor | No | Next page cursor from the previous call. | |
| unread_only | No | Only unread ones. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety is covered. The description adds value with sort ordering ('newest first') and notification categories, but says nothing about pagination semantics or result volume beyond what the schema's limit/cursor fields already imply.
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?
A single compact sentence that front-loads the resource and packs in the content types and sort order with zero filler. Nothing is redundant 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 simple, non-destructive, no-required-parameter list tool with full schema coverage and complete annotations, the description is sufficient. A brief note on pagination or the relationship to mark_notifications_read would make it fully self-contained, but nothing essential 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%, so all four parameters (group, limit, cursor, unread_only) are already documented in the schema with defaults and ranges. The description adds no parameter-level meaning beyond that, which is the expected baseline when 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 names the specific resource (Skool notifications) and enumerates the content types returned (posts, comments, mentions, likes, approvals), plus the ordering (newest first). An agent can immediately tell what it retrieves, though it does not explicitly contrast with siblings like mark_notifications_read.
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 by the description — it's the read-side of notifications — but no when-to-use guidance or alternatives are stated. The closely related sibling mark_notifications_read is not referenced, so the agent must infer the division of labor between listing and marking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_post_likesList post likesCRead-onlyIdempotentInspect
Who liked a post or a comment.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| limit | No | 1 to 100. Default: 50. | |
| post_id | Yes | post_id from list_posts, or comment_id from get_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds no further behavioral context: no mention of pagination, return format, permissions, or how likes are ordered, and the 'post or comment' scope is already covered by the schema's post_id 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 very short and has no wasted words, but it is under-specified rather than usefully concise. It is a sentence fragment with no front-loaded verb or scope statement.
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-only list tool with full schema coverage and clear annotations, the description is minimally adequate. However, with no output schema, it could have mentioned what the listing returns or how results are paginated.
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 fully documents group, limit, and post_id. The description adds nothing beyond the schema, which is the expected baseline when schema coverage is high.
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 fragment 'Who liked a post or a comment' identifies the resource being fetched (likes) but lacks an explicit verb and does not distinguish this tool from siblings such as get_post, like_post, or list_posts. It largely restates the name/title rather than stating a precise action.
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_post, list_posts, or like_post. The only implied usage comes from the schema, which says post_id may be a comment_id from get_post, but the description itself offers 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_postsList postsARead-onlyIdempotentInspect
Posts in a group's feed, pinned first, then newest, with author, category, likes and comment count.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| limit | No | 1 to 30. Default: 20. | |
| since | No | Only posts created after this time (ISO 8601, UTC). | |
| cursor | No | Next page cursor from the previous call. | |
| category | No | Only posts whose category name contains this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the description's job is to add return-value context. It does this well by disclosing sort order and the fields returned (author, category, likes, comment count), which is valuable since there is no output schema. It omits pagination behavior despite the cursor parameter, so it falls short of a 5.
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 a single dense sentence with zero filler, front-loading the resource and ordering before the returned fields. Every clause (ordering, included fields) 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?
With no output schema, the description usefully covers what the listing returns and how it is ordered, and the schema fully covers parameters. The main gap is that pagination (limit/cursor) is never mentioned in the description, which an agent calling a paged list tool would benefit from knowing.
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 (group, limit, since, cursor, category) are already documented in the schema. The description adds no parameter-level detail such as cursor usage or how 'since' interacts with ordering, making the baseline 3 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 states the resource (posts in a group's feed) and its ordering, so an agent can tell this is a feed listing rather than a single-post fetch or a filtered search. It does not explicitly name a sibling alternative or contrast itself with tools like get_post or list_reported_posts, which keeps it from a 5.
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 when-to-use guidance, no mention of when not to use it, and no reference to alternatives such as get_post for a single post or search_group for discovery. The ordering detail ('pinned first, then newest') describes output, not invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reported_postsList reported postsARead-onlyIdempotentInspect
Posts members reported to the admins, waiting for review. Admins and moderators only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add beyond that. It does: it discloses the authorization requirement (admins/moderators) and the state filter ('waiting for review', implying resolved reports are excluded). Ordering, pagination, and volume are still unstated, keeping it short of a 5.
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 short sentences, roughly a dozen words, with the resource and its state front-loaded before the access restriction. Nothing is repeated and nothing is padding.
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 listing tool with full schema documentation and complete annotations, the description covers what it returns (the unreviewed report queue) and who may call it. Missing only operational detail such as pagination or result ordering, which is minor here.
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% for the single 'group' parameter, including an example format, so the schema carries the load. The description adds no meaning about the group argument (scoping, permissions per group, or behavior when the group is invalid), so baseline 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 names the specific resource and scope: posts that members reported and that are still awaiting review, which implicitly separates it from list_posts. It does not explicitly name a sibling or state that it is a listing operation, but combined with the title the purpose is unambiguous.
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?
'Admins and moderators only' gives an access precondition, but there is no explicit statement of when to choose this over list_posts, search_group, or moderation-adjacent siblings, and no exclusions. Usage is inferable from the moderation-queue framing but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_lesson_completeMark lesson completeADestructiveInspect
Mark a lesson done in your own course progress, or undo it.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| completed | No | false marks it not done. Default: true. | |
| lesson_id | Yes | lesson_id from get_course. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond that — that the effect is reversible within the same call — but says nothing about what happens on repeat calls (relevant since idempotentHint=false) or which permissions/enrollment are required for a destructive write.
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?
A single short sentence with no filler, and the primary action is front-loaded ahead of the undo variant. Nothing in it is wasted.
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 three fully documented parameters, a present annotation set, and no output schema, the minimum is met. However, for a destructive, non-idempotent mutation it omits repeat-call behavior, required permissions/enrollment, and any effect on overall course completion state, leaving real gaps an agent could stumble on.
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 three parameters (group, lesson_id, completed) are already documented, including 'false marks it not done. Default: true.' The description's 'or undo it' merely restates the completed=false semantics already in the schema, adding no new format, validation, or sourcing detail.
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 ('mark ... done') and resource ('a lesson'), and scopes it to 'your own course progress,' which implicitly separates it from course-authoring siblings like update_lesson or create_lesson. It stops short of naming an alternative explicitly, so sibling differentiation is by inference rather than by 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?
The phrase 'or undo it' hints that the same tool handles the reverse direction, but there is no explicit when-to-use/when-not guidance, no statement of prerequisites (e.g., enrollment in the course), and no named alternative to compare against. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_notifications_readMark notifications readADestructiveInspect
Mark all your notifications read, everywhere or in one group.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Only this group's, by URL name. Default: all groups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the important behavioral profile: readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds the scope constraint ('everywhere or in one group') but does not explain what 'destructive' means here, whether the action is reversible, or whether it affects other users. With annotations covering the safety flags, this is an acceptable but incomplete addition.
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?
A single front-loaded sentence with zero waste. The scope distinction is stated immediately after the action.
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 one-parameter mutation with full schema coverage and rich annotations, the description is sufficient to select and invoke the tool. Minor gaps remain around effect and reversibility, but the annotation set carries much of that burden.
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 fully documents the single 'group' parameter including its default. The description restates the scope dichotomy but adds no syntax, URL-name format, or other meaning beyond what the schema already provides. 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 states a specific verb and resource ('Mark ... notifications read') and clarifies scope ('everywhere or in one group'). This action is clearly distinct from the sibling read operation list_notifications without needing to compare 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 by the verb: use this when you want notifications marked as read. However, there is no explicit guidance on when to choose this versus alternatives, no prerequisites, and no exclusions. The group default is documented in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_commentPin commentBDestructiveInspect
Pin a comment to the top of a post's comments, or unpin it.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| pinned | No | false unpins. Default: true. | |
| post_id | Yes | post_id the comment is under. | |
| comment_id | Yes | comment_id from get_post. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true; the description adds the important toggle semantic (the same call can remove a pin). It does not explain what gets replaced or dislodged when a second comment is pinned, nor what permissions are required, which is the real remaining gap. No contradiction with 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?
A single tight sentence with the primary action front-loaded and no filler. It is perhaps too terse for a mutation tool, but nothing in it is wasted.
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 4-parameter mutation with full schema documentation, no output schema, and annotations covering the safety profile, the description is minimally adequate. It still omits the state effects an agent should anticipate (single pinned comment per post? visible to all members? error if already pinned?), which matter given idempotentHint=false.
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% — every parameter including the 'pinned' boolean default is documented inline — so the schema carries the semantics. The description adds nothing about parameter values (e.g., that omitting 'pinned' pins rather than unpins), which is the baseline-3 case.
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?
Names a specific verb (pin) plus resource (comment) and adds the inverse operation (unpin), so the effect is unambiguous. The word 'comment' separates it from the sibling pin_post, but the description never names that sibling or any other tool, so differentiation is by noun alone.
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 statement of when to pin versus when to use pin_post, no prerequisites (e.g., author/admin rights on the group), and no note on whether pinning replaces an existing pinned comment. Only 'or unpin it' hints at usage, and that is toggling behavior rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_postPin postADestructiveInspect
Pin a post to the top of the feed (up to 3) or to a Classroom page (up to 12). Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| pinned | No | false unpins. Default: true. | |
| post_id | Yes | post_id from list_posts (not the slug). | |
| course_page_id | No | Pin to this Classroom page instead of the feed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, so the safety burden is partly carried; the description adds genuinely new context in the form of admin permission requirements and capacity limits per target. The main gap is what happens when a limit is hit (error vs. auto-unpin oldest), which matters for a destructive, non-idempotent mutation.
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 compact sentences with zero filler; the primary action and its scope limits are front-loaded before the permission note.
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 4-parameter mutation with no output schema and informative annotations, the description supplies permission model and capacity constraints. It is nearly complete; only cap-exceeded behavior and the effect on already-pinned posts are unstated.
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 every parameter including 'pinned' and 'course_page_id' is already documented in structured data. The description's cap numbers contextualize the target choice but add no syntax, format, or default information beyond the schema, so baseline 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?
States a specific verb (pin) and resource (post) plus the two distinct targets: the feed and a Classroom page. The cap numbers (3 / 12) and the 'Admins only' qualifier further distinguish it from neighbors like pin_comment and follow_post.
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?
'Admins only' gives an explicit prerequisite and the per-target caps tell the agent when the call will be rejected. It stops short of naming an alternative or stating when-not to use it (unpinning is only implied via the schema's 'pinned' flag), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove memberADestructiveInspect
Remove a member from the group, or lift a ban. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| membership_id | Yes | membership_id from list_members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavioral facts: it is admin-restricted and the removal does not take effect immediately because it 'waits for the owner's approval' — an async approval flow the agent would otherwise miss.
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 short sentences, front-loaded with the action, then the permission constraint, then the async caveat. No filler.
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?
Meaningful information for calling it correctly is present: scope of action, admin requirement, the approval delay, and full parameter documentation in the schema. Absence of an output schema is not a gap since the approval-wait behavior is disclosed.
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 both parameters documented including how to obtain membership_id from list_members. The description adds nothing beyond the schema, so the baseline 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?
States a specific verb and resource ('Remove a member from the group') and adds a secondary mode ('or lift a ban') that an agent could not infer from the name. It is distinguishable from siblings like ban_member, though the ban-lifting capability overlaps conceptually with ban_member without clarifying the relationship.
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?
'Admins only' gives a prerequisite, but there is no guidance on when to use this versus ban_member, decline_membership_request, or approve_membership_request — all plausible neighbors in the sibling list. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_levelRename levelADestructiveInspect
Give one of the group's 9 levels its own title. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| level | Yes | Level number, 1 to 9. | |
| title | Yes | The title members see at that level. Empty string: back to the plain name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that the tool is destructive, non-idempotent, and open-world. The description adds the important admin-only constraint, but it does not explain effects on members or existing titles beyond the basic rename semantics already implied.
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 short sentences with zero waste, and the primary action is front-loaded before the admin restriction.
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 mutation tool with complete schema descriptions and annotations covering safety and idempotency, the definition is largely complete. It could be strengthened with explicit routing guidance versus sibling tools, but no critical invocation information 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%, so all three parameters are fully documented in the schema. The description only reinforces the 1-to-9 level scope and title assignment, adding little beyond the structured parameter data.
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 specific action: assigning a custom title to one of a group's 9 membership levels. It is semantically distinct from sibling tools, but it does not explicitly contrast itself with related tools such as list_levels or set_member_role.
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 phrase 'Admins only' usefully states an authorization prerequisite, but the description gives no explicit when-to-use guidance or alternatives. The intended use is implied by the action rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_groupSearch groupBRead-onlyIdempotentInspect
Search a group's posts, members or courses, as its search box does.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | posts (default), members or courses. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| query | Yes | Words to look for. | |
| cursor | No | Next page cursor from the previous call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that results behave like the site's own search box (relevant to query semantics) but says nothing about result ordering, page size, or what the cursor-paginated response looks like.
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?
A single, front-loaded sentence with no filler; it states the scope before the analogy. It is perhaps slightly terse for a tool with three distinct search facets, but nothing is wasted.
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 four parameters, one enum, and no output schema, the description leaves the agent guessing about return shape and pagination behavior (the cursor exists but is never explained in prose) and about how this differs from search_members. Adequate to select the tool, not complete enough to call it confidently.
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 the enum for 'type' and the URL-name format for 'group' fully documented in the schema, so the baseline is 3. The description adds only the general framing that 'query' is interpreted like a search-box string, not a structured filter.
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 (search) and scopes the resource to a group's posts, members, or courses, and the 'as its search box does' phrase tells the agent it mirrors the platform's native search semantics rather than exact-match filtering. It does not, however, differentiate itself from the sibling search_members, which overlaps with the 'members' facet.
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 only implied: the agent can infer this is the tool to use when looking for content inside a single named group. There is no explicit statement of when to prefer it over search_members, list_members, or list_posts, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_membersSearch membersBRead-onlyIdempotentInspect
Find members of a group by name, as the @mention box does.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| limit | No | 1 to 30. Default: 10. | |
| query | Yes | Part of a name or handle. |
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 safety is covered. The description adds that matching is by name similar to an autocomplete mention box, which hints that results are a partial-match shortlist, but it says nothing about pagination or the 30-result ceiling enforced by the limit parameter.
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?
A single front-loaded sentence with no filler, conveying verb, resource, and matching mode. It is arguably too terse for a multi-parameter tool, but not padded.
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, annotated read tool this covers the essentials, but with no output schema the description does not indicate what a result entry looks like (name, handle, id) or that results are capped. A note that it returns member identifiers usable with get_member or invite_members would close the 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 group, query, and limit are all documented in the schema already. The description's 'by name' adds only marginal semantics beyond the schema's 'Part of a name or handle,' 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?
Names a specific verb and resource ('find members of a group by name'), which clearly separates it from mutation siblings like ban_member or remove_member. It does not explicitly contrast with list_members or get_member, so the search-vs-enumerate distinction is left to inference.
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 '@mention box' analogy implies quick partial-name lookup for picking a member, which is useful implied guidance. However, there is no explicit statement of when to use this over list_members or get_member, nor any note about result caps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend messageADestructiveInspect
Send a direct message in Skool Chat to a member, starting a conversation if needed. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Message text. | |
| group | No | Group URL name you share with the member. Default: the first of your groups that works. | |
| member_id | Yes | member_id from list_members, or with.member_id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the safety bar is lower; the description still adds two non-obvious behaviors: it auto-creates a conversation and it 'Waits for the owner's approval.' It does not explain why the action is destructive or whether a message can be retracted, but the approval gate is genuine added value.
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, zero waste, with the core action front-loaded and the behavioral caveat second. Nothing is repeated from the title or 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 3-param mutation with no output schema, the description covers what it does, the auto-conversation behavior, and the approval gate. The main omission is return semantics: an agent can't tell whether the call resolves immediately, returns a pending-approval status, or fails when approval is denied.
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 documents all three parameters, including where member_id comes from and the group default. The description adds no syntax, format, or constraint detail beyond that, so the baseline 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?
States a specific verb and resource ('Send a direct message in Skool Chat to a member') plus scope details (direct message, not a post comment; conversation auto-created). It is clearly distinct from most siblings, though it never names the nearest neighbor (comment_on_post) or set_auto_dm 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?
'starting a conversation if needed' implies when to use it over get_conversation/list_conversations, but only by implication. There is no explicit when-to-use/when-not guidance, no mention of alternatives for reaching members, and no prerequisites beyond the approval note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_auto_dmSet AutoDMADestructiveInspect
Change the welcome message new members get, or turn it on or off. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| enabled | No | Turn the AutoDM on or off. Pro plan only. | |
| message | No | New welcome text. #NAME# and #GROUPNAME# are filled in by Skool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is already covered. The description adds genuinely new behavior: the call is gated on admin privileges and is asynchronous because it queues for owner approval, so the mutation will not be immediately live. It does not spell out that the existing message is replaced.
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 short sentences with the primary action first and the access/approval constraints immediately after. Nothing is padded and nothing is buried.
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 three-parameter mutation with full annotation coverage and a fully described schema, the description supplies the two things structured fields cannot: admin gating and the owner-approval latency. With no output schema, it could say a bit more about what a queued/pending result looks like.
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 every parameter (group, enabled, message) is already documented, including placeholders and Pro-only gating for 'enabled'. The description only mirrors the message/enabled concept and adds no syntax or constraint detail beyond that.
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 concrete verb and resource: changing the AutoDM welcome message new members receive and toggling it on/off. That is specific enough to separate it from get_auto_dm and from other group-setting tools, though it never names the sibling it complements.
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?
"Admins only. Waits for the owner's approval." gives clear preconditions that determine whether an agent can even use the tool successfully. It stops short of naming an alternative (e.g. get_auto_dm to read the current state first) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_course_publishedPublish courseADestructiveInspect
Publish a draft course to members, or turn it back into a draft. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| course_id | Yes | course_id from list_courses or create_course. | |
| published | Yes | true publishes, false turns it back into a draft. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, non-idempotent and open-world, so the safety profile is covered. The description adds two behavioral facts not in structured data: an admin authorization requirement and that the operation 'waits for the owner's approval', implying an asynchronous/approval-gated outcome. It does not say what members see if publishing fails or is pending, which keeps it at 4 rather than 5.
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 short sentences, each carrying distinct information: the action, the permission gate, and the approval caveat. The primary action is front-loaded and nothing is redundant.
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 destructive toggle with no output schema, the description covers action, authorization, and an approval gate, which is enough to call it correctly. It leaves the approval flow ambiguous (whose approval, what the caller sees while pending), which is a modest gap rather than a blocking one.
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 three parameters are documented in-schema, including that published=true publishes and false reverts. The description restates that same semantic but adds no format, constraint, or precedence detail beyond the schema, so baseline 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?
Names a specific verb and resource ('Publish a draft course') and states it is bidirectional ('or turn it back into a draft'), so the agent immediately understands this is a state toggle rather than a creation or listing tool. It is clearly distinguishable from create_course and list_courses in the sibling set.
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?
Says when to use it in both directions (publish a draft / revert to draft) and adds the gate 'Admins only', which is real usage context. It stops short of naming an explicit alternative or stating when not to use it, so it falls just below the top bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_member_roleSet member roleADestructiveInspect
Make a member an admin or moderator, or back to a member. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | admin, moderator or member. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| membership_id | Yes | membership_id from list_members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=false), the description adds two meaningful behavioral facts: the admin-only authorization requirement and that the change is pending owner approval rather than immediate. It still doesn't clarify whether the role takes effect now or only after approval, or what happens to the call's 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?
Two tight sentences with the core action front-loaded and prerequisites trailing. No filler or restatement 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?
For a 3-required-param mutation with no output schema, the description covers the key concerns: authorization and the approval gate. It could go further on the outcome (immediate vs queued) and failure behavior, but nothing critical is absent.
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 enum is fully documented in the schema, so the schema already carries parameter meaning. The description adds no format, constraint, or linkage detail (e.g., that membership_id must come from list_members) beyond what's structured.
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 (set role) and enumerates the exact target roles (admin, moderator, member), making the mutation unambiguous. An agent can distinguish this from remove_member or ban_member 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?
'Admins only' gives a clear permission precondition and 'Waits for the owner's approval' signals an async gated flow. It does not name alternative tools (e.g., ban_member vs demote) or say when not to use it, so it falls 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.
set_post_commentsTurn comments on or offBDestructiveInspect
Turn comments on a post off, or back on.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| enabled | Yes | false turns comments off, true back on. | |
| post_id | Yes | post_id from list_posts (not the slug). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, and readOnlyHint=false. The description merely restates the toggle and does not explain what 'off' does to existing comments, what permissions are required, or whether the change affects already-posted replies.
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 a single, front-loaded sentence with no wasted words. For a simple toggle operation, this is appropriately concise and easy to scan.
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 low-complexity operation, complete input schema, and rich annotations cover most invocation needs. However, the description does not clarify the effect on existing comments or when an agent should choose this over adding or managing individual comments.
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 documents all three parameters, including enabled=false/true semantics and the source of post_id. The description adds no parameter details beyond the schema, 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 uses a specific verb ('Turn comments ... off/on') and resource ('a post'), making it clearly distinct from tools like comment_on_post or pin_comment. It does not explicitly name alternatives, but the operation is unambiguous.
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 versus comment_on_post or other comment-related controls, and there are no stated prerequisites or exclusions. Usage is only implied by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryUpdate categoryADestructiveInspect
Rename a category or change who can post in it and how it sorts. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| sort | No | How the category orders posts. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| category_id | Yes | category_id from list_categories. | |
| who_can_post | No | members or admins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true; the description's value-add is the authorization requirement ('Admins only'), which annotations do not cover. It omits the behavior an agent most needs for a flagged-destructive partial update: that unspecified fields are left untouched, and whether a rename is reversible or fails on duplicate names.
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, no filler, and the functional scope is front-loaded ahead of the permission caveat. Every clause carries distinct 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 destructive, non-idempotent mutation with no output schema, the description covers what changes and who may call it but not the partial-update contract or failure modes. Adequate to select the tool, thin for invoking it safely.
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 five parameters carry descriptions plus two enums, so the schema does the heavy lifting. The description echoes name, who_can_post, and sort without adding format, constraint, or interaction detail (e.g. that category_id comes from list_categories, or that all fields are optional).
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 specific verbs (rename, change permissions, change sorting) against a specific resource (category), which distinguishes it cleanly from create_category, delete_category, and list_categories. It stops short of explicitly naming those siblings or stating scope boundaries, so it lands at clear-but-undifferentiated.
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?
'Admins only' is a real gating condition and the useful hint that only some fields change per call. But it never says when to choose this over update_group_about or rename_level, nor what to do when a category is missing or a name collides — usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_eventUpdate eventADestructiveInspect
Change a calendar event's title, time, place or access. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| start | No | Start, ISO 8601. Without an offset it is read in timezone. | |
| title | No | Event title. | |
| access | No | Who sees it: all members (default), members from min_level up, or a course's members. | |
| event_id | Yes | event_id from list_events. | |
| location | No | The Zoom or Meet link, the address or the URL. | |
| timezone | No | IANA zone the event is shown in, e.g. America/New_York. Default: UTC. | |
| course_id | No | With access course: course_id from list_courses. | |
| min_level | No | With access level. | |
| description | No | What the event is about. | |
| location_type | No | zoom, meet, address or link (default), skool_call or skool_webinar. | |
| duration_minutes | No | Length in minutes. Default: 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety bar is lower. The description still adds two non-obvious facts the annotations cannot convey: the admin requirement and that the write is queued for owner approval rather than applied immediately. It does not state whether omitted optional fields are preserved or cleared, which matters for a destructive 12-parameter update.
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 short sentences, front-loaded with the action, then the two hard constraints. Nothing is wasted and nothing is buried.
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 destructive 12-parameter mutation with no output schema, the essentials are partly there (auth, approval gate), but key questions remain unanswered: whether passing a subset of fields patches or replaces, and whether the change takes effect before or only after the owner approves. Those gaps are material at 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%, including enums for access and location_type, so the baseline is 3. The description's field list (title, time, place, access) roughly mirrors the schema and adds no syntax, defaulting, or partial-update semantics beyond it.
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?
Specific verb ('Change') plus resource ('calendar event') and an enumeration of the mutable fields (title, time, place, access), which cleanly separates it from create_event, delete_event and get_event in the sibling list. It stops short of explicitly naming those siblings or drawing the boundary in words.
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?
'Admins only' is a real usage constraint, so the caller knows the prerequisite. But there is no guidance on when to prefer this over create_event (recreate), get_event (inspect) or delete_event, and no mention of what to do if the event does not exist yet — usage is implied by the CRUD naming only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_group_aboutUpdate group About textADestructiveInspect
Replace the text on the group's About page. Admins only. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| about | Yes | The new About text, replacing the old. Plain text, line breaks kept. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond annotations: the admin restriction and the fact that the change sits pending the owner's approval, which materially affects how an agent should expect the call to behave. It stops short of stating what happens to the old text on rejection or whether the update is reversible.
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 short sentences, zero filler, with the core action front-loaded ahead of the permission and approval constraints. Every sentence carries distinct, 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 two-parameter mutation whose annotations already flag destructive/openWorld behavior and whose schema fully documents inputs, the description covers action, permissions, and the pending-approval state. It could go further on the pending-request lifecycle (e.g., result of approval/rejection), but no output schema exists and the essentials are 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?
Schema description coverage is 100%, with both 'about' (plain text, line breaks kept, replaces old) and 'group' (URL name) fully documented in the schema. The description adds no parameter-level detail beyond that, 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 states a specific verb ('Replace') and resource ('the text on the group's About page'), making the operation unambiguous. The About-page resource is clearly distinct from sibling settings tools like update_group_rule or update_group_link, so an agent can select it 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?
It states a key prerequisite ('Admins only') and the downstream condition ('Waits for the owner's approval'), which implies when and by whom it can be used. However, it offers no explicit guidance on when to use this versus sibling update tools or what to do if the agent lacks admin rights.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_group_linkUpdate group linkADestructiveInspect
Change the text or address of a sidebar link. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Where the link goes. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| label | No | Link text, up to 34 characters. | |
| number | Yes | Link number from list_group_links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description's one contribution beyond that is the admin permission requirement; it omits mutation semantics that matter here, such as whether omitted fields (url or label) are left unchanged or cleared.
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 clipped sentences with no filler; the action and the permission constraint are both front-loaded. Nothing needs trimming.
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 destructive, non-idempotent mutation the description is thin: it doesn't say whether this is a partial update, whether `number` refers to a position that can shift, or what happens on an invalid link number. Rich annotations and full schema coverage keep it at minimum-viable rather than inadequate.
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 including the group-name format and the 34-character label cap are already documented. The description adds only the loose mapping of "text" to label and "address" to url, which earns the baseline but no more.
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?
Names a specific verb ("Change") and resource ("sidebar link") plus the two mutable fields ("text or address"), which is enough to distinguish it from add_group_link and delete_group_link. It does not name those siblings explicitly, but the verb set makes the routing obvious.
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?
"Admins only" gives a real precondition, and the schema's `number` parameter points at list_group_links as the discovery path. However, the description itself states no when/when-not conditions and never tells the agent to list links first or which sibling to use for adding/removing a link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_group_ruleUpdate group ruleADestructiveInspect
Change the title or text of a group rule. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | No | Rule title, up to 30 characters. | |
| number | Yes | Rule number from list_group_rules. | |
| description | No | What the rule means, shown under the title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a destructive, non-idempotent, open-world write operation, so the safety profile is covered. The description adds the auth requirement ('Admins only'), which is genuine value beyond the annotations. It does not explain whether updates overwrite existing title/description or support partial updates, but with annotations carrying the behavioral burden, 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?
Two short sentences with zero waste. The core purpose is front-loaded and the permission constraint follows immediately, making it easy to scan and parse.
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 admin update tool with four fully documented parameters and rich annotations, the description covers the essential purpose and access requirement. The only gap is the already schema-documented lookup step for 'number' and the lack of explicit sibling routing, which are minor given the surrounding structured data.
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 four parameters documented including the note that 'number' comes from list_group_rules. The description mentions 'title or text', which roughly maps to the schema's title/description fields but adds no syntax, format, or optionality details beyond what the schema provides. Baseline 3 is correct.
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 ('Change') and resource ('title or text of a group rule'), which distinguishes it from add_group_rule, delete_group_rule, and list_group_rules. It does not explicitly name sibling tools, but the verb+resource combination is specific enough for an agent to select it correctly.
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 'Admins only' clause provides a useful prerequisite, and the implied context is editing an existing rule. However, there is no explicit guidance on when to use this vs. add_group_rule (new rule) or list_group_rules (finding the rule number), leaving the agent to infer the correct usage from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_lessonUpdate lessonADestructiveInspect
Change a lesson's title, text or video link. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | New text, replacing the old. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | No | New title. | |
| lesson_id | Yes | lesson_id from get_course or create_lesson. | |
| video_url | No | New video link; empty string removes the video. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose that this is a destructive, non-idempotent, open-world mutation. The description adds the admin-only authorization requirement, which is useful, but it does not clarify partial-update behavior, reversibility, or exactly what is overwritten beyond the field names.
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 short sentences, front-loaded with the core action and followed by the authorization constraint. There is no wasted text.
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 update tool with full schema coverage and rich destructive annotations, the description provides enough context to call it correctly. It could still be improved by stating whether omitted fields remain unchanged, but the essential behavior is covered.
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 descriptions explain each parameter, including that an empty video_url removes the video. The tool description only names title, text, and video link and does not add meaningful syntax or 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 description gives a specific verb and resource ("Change a lesson") and enumerates the mutable fields: title, text, and video link. This clearly distinguishes it from siblings such as create_lesson, get_lesson, and mark_lesson_complete.
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 phrase "Admins only" gives an important usage prerequisite and the verb "Change" implies use on an existing lesson rather than creation or retrieval. It does not explicitly name alternatives or state when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_membership_questionUpdate membership questionADestructiveInspect
Change a membership question. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | text (default), email or options (multiple choice, one answer). | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| number | Yes | Question number, from add_membership_question or get_group. | |
| options | No | Up to 4 answers when type is options. | |
| question | Yes | The question, up to 150 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent behavior, so the description only needs to add context beyond that. 'Admins only' usefully discloses an authorization requirement not present in annotations, but the description does not say what gets replaced or whether omitted fields are preserved.
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 short, front-loaded sentences with zero waste. The operation and permission constraint are both stated immediately.
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 is adequate for a well-specified schema and annotated mutation tool, but it leaves open what 'Change' means for unspecified fields and whether options are fully replaced. No output schema exists, so the description could do more to explain return 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?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description adds no additional parameter meaning, which is acceptable but not enriching.
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 ('Change') and resource ('membership question'), which clearly distinguishes it from add_membership_question and delete_membership_question. It does not explicitly name or differentiate from siblings, but the operation is unambiguous.
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?
'Admins only' gives an important permission precondition, but there is no explicit guidance on when to use this instead of add_membership_question or delete_membership_question. The update context is implied by 'Change' but not reinforced with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_postUpdate postADestructiveInspect
Change the title, text or category of a post you wrote, or any post as an admin. Waits for the owner's approval.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | New text, replacing the old. Left out: unchanged. | |
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| title | No | New title. Left out: unchanged. | |
| post_id | Yes | post_id from list_posts (not the slug). | |
| category | No | Move the post to this category, by name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write operation as destructive and open-world. The description adds valuable behavioral context: it waits for the owner's approval and requires admin privilege for others' posts. 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?
Two sentences, front-loaded with the core action and scope, then the approval behavior. No wasted words; every sentence adds 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?
Given the annotations cover safety and schema fully describes parameters, the description includes the critical approval workflow. It could clarify what happens during approval (e.g., immediate rejection or synchronous wait), but it is largely complete for correct 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 coverage is 100%, so all parameters are fully documented in the schema. The description lists the updatable fields but adds no new semantic details beyond what the schema already provides, meeting the baseline 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 states a specific verb (change) and the resource fields (title, text, category) for a post, with clear scope: 'a post you wrote, or any post as an admin'. This distinguishes it from create_post and delete_post without needing to open 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?
It gives a clear usage context by specifying who can update (owner or admin), but it does not explicitly compare to alternatives like create_post or delete_post. However, the scope statement is sufficient to guide correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_on_pollVote on pollADestructiveInspect
Vote in a post's poll, change your vote, or take it back.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group URL name, e.g. 'yourgroup' for skool.com/yourgroup. | |
| option | Yes | Answer number, 1 for the first. 0 takes your vote back. | |
| post_id | Yes | post_id or slug of the post with the poll. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true; the description usefully clarifies why — votes can be replaced or withdrawn, so repeat calls mutate prior state. It says nothing about membership/auth requirements, whether the poll must be open, or what a successful call returns, which is a real gap given destructiveHint.
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?
A single 12-word sentence with the primary action front-loaded and the two secondary modes trailing. No filler, nothing repeated from 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 simple 3-required-param tool with full schema coverage and a complete annotation set, the description is enough to call it correctly. It is not enough to predict outcomes — no output schema exists and the description doesn't say whether results are returned, so the agent cannot anticipate the response.
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 itself explains option=0 as vote retraction as well as the post_id/slug and group-URL forms. The description adds no parameter meaning beyond that, so the baseline 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 names a specific verb (vote) and resource (a post's poll) and covers all three modes — cast, change, retract — in one clause. It does not name the obvious sibling get_poll_results, so an agent must infer the read/write split from names alone.
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 by 'Vote in a post's poll', and the retract case is spelled out in the description and schema. There is no explicit when-to-use-vs-alternative guidance (e.g. 'to see results instead, use get_poll_results'), so routing is left to inference.
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.
89 tool updates
- First observed
add_group_link - First observed
add_group_rule - First observed
add_membership_question - First observed
approve_membership_request - First observed
ban_member - First observed
comment_on_post - First observed
cotlet_apps - First observed
cotlet_balance - First observed
cotlet_browser_click - First observed
cotlet_browser_close - First observed
cotlet_browser_connect - First observed
cotlet_browser_navigate - First observed
cotlet_browser_open - First observed
cotlet_browser_press - First observed
cotlet_browser_read - First observed
cotlet_browser_screenshot - First observed
cotlet_browser_scroll - First observed
cotlet_browser_select - First observed
cotlet_browser_sessions - First observed
cotlet_browser_type - First observed
cotlet_browser_upload - First observed
cotlet_get_call - First observed
cotlet_report_issue - First observed
cotlet_request_apps - First observed
cotlet_upload_file - First observed
cotlet_whoami - First observed
create_category - First observed
create_course - First observed
create_event - First observed
create_lesson - First observed
create_post - First observed
decline_membership_request - First observed
delete_category - First observed
delete_event - First observed
delete_group_link - First observed
delete_group_rule - First observed
delete_membership_question - First observed
delete_post - First observed
discover_groups - First observed
follow_post - First observed
get_auto_dm - First observed
get_conversation - First observed
get_course - First observed
get_event - First observed
get_group - First observed
get_group_stats - First observed
get_leaderboard - First observed
get_lesson - First observed
get_member - First observed
get_poll_results - First observed
get_post - First observed
invite_members - First observed
like_post - First observed
list_categories - First observed
list_conversations - First observed
list_courses - First observed
list_events - First observed
list_group_links - First observed
list_group_rules - First observed
list_groups - First observed
list_levels - First observed
list_members - First observed
list_membership_requests - First observed
list_notifications - First observed
list_post_likes - First observed
list_posts - First observed
list_reported_posts - First observed
mark_lesson_complete - First observed
mark_notifications_read - First observed
pin_comment - First observed
pin_post - First observed
remove_member - First observed
rename_level - First observed
search_group - First observed
search_members - First observed
send_message - First observed
set_auto_dm - First observed
set_course_published - First observed
set_member_role - First observed
set_post_comments - First observed
update_category - First observed
update_event - First observed
update_group_about - First observed
update_group_link - First observed
update_group_rule - First observed
update_lesson - First observed
update_membership_question - First observed
update_post - First observed
vote_on_poll
Related MCP Connectors
Manage your digital business: members, website, discussions, events, courses, payments, and more.
Runs your Instagram, Facebook, TikTok, YouTube and Google Business: posts, DMs, comments, reviews.
- beehiivOAuthcom.beehiiv
Manage beehiiv newsletters, posts, podcasts, community, subscribers, and analytics.
Schedule, generate and publish social posts to X, LinkedIn, Instagram, Threads and YouTube
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to manage Skool.com communities, posts, comments, member approvals, classroom courses, lessons, and authenticated HTTP requests.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server to read and operate your Skool community (calendar, feed, posts, members) and publish posts/comments with confirmation, using your own authenticated session.1MIT
- FlicenseAqualityDmaintenanceMCP server for Skool.com communities. Enables listing/approving members, posting, commenting, and managing courses.14-
- AlicenseAqualityBmaintenanceGives Claude access to your Skool community, enabling reading and writing posts, comments, members, classroom content, and DMs using your own login.13MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.