Skip to content

TeamUp MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Check classes, attendance, customers, memberships and invoices in TeamUp and register customers.

Deletes · 5

20 tools: 5 can delete or cancel things and 15 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http goteamup https://goteamup.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "goteamup_log_crm_interaction" destructive (destructiveHint: true), and its name says "log", a word for reading.

    Matched text

    annotations: {"destructiveHint":true}; The name "goteamup_log_crm_interaction" says "log": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Deletes or cancels 5Claude Code: deny
  • goteamup_confirm_attendanceConfirm that a customer attended an event (check them in).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Confirm that a customer attended an event (check them in). Returns the updated attendance. TeamUp: POST /events/{id}/confirm_attendance.

    Annotations the server declares

    • title: Check a customer in
    • destructiveHint: true
  • goteamup_create_customerAdd a new customer to the business as staff.No findings

    Why it is in this group

    • The name "goteamup_create_customer" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create (invite) a customer
    • destructiveHint: true
  • goteamup_log_crm_interactionRecord a call, email, meeting or contact with a customer or lead, with an optional note and call outcome.1 finding

    Why it is in this group

    • The name "goteamup_log_crm_interaction" says "log": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "goteamup_log_crm_interaction" destructive (destructiveHint: true), and its name says "log", a word for reading.

      Matched text

      annotations: {"destructiveHint":true}; The name "goteamup_log_crm_interaction" says "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Log a CRM interaction
    • destructiveHint: true
  • goteamup_register_customer_for_eventRegister a customer for a class or appointment, optionally using a specific customer membership, or comped (free).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Book a customer into an event
    • destructiveHint: true
  • goteamup_unregister_customer_from_eventCancel a customer's booking for a class or appointment.No findings

    Why it is in this group

    • The description's first verb is "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Remove a customer from an event
    • destructiveHint: true
Only reads 15Claude Code: allow
  • goteamup_get_authenticated_applicationShow 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 fo…No findings

    Why it is in this group

    • The name "goteamup_get_authenticated_application" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get the authenticated application
    • readOnlyHint: true
  • goteamup_get_customerFetch one customer by id: name, email, family role, lead flag, CRM status, created date.No findings

    Why it is in this group

    • The name "goteamup_get_customer" says "get": a word for reading.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get one customer
    • readOnlyHint: true
  • goteamup_get_customer_membershipFetch one customer membership by id.No findings

    Why it is in this group

    • The name "goteamup_get_customer_membership" says "get": a word for reading.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get one customer membership
    • readOnlyHint: true
  • goteamup_get_eventFetch one class or appointment by id, including capacity, attending/waiting counts, registration open/close and late-cancel deadlines.No findings

    Why it is in this group

    • The name "goteamup_get_event" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one class or appointment by id, including capacity, attending/waiting counts, registration open/close and late-cancel deadlines. TeamUp: GET /events/{id}.

    Annotations the server declares

    • title: Get one event
    • readOnlyHint: true
  • goteamup_get_invoiceFetch one invoice by id.No findings

    Why it is in this group

    • The name "goteamup_get_invoice" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one invoice by id. Use expand=line_items,charges,discounts,taxes,applied_credits for the breakdown. TeamUp: GET /invoices/{id}.

    Annotations the server declares

    • title: Get one invoice
    • readOnlyHint: true
  • goteamup_list_attendancesList bookings: who is registered for, attended, no-showed or late-cancelled which event, and with which customer membership.No findings

    Why it is in this group

    • The name "goteamup_list_attendances" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List attendances (bookings)
    • readOnlyHint: true
  • goteamup_list_crm_interactionsList logged CRM interactions (calls, emails, meetings, contacted) with notes and who logged them, optionally for one customer.No findings

    Why it is in this group

    • The name "goteamup_list_crm_interactions" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List CRM interactions
    • readOnlyHint: true
  • goteamup_list_customer_membershipsList memberships held by customers — status (active, hold, complete, cancelled), start/expiration/renewal dates, billed price, active hold.No findings

    Why it is in this group

    • The name "goteamup_list_customer_memberships" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List customer memberships
    • readOnlyHint: true
  • goteamup_list_customersSearch and list the business's customers (members and leads).No findings

    Why it is in this group

    • The name "goteamup_list_customers" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List customers
    • readOnlyHint: true
  • goteamup_list_eventsList scheduled sessions — classes and appointments — with start/end time, status, capacity, attending and waitlist counts, instructors, venue and offering type.No findings

    Why it is in this group

    • The name "goteamup_list_events" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List events (classes and appointments)
    • readOnlyHint: true
  • goteamup_list_instructorsList the business's instructors (coaches, trainers) with name, bio and linked staff id.No findings

    Why it is in this group

    • The name "goteamup_list_instructors" says "list": a word for reading.
    Description, as the server wrote it
    List the business's instructors (coaches, trainers) with name, bio and linked staff id. TeamUp: GET /instructors.

    Annotations the server declares

    • title: List instructors
    • readOnlyHint: true
  • goteamup_list_invoicesList invoices with status (open, paid, failed, voided, upcoming, …), due date, amount due, payer and receipt URL.No findings

    Why it is in this group

    • The name "goteamup_list_invoices" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List invoices
    • readOnlyHint: true
  • goteamup_list_membershipsList the membership products the business sells — packs, recurring and prepaid plans — with price, duration, allotment, active member count and visibility.No findings

    Why it is in this group

    • The name "goteamup_list_memberships" says "list": a word for reading.
    Description, as the server wrote it
    List the membership products the business sells — packs, recurring and prepaid plans — with price, duration, allotment, active member count and visibility. TeamUp: GET /memberships.

    Annotations the server declares

    • title: List memberships (plans)
    • readOnlyHint: true
  • goteamup_list_offering_typesList offering types — the kinds of classes, appointments and courses the business runs — with schedule type, drop-in price, age limits, visibility and status.No findings

    Why it is in this group

    • The name "goteamup_list_offering_types" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List offering types (class types)
    • readOnlyHint: true
  • goteamup_list_venuesList the business's venues (physical locations and online venues) with address, timezone and rooms.No findings

    Why it is in this group

    • The name "goteamup_list_venues" says "list": a word for reading.
    Description, as the server wrote it
    List the business's venues (physical locations and online venues) with address, timezone and rooms. TeamUp: GET /venues.

    Annotations the server declares

    • title: List venues
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http goteamup https://goteamup.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__goteamup__goteamup_get_authenticated_application",
      "mcp__goteamup__goteamup_list_customers",
      "mcp__goteamup__goteamup_get_customer",
      "mcp__goteamup__goteamup_list_events",
      "mcp__goteamup__goteamup_get_event",
      "mcp__goteamup__goteamup_list_attendances",
      "mcp__goteamup__goteamup_list_customer_memberships",
      "mcp__goteamup__goteamup_get_customer_membership",
      "mcp__goteamup__goteamup_list_memberships",
      "mcp__goteamup__goteamup_list_offering_types",
      "mcp__goteamup__goteamup_list_instructors",
      "mcp__goteamup__goteamup_list_venues",
      "mcp__goteamup__goteamup_list_invoices",
      "mcp__goteamup__goteamup_get_invoice",
      "mcp__goteamup__goteamup_list_crm_interactions"
    ],
    "ask": [],
    "deny": [
      "mcp__goteamup__goteamup_create_customer",
      "mcp__goteamup__goteamup_register_customer_for_event",
      "mcp__goteamup__goteamup_unregister_customer_from_event",
      "mcp__goteamup__goteamup_confirm_attendance",
      "mcp__goteamup__goteamup_log_crm_interaction"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as goteamup. Review it before you use it.