Teachworks MCP by usefulapi

Read Teachworks students, families, tutors, lessons, invoices and payments; book lessons.

我該用這個嗎

品質與安全性

A
說明品質
97%
結構描述完整度
85%
命名品質
78%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(3)

  • LOWTool 'teachworks_get_employee_earnings' name length outside 3-30 range在 teachworks_get_employee_earnings 中
  • LOWTool 'teachworks_create_child_student' name length outside 3-30 range在 teachworks_create_child_student 中
  • LOWTool 'teachworks_add_student_to_lesson' name length outside 3-30 range在 teachworks_add_student_to_lesson 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~6,621Token(工具定義)
~2.4 KB典型回應大小
顯著的注意力影響(128k 上下文的 5.17%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "teachworks": {
      "url": "https://teachworks.usefulapi.io/mcp"
    }
  }
}

遠端端點

https://teachworks.usefulapi.io/mcpstreamable-http

它能做什麼

工具清單

工具(24)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢teachworks_list_students(customer_id, first_name, last_name, email, phone_number, ...)

List or search students (child students of families and independent students) with their school, grade, subjects, status, billing method and default teachers. GET /students.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Only students of this customer/family id.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "first_name": {
      "description": "Search by first name.",
      "type": "string"
    },
    "last_name": {
      "description": "Search by last name.",
      "type": "string"
    },
    "email": {
      "description": "Search by email.",
      "type": "string"
    },
    "phone_number": {
      "description": "Search by phone number.",
      "type": "string"
    },
    "school": {
      "description": "Search by school.",
      "type": "string"
    },
    "grade": {
      "description": "Search by grade.",
      "type": "string"
    },
    "subject": {
      "description": "Search by subject.",
      "type": "string"
    },
    "type": {
      "description": "family = child students, independent = independent students.",
      "type": "string",
      "enum": [
        "family",
        "independent"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "Active",
        "Inactive",
        "Prospective"
      ]
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_student(student_id)

Retrieve one student profile: contact details, school/grade, billing, custom fields, default teachers/services. GET /students/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "student_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Student id."
    }
  },
  "required": [
    "student_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_customers(first_name, last_name, email, phone_number, city, ...)

List or search customers — the billed profiles: families (with child students) and independent students. Returns contact details, status and last invoice date. GET /customers.

輸入結構描述

{
  "type": "object",
  "properties": {
    "first_name": {
      "description": "Search by first name.",
      "type": "string"
    },
    "last_name": {
      "description": "Search by last name.",
      "type": "string"
    },
    "email": {
      "description": "Search by email.",
      "type": "string"
    },
    "phone_number": {
      "description": "Search by phone number.",
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "type": {
      "description": "family or independent.",
      "type": "string",
      "enum": [
        "family",
        "independent"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "Active",
        "Inactive",
        "Prospective"
      ]
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_customer(customer_id)

Retrieve one customer (family or independent student) with contact details and custom fields. GET /customers/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_employees(first_name, last_name, email, city, state, ...)

List or search employees — teachers/tutors and administrative staff — with subjects, status and wage settings. GET /employees.

輸入結構描述

{
  "type": "object",
  "properties": {
    "first_name": {
      "description": "Search by first name.",
      "type": "string"
    },
    "last_name": {
      "description": "Search by last name.",
      "type": "string"
    },
    "email": {
      "description": "Search by email.",
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "Active",
        "Inactive",
        "Prospective"
      ]
    },
    "subject": {
      "description": "Search by subject taught.",
      "type": "string"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_employee(employee_id)

Retrieve one employee (teacher or staff): contact details, subjects, wage type, bio, permissions. GET /employees/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Employee id."
    }
  },
  "required": [
    "employee_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_employee_earnings(employee_id, status, date_from, date_to)

Total earnings of one employee (lessons, other events, other compensation, total) for an optional lesson status and date range. GET /employees/{id}/earnings.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Employee id."
    },
    "status": {
      "description": "Only lessons with this status.",
      "type": "string",
      "enum": [
        "Scheduled",
        "Attended",
        "Cancelled",
        "Missed"
      ]
    },
    "date_from": {
      "description": "Lessons starting on or after this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Lessons starting on or before this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "employee_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_lesson_totals(kind, id, measure, status, date_from, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "student",
        "customer",
        "employee"
      ],
      "description": "Whose lessons to total."
    },
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "The student, customer or employee id."
    },
    "measure": {
      "description": "count (default), duration (minutes) or earnings (employees only).",
      "type": "string",
      "enum": [
        "count",
        "duration",
        "earnings"
      ]
    },
    "status": {
      "description": "Only lessons with this status.",
      "type": "string",
      "enum": [
        "Scheduled",
        "Attended",
        "Cancelled",
        "Missed"
      ]
    },
    "date_from": {
      "description": "Lessons starting on or after this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Lessons starting on or before this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "kind",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_lessons(employee_id, student_id, location_id, location_or_parent_location_id, service_id, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "description": "Only lessons taught by this teacher (employee id).",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "student_id": {
      "description": "Only lessons with this student.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "location_id": {
      "description": "Only lessons at this location (exact).",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "location_or_parent_location_id": {
      "description": "Lessons at this location or any of its sub-locations.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "service_id": {
      "description": "Only lessons of this service.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "series_id": {
      "description": "Only lessons of this repeating series.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "name": {
      "description": "Search by lesson name.",
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "Scheduled",
        "Attended",
        "Cancelled",
        "Missed"
      ]
    },
    "custom_status": {
      "description": "Search by custom status (Custom Statuses add-on).",
      "type": "string"
    },
    "from_date": {
      "description": "Lessons starting on exactly this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_from": {
      "description": "Lessons starting on or after this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Lessons starting on or before this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "joinable": {
      "description": "true = only lessons marked joinable.",
      "type": "boolean"
    },
    "include_deleted": {
      "description": "true = include deleted lessons.",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_lesson(lesson_id)

Retrieve one lesson with its participants (students, statuses, charges, notes), teacher, wage and cost. GET /lessons/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lesson_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Lesson id."
    }
  },
  "required": [
    "lesson_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_other_events(employee_id, location_id, series_id, from_date, date_from, ...)

List non-lesson calendar events (meetings, open houses, staff work) with location, times and participants. GET /other_events.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "description": "Only events of this employee.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "location_id": {
      "description": "Only events at this location.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "series_id": {
      "description": "Only events of this repeating series.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "from_date": {
      "description": "Events starting on exactly this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_from": {
      "description": "Events starting on or after this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Events starting on or before this date.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_availabilities(employee_id, day, page, per_page, direction)

List teachers' weekly availability slots (day of week + start/end time). Use before scheduling a lesson. GET /availabilities.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "description": "Only this teacher's availability.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "day": {
      "description": "Day of week, Sunday = 0 … Saturday = 6.",
      "type": "integer",
      "minimum": 0,
      "maximum": 6
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_invoices(customer_id, number, status, date_from, date_to, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Only invoices of this customer.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "number": {
      "description": "Invoice number.",
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "string"
        }
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "Saved",
        "Approved",
        "Paid",
        "Void"
      ]
    },
    "date_from": {
      "description": "Invoice date on or after.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Invoice date on or before.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "due_from": {
      "description": "Due date on or after.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "due_to": {
      "description": "Due date on or before (e.g. today, to find overdue invoices together with status Approved).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_invoice(invoice_id)

Retrieve one invoice with its line items (lessons, charges), taxes and totals. GET /invoices/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Invoice id."
    }
  },
  "required": [
    "invoice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_payments(customer_id, date_from, date_to, page, per_page, ...)

List customer payments (amount, method, date, refunds, invoice allocations). Filter by customer and date range. GET /payments.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Only payments of this customer.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "date_from": {
      "description": "Payment date on or after.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Payment date on or before.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_get_payment(payment_id)

Retrieve one payment with its refunds and the invoices it is allocated to. GET /payments/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "payment_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Payment id."
    }
  },
  "required": [
    "payment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_locations(name, page, per_page, direction)

List locations and sub-locations (rooms) where lessons take place. GET /locations.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Search by name.",
      "type": "string"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_services(name, page, per_page, direction)

List services (lesson types such as 'Math Tutoring') with their default cost and wage. GET /services.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Search by name.",
      "type": "string"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢teachworks_list_subjects(name, page, per_page, direction)

List standard subjects (used on student and teacher profiles). GET /subjects.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Search by name (partial match).",
      "type": "string"
    },
    "page": {
      "description": "Page number (1-based, default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Records per page (default 20, max 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "direction": {
      "description": "Sort by id ascending (default) or descending (newest first).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴teachworks_create_family(first_name, last_name, email, mobile_phone, home_phone, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "minLength": 1,
      "description": "Parent first name(s), e.g. 'Frank & Tina'."
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "description": "Family last name."
    },
    "email": {
      "description": "Primary email (notifications, user account).",
      "type": "string"
    },
    "mobile_phone": {
      "type": "string"
    },
    "home_phone": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "status": {
      "description": "Defaults to Active; use Prospective for leads.",
      "type": "string",
      "enum": [
        "Active",
        "Inactive",
        "Prospective"
      ]
    },
    "additional_notes": {
      "type": "string"
    }
  },
  "required": [
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴teachworks_create_child_student(customer_id, first_name, last_name, email, mobile_phone, ...)

WRITE: create a child student under an existing family (the family is billed for their lessons). POST /students.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "The family (customer) id the student belongs to."
    },
    "first_name": {
      "type": "string",
      "minLength": 1
    },
    "last_name": {
      "type": "string",
      "minLength": 1
    },
    "email": {
      "type": "string"
    },
    "mobile_phone": {
      "type": "string"
    },
    "school": {
      "type": "string"
    },
    "grade": {
      "type": "string"
    },
    "birth_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "status": {
      "type": "string",
      "enum": [
        "Active",
        "Inactive",
        "Prospective"
      ]
    },
    "default_location_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "default_teacher_ids": {
      "description": "Default teacher (employee) ids.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "string",
            "pattern": "^\\d+$"
          }
        ]
      }
    },
    "default_service_ids": {
      "description": "Default service ids.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "string",
            "pattern": "^\\d+$"
          }
        ]
      }
    },
    "standard_subject_ids": {
      "description": "Subject ids.",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "string",
            "pattern": "^\\d+$"
          }
        ]
      }
    },
    "additional_notes": {
      "type": "string"
    }
  },
  "required": [
    "customer_id",
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴teachworks_create_lesson(employee_id, student_ids, service_id, location_id, from_date, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "employee_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Teacher (employee) id."
    },
    "student_ids": {
      "minItems": 1,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          {
            "type": "string",
            "pattern": "^\\d+$"
          }
        ]
      },
      "description": "Student ids attending."
    },
    "service_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Service id (sets the default cost and wage)."
    },
    "location_id": {
      "description": "Location id.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ]
    },
    "from_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date."
    },
    "from_time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}(:\\d{2})?$",
      "description": "Start time, e.g. 16:00."
    },
    "to_date": {
      "description": "End date (defaults to from_date).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to_time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}(:\\d{2})?$",
      "description": "End time, e.g. 17:00."
    },
    "name": {
      "description": "Lesson name (defaults per Teachworks settings).",
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "time_zone": {
      "description": "Rails time zone name, e.g. 'Eastern Time (US & Canada)' (defaults to the account's).",
      "type": "string"
    },
    "spaces": {
      "description": "Number of student spaces (group lessons).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "employee_id",
    "student_ids",
    "service_id",
    "from_date",
    "from_time",
    "to_time"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴teachworks_add_student_to_lesson(lesson_id, student_id)

WRITE: add a student to an existing lesson (the lesson must still be Scheduled). PUT /lessons/{id}/add_student.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lesson_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Lesson id."
    },
    "student_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Student id to add."
    }
  },
  "required": [
    "lesson_id",
    "student_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴teachworks_create_payment(customer_id, amount, date, payment_method, description)

WRITE: record a payment received from a customer (bookkeeping only — it does not charge a card). POST /payments.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^\\d+$"
        }
      ],
      "description": "Customer that paid."
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Amount paid."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Payment date."
    },
    "payment_method": {
      "type": "string",
      "enum": [
        "Cash",
        "Check",
        "Credit Card",
        "Debit Card",
        "Bank Transfer",
        "PayPal",
        "Other"
      ]
    },
    "description": {
      "description": "Details, e.g. 'Payment for INV-0216'.",
      "type": "string"
    }
  },
  "required": [
    "customer_id",
    "amount",
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本24 個工具