goteamup
Server Details
Check classes, attendance, customers, memberships and invoices in TeamUp and register customers.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 20 tools
Most tools target clearly distinct resource+action pairs (attendances vs events vs invoices vs venues). The one soft spot is the trio list_memberships (products sold), list_customer_memberships and get_customer_membership (memberships held), which could be momentarily confused, though the descriptions do distinguish them well.
Every tool follows the same goteamup_verb_noun snake_case pattern (list_*, get_*, create_*, register_*, unregister_*, confirm_*, log_*). No camelCase mixing or verb-style drift.
20 tools is on the heavy side of the ideal 3-15 range, but each maps to a distinct resource or action in a fairly broad booking/CRM domain, so the count is defensible rather than bloated.
Strong read coverage plus key write actions (create customer, register/unregister, confirm attendance, log interaction), but create is paired with no update/delete for customers or memberships, and no create/edit for events or membership products — notable gaps for a booking/CRM surface.
Available Tools
20 toolsgoteamup_confirm_attendanceCheck a customer inBDestructiveInspect
Confirm that a customer attended an event (check them in). Returns the updated attendance. TeamUp: POST /events/{id}/confirm_attendance.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | The customer's numeric id. | |
| event_id | Yes | The event's numeric id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as destructiveHint=true, so the agent knows it mutates state; the description adds the return value ('Returns the updated attendance') and the underlying endpoint, which is genuinely useful given there is no output schema. It stops short of explaining why a check-in is flagged destructive, whether it is reversible (e.g., via unregister), or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clauses plus an endpoint reference, front-loaded with the action and its plain-language synonym. Every element earns its place; only the trailing API path is arguably 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 two-parameter mutation with no output schema, the description covers the action and the return value, but the destructiveHint is left unexplained and there is no note on prerequisites, idempotency, or reversibility. Adequate but with clear gaps for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% - both event_id and customer are documented as numeric ids in the schema - so the description adds nothing about parameters. Baseline 3 applies when the schema carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('confirm that a customer attended an event') and even clarifies with the synonym 'check them in', so an agent immediately knows this marks attendance rather than merely reading it. It does not, however, explicitly contrast itself with the sibling tools register_customer_for_event or unregister_customer_from_event, which all touch the same event/customer pair.
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: nothing tells the agent that this applies after a customer attended (vs. registering them beforehand), nor when to prefer it over the similar-sounding register/unregister siblings. The parenthetical '(check them in)' implies context but does not state conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_create_customerCreate (invite) a customerADestructiveInspect
Add a new customer to the business as staff. By default TeamUp emails them an invitation to claim the profile; set send_invitation_email=false to add them silently. TeamUp: POST /customers.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address (used for the invitation). | ||
| last_name | Yes | Last name. | |
| first_name | Yes | First name. | |
| invitation_note | No | A personal note included in the invitation email. | |
| send_invitation_email | No | Send the invitation email (TeamUp default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only annotation is destructiveHint=true, which is a weak safety signal for an additive create. The description usefully discloses the side effect that an invitation email is sent by default and how to suppress it, plus the endpoint. It stops short of stating auth/permission needs or whether the created profile is immediately active.
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, then the default behavior, then the endpoint. No filler; every clause carries 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 create tool with no output schema, the description covers the action, the primary side effect, and the opt-out. It leaves unspecified whether a customer identifier is returned and whether email is required for the invitation path, minor gaps given the rich 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 coverage is already 100%, so the schema documents each field. The description still adds interpretive value by explaining the default and the effect of send_invitation_email=false ("add them silently"), clarifying intent beyond the schema's terse "TeamUp default: true."
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 new customer"), reveals it is created "as staff," and even names the underlying endpoint (POST /customers). This is clearly distinguishable from siblings like get_customer and list_customers.
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?
Explains the default behavior (invitation email sent) and how to override it (send_invitation_email=false for silent add), which is the key decision an agent faces when calling this tool. It does not, however, name sibling alternatives or state when this is preferable to register_customer_for_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_get_authenticated_applicationGet the authenticated applicationARead-onlyInspect
Show the API application this token belongs to and the businesses (providers) it can reach, with their numeric ids — a cheap way to confirm the token works and to find the value for GOTEAMUP_PROVIDER_ID. TeamUp: GET /auth/application.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already signals a safe read, and the description adds useful context beyond the annotation: it defines what is returned (application + reachable businesses with numeric ids) and frames it as a cheap token-validity check. It stops short of documenting error/auth-failure behavior, which would earn 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 dense sentence that front-loads the return content before the practical use cases, plus the underlying endpoint. Every clause earns its place and nothing is 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 zero-argument, zero-output-schema tool, this covers everything the agent needs: what it returns, why to call it, and the underlying TeamUp endpoint. There is no meaningful 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?
The tool takes zero parameters, so the schema-baseline of 4 applies. There is nothing to disambiguate, and the description correctly implies no input is required.
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 ('Show') and resource ('the API application this token belongs to and the businesses (providers) it can reach'), with concrete outputs (numeric ids). No sibling tool does anything remotely similar, so the agent can distinguish it immediately.
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 clear when-to-use reasons: confirm the token works and find the value for GOTEAMUP_PROVIDER_ID. It doesn't name an alternative, but among the listed siblings there is no substitute for this introspection call, so guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_get_customerGet one customerARead-onlyInspect
Fetch one customer by id: name, email, family role, lead flag, CRM status, created date. Use expand for deferred fields, e.g. field_values,credit_balance,staff_assignments. TeamUp: GET /customers/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| customer_id | Yes | The customer's numeric id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context about which fields are returned by default versus deferred (field_values, credit_balance, staff_assignments reachable via expand), but offers nothing on auth, rate limits, or error 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?
Two tight sentences, front-loaded with the verb and resource, followed by the expand hint and the underlying endpoint. No filler, though the trailing 'TeamUp: GET /customers/{id}' is marginally redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-resource fetch with annotation coverage, a fully described param schema, and no output schema, the definition is nearly complete. Enumerating the default returned fields compensates for the missing output schema, leaving only error/not-found behavior 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%, so all three parameters are already documented; baseline is 3. The description adds marginal value by naming concrete expand targets (field_values, credit_balance, staff_assignments) as deferred fields, but no syntax or format details 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 (Fetch) plus resource scope (one customer by id), and it enumerates the key returned fields (name, email, family role, lead flag, CRM status, created date). It is clearly distinguishable from the sibling goteamup_list_customers (one vs many).
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 conditional instruction for 'expand' to retrieve deferred fields, which is useful actionable guidance. However, it never states when to prefer this tool over goteamup_list_customers or goteamup_get_customer_membership, so the alternative-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_get_customer_membershipGet one customer membershipARead-onlyInspect
Fetch one customer membership by id. Use expand=usage_summary,next_billing_date,shared_with for usage, next bill and sharing. TeamUp: GET /customer_memberships/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| customer_membership_id | Yes | The customer membership's numeric id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the burden is lower. The description adds the endpoint and the expand hint but says nothing about error behavior for a missing id or what the returned object contains. Adequate but thin beyond the annotation.
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 one actionable hint. No filler or repetition 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 single-resource read with no output schema, the description covers the identifier, the expand mechanism, and the backing endpoint well enough to call it correctly. It could mention that a nonexistent id returns an error, 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 coverage is 100%, so the baseline is 3, and the description genuinely adds value by naming concrete expand values (usage_summary, next_billing_date, shared_with) that the schema only illustrates generically. It does not document the 'fields' parameter, so it stops short of a 5.
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 ('Fetch one customer membership by id') and even cites the underlying HTTP endpoint. The word 'one' plus the required id parameter cleanly distinguishes it from the sibling goteamup_list_customer_memberships.
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 tells the agent when to use specific expand values ('for usage, next bill and sharing'), which is useful, but never states when to use this tool versus the list variant or what happens when the id is unknown. Usage is implied by 'by id' rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_get_eventGet one eventARead-onlyInspect
Fetch one class or appointment by id, including capacity, attending/waiting counts, registration open/close and late-cancel deadlines. TeamUp: GET /events/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| event_id | Yes | The event's numeric id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context by enumerating what the record contains — capacity, attending/waiting counts, registration and late-cancel deadlines — and by mapping to the underlying GET /events/{id} endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus an endpoint reference, front-loaded with the verb and resource. Every clause earns its place by telling the agent what the returned record includes.
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 partially compensates by listing the notable returned fields, and the schema fully covers the inputs. It does not specify error behavior for an unknown id, which is a minor residual 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 event_id, expand, and fields are all documented in the schema itself. The description adds nothing about expand/fields syntax, 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 ('Fetch') and resource ('one class or appointment by id'), and the phrase 'by id' immediately separates it from the sibling goteamup_list_events. The included resource detail (capacity, counts, deadlines) sharpens the purpose beyond a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by id' — fetch one entity when you have its id rather than listing. However, no sibling alternative (e.g. goteamup_list_events) is named and no exclusions or prerequisites are given, so the agent must infer when this is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_get_invoiceGet one invoiceARead-onlyInspect
Fetch one invoice by id. Use expand=line_items,charges,discounts,taxes,applied_credits for the breakdown. TeamUp: GET /invoices/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| invoice_id | Yes | The invoice's numeric id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe non-mutating read, so the description carries a lower burden. It adds the endpoint path but discloses nothing beyond annotations such as error behavior for missing ids or whether expansions affect payload size.
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 most actionable parameter tip and the endpoint. 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?
For a read-only single-resource fetch with no output schema, the description covers purpose, the id requirement, and the useful expand set. It could note return shape or not-found behavior, but nothing critical 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%, so the baseline is 3, but the description adds genuine value by naming the concrete invoice-specific expand values (line_items, charges, discounts, taxes, applied_credits) that the generic schema example does not provide.
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 with scope ('Fetch one invoice by id'), which cleanly distinguishes it from the sibling goteamup_list_invoices. The API endpoint reference reinforces the exact resource addressed.
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 practical hint about which expand values are useful for invoices, but never states when to use this single-fetch tool versus goteamup_list_invoices or other lookups. Usage is only implied by the word 'one'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_attendancesList attendances (bookings)ARead-onlyInspect
List bookings: who is registered for, attended, no-showed or late-cancelled which event, and with which customer membership. Filter by customer, event, venue, offering type, status or event start window. Use expand=customer,event for names. TeamUp: GET /attendances.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Ordering; '-' for descending. | |
| event | No | Only these event ids. | |
| venue | No | Only these venue ids. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Attendance status; plans_to_attend = registered or waitlisted. | |
| customer | No | Only these customer ids. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| offering_types | No | Only these offering type ids. | |
| event_starts_at_gte | No | Only attendances for events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). | |
| event_starts_at_lte | No | Only attendances for events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the description only needs to add beyond that. It adds useful context that status values include registration, attendance, no-show and late-cancel states and that expansion is available, but says nothing about pagination limits or result volume, even though the tool returns a paginated list.
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, front-loaded with what a booking record is before listing filters. The middle clause ('who is registered for, attended, no-showed or late-cancelled which event') is slightly convoluted but still compact and information-dense rather than 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 12-param read-only list tool with no output schema and full schema coverage, the description supplies the conceptual framing (what a booking is), the filter vocabulary, and the expand tip. The main omission is any hint about pagination behavior or typical result size, but the schema covers the page/page_size mechanics.
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 one of the 12 parameters is already documented in the schema. The description slightly reinforces the filterable fields and highlights the expand convention, but adds no syntax or format detail beyond what the schema provides, 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 ('List bookings') and immediately enumerates what each record contains: attendance status, event, and customer membership. This is clearly distinguishable from siblings like goteamup_get_event or goteamup_list_events, which return event data rather than per-customer attendance records.
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 filter axes (customer, event, venue, offering type, status, event start window) and a concrete tip to use expand=customer,event for names, which is actionable invocation guidance. However, it never states when to prefer this over alternatives such as goteamup_get_customer_membership or per-event lookups, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_crm_interactionsList CRM interactionsARead-onlyInspect
List logged CRM interactions (calls, emails, meetings, contacted) with notes and who logged them, optionally for one customer. Requires a super_admin-level token. TeamUp: GET /crm/interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| customer | No | Only interactions for this customer id. | |
| page_size | No | Results per page, 1-100 (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, so the bar is lower, and the description adds real context beyond it: an authorization requirement (super_admin-level token) and the shape of the payload (notes, who logged them). It does not mention pagination behavior or result ordering, but the auth disclosure is the kind of pre-flight constraint 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?
Two short sentences, front-loaded with the resource and its contents, then the two practical constraints (filter, auth). Slightly redundant to repeat 'TeamUp: GET /crm/interactions' since the name already implies it, but nothing wastes meaning.
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 return-value burden and does so by naming the interaction types and the included metadata. Combined with the auth requirement and the fully covered input schema, an agent has enough to call it correctly; only pagination/ordering semantics are left 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 description coverage is 100%, so page, page_size, expand and fields are already fully documented with formats and bounds. The description's only parameter-level addition is glossing the customer filter, which merely restates the schema's own text. Baseline 3 is correct 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?
States a specific verb (List) and resource (logged CRM interactions) and even enumerates the interaction types (calls, emails, meetings, contacted), so the agent knows exactly what comes back. It does not explicitly name the write counterpart (goteamup_log_crm_interaction), but 'logged' plus the list verb clearly separates reads from that sibling.
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?
Adds one useful usage cue — 'optionally for one customer' — signaling the customer filter is the only narrowable dimension. However it gives no explicit when-to-use vs the log_crm_interaction sibling or other list tools, and the super_admin prerequisite is stated only as a requirement, not a decision rule. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_customer_membershipsList customer membershipsARead-onlyInspect
List memberships held by customers — status (active, hold, complete, cancelled), start/expiration/renewal dates, billed price, active hold. Filter by customer, membership plan, type, status, dates or holds. TeamUp: GET /customer_memberships.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Only these customer membership ids. | |
| page | No | Page number, starting at 1. | |
| sort | No | Ordering; '-' for descending. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Customer membership status. | |
| customer | No | Only these customer ids. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| membership | No | Only these membership (plan) ids. | |
| start_date_gte | No | Start date on or after (date, YYYY-MM-DD). | |
| start_date_lte | No | Start date on or before (date, YYYY-MM-DD). | |
| has_active_hold | No | Only memberships with (true) or without (false) a current or upcoming hold. | |
| membership_type | No | Membership type. | |
| expiration_date_gte | No | Expiration date on or after (date, YYYY-MM-DD). | |
| expiration_date_lte | No | Expiration date on or before (date, YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read, so the bar is lower. The description adds the underlying endpoint (GET /customer_memberships) and the returned field set (status, dates, billed price, active hold), which is useful context, but says nothing about pagination behavior or how the default 100-per-page interacts with filtering.
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 front-load the returned fields and filter options, then close with the API endpoint. No filler, though the parenthetical status enumeration duplicates the schema enum rather than adding 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?
For a rich 15-parameter read tool with full schema coverage and no output schema, the description covers what is returned (statuses, dates, billed price, hold state) and what can be filtered. It is close to complete; only pagination/return-shape behavior is left to the 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 the schema already documents all 15 parameters, including the status enum and date bounds. The description's filter list ('customer, membership plan, type, status, dates or holds') only restates those parameters at a higher level without adding format or constraint 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 ('List memberships held by customers') with clear scope. It implies a distinction from plan-level listings, but never names the sibling tools goteamup_list_memberships or goteamup_get_customer_membership, so differentiation depends on 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 description enumerates filterable dimensions (customer, membership plan, type, status, dates, holds), which implies the contexts in which the tool is useful, but it gives no explicit when-to-use, when-not, or alternative-tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_customersList customersARead-onlyInspect
Search and list the business's customers (members and leads). Filter by free text (email and name), CRM status, active memberships, age or family. Deferred fields such as field_values, credit_balance or sms_account can be added with expand. TeamUp: GET /customers.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Only these customer ids. | |
| page | No | Page number, starting at 1. | |
| query | No | Free-text match against email and name. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| family | No | Only customers in this family id. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | CRM status slugs, as shown in a customer's `status` field; pass 'null' for customers without a status. | |
| age_gte | No | Minimum age in years. | |
| age_lte | No | Maximum age in years. | |
| deleted | No | Filter by deleted (true) or not deleted (false). | |
| page_size | No | Results per page, 1-100 (default 100). | |
| autocomplete | No | Prefix match from the start of email and name fields. | |
| active_memberships | No | Only customers holding one of these membership (plan) ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes that this is a safe read, and the description usefully discloses that some fields (field_values, credit_balance, sms_account) are deferred and require expand. It does not, however, mention pagination behavior, defaults, or result volume despite being a list endpoint with page/page_size.
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: purpose, filter inventory, and the expand caveat, front-loaded with the core purpose. Efficient, though the endpoint reference (TeamUp: GET /customers) is of limited value to an agent choosing a tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter read-only list tool with a full schema and no output schema, the description covers purpose, filter taxonomy, and deferred fields adequately. The notable omission is pagination behavior, which the agent must infer from the schema 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%, so all 13 parameters are already documented in the schema, setting the baseline at 3. The description's mapping of filters to categories and its note on expand adds only marginal value 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?
States a specific verb combination (search and list) and resource (business's customers, clarifying members and leads), plus enumerates the filter dimensions. An agent can easily distinguish this from the singular get_customer or the write-oriented create_customer sibling.
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 'search and list' framing and the filter inventory, but it never states when to prefer this over get_customer (single lookup) or how it relates to siblings like list_customer_memberships. No explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_eventsList events (classes and appointments)ARead-onlyInspect
List scheduled sessions — classes and appointments — with start/end time, status, capacity, attending and waitlist counts, instructors, venue and offering type. Filter by time window, instructor, venue, offering type, status or occupancy. TeamUp: GET /events.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Only these event ids. | |
| page | No | Page number, starting at 1. | |
| sort | No | Ordering; '-' for descending. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Event status. | |
| venues | No | Only events at these venue ids. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| ends_at_gte | No | Only events ending at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). | |
| ends_at_lte | No | Only events ending at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). | |
| instructors | No | Only events taught by these instructor ids ('me' for your own). | |
| starts_at_gte | No | Only events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). | |
| starts_at_lte | No | Only events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). | |
| offering_types | No | Only events of these offering type (class type) ids. | |
| occupancy_status | No | Only events matching at least one of these occupancy states. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the underlying endpoint (TeamUp: GET /events) and the shape of returned data, which is useful context, but says nothing about pagination behavior, default page size, or how expand/fields affect the payload — details that matter for a 15-parameter list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core purpose and return fields front-loaded. The second sentence is a dense enumeration of filter dimensions, which is slightly hard to scan but still earns its space.
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 15-parameter, zero-required read tool with no output schema, the description usefully previews the returned fields and the filter surface, and annotations cover safety. It stops short of explaining pagination defaults or expand/fields interplay, but that gap is modest given the thorough 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 every parameter (ids, page, sort, expand, fields, status, venues, instructors, starts/ends bounds, occupancy_status, page_size) is already documented in the schema. The description merely restates the filter categories without adding format, default, or interaction semantics beyond what is 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 (list) and resource (scheduled sessions — classes and appointments), and enumerates the returned fields (time, status, capacity, counts, instructors, venue). An agent can distinguish it from the sibling goteamup_get_event (single event) and goteamup_list_attendances without opening either 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 second sentence lists the filterable dimensions (time window, instructor, venue, offering type, status, occupancy), which implies when the tool is useful, but it never states when to prefer it over goteamup_get_event or goteamup_list_attendances, nor mentions exclusions or prerequisites. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_instructorsList instructorsARead-onlyInspect
List the business's instructors (coaches, trainers) with name, bio and linked staff id. TeamUp: GET /instructors.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| query | No | Free-text match on the instructor. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| page_size | No | Results per page, 1-100 (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the returned field set (name, bio, linked staff id), which is modest but real added value; it says nothing about pagination behavior or scoping beyond what annotations and schema carry.
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 return shape, with the upstream endpoint noted compactly. 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?
For a read-only list tool with fully documented params and an existing readOnlyHint, the description covers purpose and returned fields adequately. Only minor gaps remain, such as pagination expectations, but nothing critical is missing 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 page, query, expand, fields and page_size are all documented in the schema itself. The description adds no syntax or format detail 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?
States a specific verb (List) and resource (business's instructors), and clarifies the domain synonyms (coaches, trainers) plus the fields returned. No sibling tool covers instructors, so differentiation 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?
The description gives no when-to-use guidance, prerequisites, or alternatives. Listing is implied by the verb, but there is no statement about when this is the right call versus, say, goteamup_get_authenticated_application or other lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_invoicesList invoicesARead-onlyInspect
List invoices with status (open, paid, failed, voided, upcoming, …), due date, amount due, payer and receipt URL. Filter by status or a customer membership. TeamUp: GET /invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Ordering; '-' for descending. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Invoice status. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| customer_membership | No | Only invoices for this customer membership id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read, so the bar is lower. The description adds worthwhile context by listing the returned fields (status, due date, amount due, payer, receipt URL) and the upstream endpoint, but says nothing about pagination behavior despite page/page_size 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?
One dense sentence plus an endpoint reference, front-loaded on the resource and returned data. No filler, though the field enumeration is slightly list-heavy for a tool whose return shape could be inferred.
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's field listing usefully covers what comes back, and all seven optional params are covered by the schema. Missing only pagination guidance and an explicit pointer to the single-invoice sibling.
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 only echoes the status values (with a truncated list versus the schema's full enum) and the membership filter, 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?
States a specific verb+resource ('List invoices') and enumerates the returned fields and supported filters, which is more than a restatement of the name. It implies but never explicitly says how it differs from the singular goteamup_get_invoice sibling, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent the two filter dimensions (status, customer membership), which implies when the tool is useful, but offers no when-not conditions, prerequisites, or named alternative such as get_invoice for a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_membershipsList memberships (plans)ARead-onlyInspect
List the membership products the business sells — packs, recurring and prepaid plans — with price, duration, allotment, active member count and visibility. TeamUp: GET /memberships.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| for_sale | No | Only memberships currently for sale (true) or not (false). | |
| is_dropin | No | Filter drop-in memberships. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| name_contains | No | Only memberships whose name contains this text. | |
| visible_to_customers | No | Filter by customer visibility. | |
| permits_registration_for_event | No | Only memberships that can be used to book this event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered by structured data. The description still adds value by naming the fields the listing returns (price, duration, allotment, active member count, visibility) and by clarifying these are sellable products, not customer subscriptions. It stops short of mentioning pagination behavior, which the schema covers instead.
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 front-loads the resource, its subtypes and its returned fields, followed by a short API endpoint reference. Zero filler; every clause carries 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 usefully enumerates the returned fields, and the schema fully covers all 9 filter/pagination parameters. The only real gap is the absence of usage routing against the closely named sibling list_customer_memberships, which would matter for an agent choosing between the two.
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 one of the 9 parameters is documented in the schema itself, including the expand/fields syntax and the for_sale, is_dropin and permits_registration_for_event filters. The description adds no parameter semantics 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 ('List') and resource ('the membership products the business sells') and enumerates the subtypes — packs, recurring and prepaid plans — plus the fields returned. An agent can infer this is the product catalog rather than a customer's owned memberships, but the description never explicitly contrasts itself with goteamup_list_customer_memberships, so sibling differentiation is left implicit.
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 or when-not-to-use guidance and no mention of the obvious alternative (goteamup_list_customer_memberships) or of the filter conditions under which this tool is preferred. The agent must infer usage purely from the resource noun.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_offering_typesList offering types (class types)ARead-onlyInspect
List offering types — the kinds of classes, appointments and courses the business runs — with schedule type, drop-in price, age limits, visibility and status. TeamUp: GET /offering_types.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Ordering; '-' for descending. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Offering type status. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| name_contains | No | Only offering types whose name contains this text. | |
| has_active_sessions | No | Only offering types with upcoming active sessions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read nature is covered. The description adds the returned attribute set (schedule type, price, age limits, visibility, status) and the underlying endpoint, which is useful context but says nothing about pagination defaults or result volume.
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 that front-loads the entity and its definition, followed by the attribute set and endpoint mapping. 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?
With no output schema, the description partially compensates by enumerating what each offering type record contains. It does not cover pagination behavior or the default page_size, but for an optional-filter list endpoint this is close to sufficient.
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 8 parameters documented in the schema, so the baseline is 3. The description's field list describes returned data rather than adding meaning to filters like name_contains, status, or has_active_sessions.
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 ('List offering types') and immediately defines the domain term for an agent unfamiliar with TeamUp ('the kinds of classes, appointments and courses the business runs'). This disambiguates it from siblings like list_events and list_memberships.
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 nature of a catalog-listing tool, but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative when the agent actually needs session instances (list_events) rather than the offering definitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_list_venuesList venuesARead-onlyInspect
List the business's venues (physical locations and online venues) with address, timezone and rooms. TeamUp: GET /venues.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| expand | No | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. | |
| fields | No | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. | |
| status | No | Venue status. | |
| page_size | No | Results per page, 1-100 (default 100). | |
| has_active_sessions | No | Only venues with non-cancelled sessions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds useful scope context (includes online venues, returns address/timezone/rooms) but says nothing about pagination behavior (default page size 100, max 100) or how many venues to expect, which matters for a paginated list.
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 scope; the trailing "TeamUp: GET /venues" is mildly useful for mapping to the underlying API but is otherwise 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?
With no output schema, the description compensates by naming the key returned attributes (address, timezone, rooms) and the venue kinds covered. It is close to complete for a read-only list tool whose parameters are fully documented in the schema, though pagination semantics are not mentioned.
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 page, page_size, fields, expand, status and has_active_sessions are fully documented in the schema. The description contributes no additional parameter meaning, 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+resource ("List the business's venues") and scopes it by clarifying that both physical locations and online venues are included, plus the returned attributes. It is unambiguous among siblings, though it does not explicitly name a contrasting 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?
No explicit when-to-use or when-not-to-use guidance is given; the tool's role is only implied by its name and the parenthetical scope. For a straightforward list-all endpoint this is adequate but leaves the agent to infer that it is the entry point for discovering venue IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_log_crm_interactionLog a CRM interactionADestructiveInspect
Record a call, email, meeting or contact with a customer or lead, with an optional note and call outcome. Requires a super_admin-level token. TeamUp: POST /crm/interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Free-text notes about the interaction. | |
| customer | Yes | The customer's numeric id. | |
| call_outcome | No | Outcome — only for interaction_type=Call. | |
| interaction_type | Yes | Kind of interaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare destructiveHint=true, and the description adds genuine value beyond that by disclosing the super_admin token requirement. However, it says nothing about side effects (record visibility, whether an existing interaction is overwritten) or the response shape for what is a write operation.
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, front-loaded with the action and resource, with optional fields and the auth prerequisite following. The trailing 'TeamUp: POST /crm/interactions' is marginally useful endpoint metadata but borders on 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 four-parameter write tool with no output schema and only a destructiveHint annotation, the description covers the action, the optional fields, the interaction vocabulary, and the token requirement. It is nearly sufficient; only side-effect and response behavior are left 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 description coverage is 100%, so all four parameters (customer, interaction_type, note, call_outcome) are already fully documented in the schema, including the enum values and the 'only for interaction_type=Call' constraint. The description merely summarizes note and call outcome, 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 ('Record') and resource ('call, email, meeting or contact with a customer or lead'), with the optional fields named. It is clearly distinguishable from the sibling goteamup_list_crm_interactions by verb contrast, though it never names that sibling 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?
The description states a prerequisite ('Requires a super_admin-level token'), which is useful context, but it gives no explicit when-to-use/when-not guidance or comparison to alternatives such as the list or create_customer tools. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_register_customer_for_eventBook a customer into an eventADestructiveInspect
Register a customer for a class or appointment, optionally using a specific customer membership, or comped (free). Returns the attendance id. Undo with goteamup_unregister_customer_from_event. TeamUp: POST /events/{id}/register.
| Name | Required | Description | Default |
|---|---|---|---|
| comped | No | Book as comped (no membership use / charge). Default false. | |
| customer | Yes | The customer's numeric id. | |
| event_id | Yes | The event's numeric id. | |
| customer_membership | No | The customer membership id to book with (omit to let TeamUp choose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation flags this as a mutating operation, and the description adds value beyond it: it discloses the returned attendance id, the reversal path, and the underlying TeamUp endpoint. It still doesn't say what a failed/duplicate booking does or whether a membership gets consumed/charged explicitly, but the coverage is solid.
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 covering purpose, options, return value, undo tool, and endpoint — front-loaded and waste-free. The endpoint tail is slightly extraneous for an agent but harmless.
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-param mutation tool with no output schema, the description covers what matters: what it does, the two booking modes, and the returned id. Prerequisite/auth conditions and duplicate-booking behavior are the only meaningful 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 coverage is 100%, so all four parameters already carry descriptions including the 'omit to let TeamUp choose' behavior for customer_membership. The description only restates the comped/membership semantics rather than adding syntax or constraints 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+resource ('Register a customer for a class or appointment') and clarifies the two booking modes (membership-backed vs comped). It also names the undo counterpart, goteamup_unregister_customer_from_event, so an agent can tell the two apart without opening 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?
Explains what the optional paths mean (use a specific membership, or book comped/free) and points to the undo tool. It does not, however, state prerequisites (e.g., that the customer must already exist or the event must be bookable) or when to prefer this over sibling listing/attendance tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goteamup_unregister_customer_from_eventRemove a customer from an eventADestructiveInspect
Cancel a customer's booking for a class or appointment. is_late_cancel=true records it as a LATE cancel, which can trigger the business's penalty rules — leave it unset unless asked. The response says whether it counted as late. TeamUp: POST /events/{id}/unregister.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | The customer's numeric id. | |
| event_id | Yes | The event's numeric id. | |
| is_late_cancel | No | Record as a late cancellation (may incur penalties). Omit unless explicitly requested. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful behavioral context beyond annotations: destructive/side-effect warning about penalty triggers from late cancel, plus note that the response indicates whether it counted as late. Annotations already mark destructiveHint=true, but description enriches with consequence awareness.
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: purpose, key parameter caveat, return value hint, API path. Front-loaded. 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?
For a 3-param mutation with annotations covering destructiveness and full schema coverage, this is complete. Minor gap: no output schema, but description notes the response reports late-cancel status, so the agent knows what to check.
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 parameters are already documented. The description echoes and contextualizes is_late_cancel with consequence framing, but adds no syntax or format 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?
Clear specific verb+resource: 'Cancel a customer's booking for a class or appointment.' Distinguishes from sibling goteamup_register_customer_for_event by directly opposing it, and the API endpoint reference (POST /events/{id}/unregister) anchors it.
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?
Provides a clear conditional instruction for is_late_cancel ('leave it unset unless asked'). No explicit when-not to use the tool itself or alternatives, but context is strong enough to route correctly.
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.
20 tool updates
- First observed
goteamup_confirm_attendance - First observed
goteamup_create_customer - First observed
goteamup_get_authenticated_application - First observed
goteamup_get_customer - First observed
goteamup_get_customer_membership - First observed
goteamup_get_event - First observed
goteamup_get_invoice - First observed
goteamup_list_attendances - First observed
goteamup_list_crm_interactions - First observed
goteamup_list_customer_memberships - First observed
goteamup_list_customers - First observed
goteamup_list_events - First observed
goteamup_list_instructors - First observed
goteamup_list_invoices - First observed
goteamup_list_memberships - First observed
goteamup_list_offering_types - First observed
goteamup_list_venues - First observed
goteamup_log_crm_interaction - First observed
goteamup_register_customer_for_event - First observed
goteamup_unregister_customer_from_event
Related MCP Connectors
Read Mindbody classes, schedules, clients, staff and sales; book clients and appointments.
201Look up Momence members, class schedules, bookings and memberships, and handle front-desk actions.
231Check Bookeo availability and manage bookings, holds and customers; read payments.
211Look up members, events, registrations, invoices and payments, and add contacts or check in guests.
211
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query and manage Altea Active memberships through natural language, including schedules, spot availability, instructor sessions, bookings, cancellations, and waitlists.MIT
- AlicenseAqualityCmaintenanceLets Claude, ChatGPT and other MCP clients read a Bookwhen account's public booking data, including events (classes, courses, workshops), ticket types with availability and cost, locations, class passes, leaders and attachments. It is read-only, so it can never modify data or expose attendee or booking records.9MIT
- AlicenseAqualityAmaintenanceEnables read-only reconciliation and member/billing queries against a gym SQLite database through typed domain tools, allowing natural-language interaction from Claude.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage gym operations for ABC Evo/W12, including members, plans, sales, receivables, check-ins, classes, and prospect CRM through read/write MCP tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.