Teachworks MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.7.3 · published by io.usefulapi
Read Teachworks students, families, tutors, lessons, invoices and payments; book lessons.
24 tools: 5 can delete or cancel things and 19 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads19Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http teachworks https://teachworks.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
24 tools
Deletes or cancels 5Claude Code: deny
teachworks_add_student_to_lessonWRITE: add a student to an existing lesson (the lesson must still be Scheduled).No findings
Why it is in this group
- The name "teachworks_add_student_to_lesson" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a student to an existing lesson (the lesson must still be Scheduled). PUT /lessons/{id}/add_student.
Annotations the server declares
- title: Add student to lesson
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
teachworks_create_child_studentWRITE: create a child student under an existing family (the family is billed for their lessons).No findings
Why it is in this group
- The name "teachworks_create_child_student" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a child student under an existing family (the family is billed for their lessons). POST /students.
Annotations the server declares
- title: Create child student
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
teachworks_create_familyWRITE: create a family customer (the billed parent profile that child students belong to).No findings
Why it is in this group
- The name "teachworks_create_family" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a family customer (the billed parent profile that child students belong to). Add children afterwards with teachworks_create_child_student. POST /customers/family.
Annotations the server declares
- title: Create family
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
teachworks_create_lessonWRITE: schedule a single lesson on the calendar for one or more students with a teacher, service and location.No findings
Why it is in this group
- The name "teachworks_create_lesson" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: schedule a single lesson on the calendar for one or more students with a teacher, service and location. Check teachworks_list_availabilities and teachworks_list_lessons first to avoid conflicts. POST /lessons.
Annotations the server declares
- title: Create lesson
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
teachworks_create_paymentWRITE: record a payment received from a customer (bookkeeping only — it does not charge a card).No findings
Why it is in this group
- The name "teachworks_create_payment" says "create": a word for a change.
- The name "teachworks_create_payment" also says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: record a payment received from a customer (bookkeeping only — it does not charge a card). POST /payments.
Annotations the server declares
- title: Record payment
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Only reads 19Claude Code: allow
teachworks_get_customerRetrieve one customer (family or independent student) with contact details and custom fields.No findings
Why it is in this group
- The name "teachworks_get_customer" says "get": a word for reading.
Description, as the server wrote it Retrieve one customer (family or independent student) with contact details and custom fields. GET /customers/{id}.
Annotations the server declares
- title: Get customer
- readOnlyHint: true
teachworks_get_employeeRetrieve one employee (teacher or staff): contact details, subjects, wage type, bio, permissions.No findings
Why it is in this group
- The name "teachworks_get_employee" says "get": a word for reading.
Description, as the server wrote it Retrieve one employee (teacher or staff): contact details, subjects, wage type, bio, permissions. GET /employees/{id}.
Annotations the server declares
- title: Get employee
- readOnlyHint: true
teachworks_get_employee_earningsTotal earnings of one employee (lessons, other events, other compensation, total) for an optional lesson status and date range.No findings
Why it is in this group
- The name "teachworks_get_employee_earnings" says "get": a word for reading.
Description, as the server wrote it Total earnings of one employee (lessons, other events, other compensation, total) for an optional lesson status and date range. GET /employees/{id}/earnings.
Annotations the server declares
- title: Get employee earnings
- readOnlyHint: true
teachworks_get_invoiceRetrieve one invoice with its line items (lessons, charges), taxes and totals.No findings
Why it is in this group
- The name "teachworks_get_invoice" says "get": a word for reading.
Description, as the server wrote it Retrieve one invoice with its line items (lessons, charges), taxes and totals. GET /invoices/{id}.
Annotations the server declares
- title: Get invoice
- readOnlyHint: true
teachworks_get_lessonRetrieve one lesson with its participants (students, statuses, charges, notes), teacher, wage and cost.No findings
Why it is in this group
- The name "teachworks_get_lesson" says "get": a word for reading.
Description, as the server wrote it Retrieve one lesson with its participants (students, statuses, charges, notes), teacher, wage and cost. GET /lessons/{id}.
Annotations the server declares
- title: Get lesson
- readOnlyHint: true
teachworks_get_lesson_totalsLesson totals for one student, customer or employee: count (default), duration in minutes, or (employees only) earnings, broken down by status, for an optional status and date rang…No findings
Why it is in this group
- The name "teachworks_get_lesson_totals" says "get": a word for reading.
Description, as the server wrote it Lesson totals for one student, customer or employee: count (default), duration in minutes, or (employees only) earnings, broken down by status, for an optional status and date range. GET /{students|customers|employees}/{id}/lesson_totals.
Annotations the server declares
- title: Get lesson totals
- readOnlyHint: true
teachworks_get_paymentRetrieve one payment with its refunds and the invoices it is allocated to.No findings
Why it is in this group
- The name "teachworks_get_payment" says "get": a word for reading.
Description, as the server wrote it Retrieve one payment with its refunds and the invoices it is allocated to. GET /payments/{id}.
Annotations the server declares
- title: Get payment
- readOnlyHint: true
teachworks_get_studentRetrieve one student profile: contact details, school/grade, billing, custom fields, default teachers/services.No findings
Why it is in this group
- The name "teachworks_get_student" says "get": a word for reading.
Description, as the server wrote it Retrieve one student profile: contact details, school/grade, billing, custom fields, default teachers/services. GET /students/{id}.
Annotations the server declares
- title: Get student
- readOnlyHint: true
teachworks_list_availabilitiesList teachers' weekly availability slots (day of week + start/end time).No findings
Why it is in this group
- The name "teachworks_list_availabilities" says "list": a word for reading.
Description, as the server wrote it List teachers' weekly availability slots (day of week + start/end time). Use before scheduling a lesson. GET /availabilities.
Annotations the server declares
- title: List teacher availability
- readOnlyHint: true
teachworks_list_customersList or search customers — the billed profiles: families (with child students) and independent students.No findings
Why it is in this group
- The name "teachworks_list_customers" says "list": a word for reading.
Description, as the server wrote it List or search customers — the billed profiles: families (with child students) and independent students. Returns contact details, status and last invoice date. GET /customers.
Annotations the server declares
- title: List customers
- readOnlyHint: true
teachworks_list_employeesList or search employees — teachers/tutors and administrative staff — with subjects, status and wage settings.No findings
Why it is in this group
- The name "teachworks_list_employees" says "list": a word for reading.
Description, as the server wrote it List or search employees — teachers/tutors and administrative staff — with subjects, status and wage settings. GET /employees.
Annotations the server declares
- title: List employees
- readOnlyHint: true
teachworks_list_invoicesList invoices with customer, number, dates, status (Saved, Approved, Paid, Void) and totals.No findings
Why it is in this group
- The name "teachworks_list_invoices" says "list": a word for reading.
Description, as the server wrote it List invoices with customer, number, dates, status (Saved, Approved, Paid, Void) and totals. Filter by customer, status, invoice date or due date range. GET /invoices.
Annotations the server declares
- title: List invoices
- readOnlyHint: true
teachworks_list_lessonsList lessons (the calendar) with teacher, service, location, start/end, duration, status and participants.No findings
Why it is in this group
- The name "teachworks_list_lessons" says "list": a word for reading.
Description, as the server wrote it List lessons (the calendar) with teacher, service, location, start/end, duration, status and participants. Filter by teacher, student, location, service, status and date range. GET /lessons.
Annotations the server declares
- title: List lessons
- readOnlyHint: true
teachworks_list_locationsList locations and sub-locations (rooms) where lessons take place.No findings
Why it is in this group
- The name "teachworks_list_locations" says "list": a word for reading.
Description, as the server wrote it List locations and sub-locations (rooms) where lessons take place. GET /locations.
Annotations the server declares
- title: List locations
- readOnlyHint: true
teachworks_list_other_eventsList non-lesson calendar events (meetings, open houses, staff work) with location, times and participants.No findings
Why it is in this group
- The name "teachworks_list_other_events" says "list": a word for reading.
Description, as the server wrote it List non-lesson calendar events (meetings, open houses, staff work) with location, times and participants. GET /other_events.
Annotations the server declares
- title: List other events
- readOnlyHint: true
teachworks_list_paymentsList customer payments (amount, method, date, refunds, invoice allocations).No findings
Why it is in this group
- The name "teachworks_list_payments" says "list": a word for reading.
Description, as the server wrote it List customer payments (amount, method, date, refunds, invoice allocations). Filter by customer and date range. GET /payments.
Annotations the server declares
- title: List payments
- readOnlyHint: true
teachworks_list_servicesList services (lesson types such as 'Math Tutoring') with their default cost and wage.No findings
Why it is in this group
- The name "teachworks_list_services" says "list": a word for reading.
Description, as the server wrote it List services (lesson types such as 'Math Tutoring') with their default cost and wage. GET /services.
Annotations the server declares
- title: List services
- readOnlyHint: true
teachworks_list_studentsList or search students (child students of families and independent students) with their school, grade, subjects, status, billing method and default teachers.No findings
Why it is in this group
- The name "teachworks_list_students" says "list": a word for reading.
Description, as the server wrote it List or search students (child students of families and independent students) with their school, grade, subjects, status, billing method and default teachers. GET /students.
Annotations the server declares
- title: List students
- readOnlyHint: true
teachworks_list_subjectsList standard subjects (used on student and teacher profiles).No findings
Why it is in this group
- The name "teachworks_list_subjects" says "list": a word for reading.
Description, as the server wrote it List standard subjects (used on student and teacher profiles). GET /subjects.
Annotations the server declares
- title: List subjects
- 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.7.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http teachworks https://teachworks.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__teachworks__teachworks_list_students",
"mcp__teachworks__teachworks_get_student",
"mcp__teachworks__teachworks_list_customers",
"mcp__teachworks__teachworks_get_customer",
"mcp__teachworks__teachworks_list_employees",
"mcp__teachworks__teachworks_get_employee",
"mcp__teachworks__teachworks_get_employee_earnings",
"mcp__teachworks__teachworks_get_lesson_totals",
"mcp__teachworks__teachworks_list_lessons",
"mcp__teachworks__teachworks_get_lesson",
"mcp__teachworks__teachworks_list_other_events",
"mcp__teachworks__teachworks_list_availabilities",
"mcp__teachworks__teachworks_list_invoices",
"mcp__teachworks__teachworks_get_invoice",
"mcp__teachworks__teachworks_list_payments",
"mcp__teachworks__teachworks_get_payment",
"mcp__teachworks__teachworks_list_locations",
"mcp__teachworks__teachworks_list_services",
"mcp__teachworks__teachworks_list_subjects"
],
"ask": [],
"deny": [
"mcp__teachworks__teachworks_create_family",
"mcp__teachworks__teachworks_create_child_student",
"mcp__teachworks__teachworks_create_lesson",
"mcp__teachworks__teachworks_add_student_to_lesson",
"mcp__teachworks__teachworks_create_payment"
]
}
}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 teachworks. Review it before you use it.