IntakeQ MCP by usefulapi

io.usefulapi/intakeq

Search clients, appointments, intakes, notes and invoices in IntakeQ, and book or cancel visits.

Yes, your AI can use this right now.Answered a live MCP handshake in 216 ms with no sign-in needed and exposes 19 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://intakeq.usefulapi.io/mcp

19 tools, verified live

Pulled straight from the server with tools/list on 2026-10-17.
intakeq_list_clientsread-only

Search the practice's clients (patients) by name, email or client number, by created/updated date range, by external id, or by a custom field. Without include_profile it returns Name, Email, Phone and ClientNumber; with include_profile=true it returns the full profile (address, insurance, tags, custom fields, linked clients). Max 100 per page. IntakeQ: GET /clients.

intakeq_get_client_diagnosesread-only

List the diagnoses recorded for one client: code, description, start/end date and the treatment note they came from. IntakeQ: GET /client/{clientId}/diagnoses.

intakeq_list_appointmentsread-only

Query appointments by client name/email, date range, status, practitioner or last-modified date. Max 100 per page. IntakeQ: GET /appointments.

intakeq_get_appointmentread-only

Fetch one appointment: client, practitioner, service, location, start/end, status, price, invoice, telehealth link and cancellation details. IntakeQ: GET /appointments/{id}.

intakeq_get_booking_settingsread-only

List the scheduler's locations, services (with duration and price) and practitioners — the ids you need to create an appointment. IntakeQ: GET /appointments/settings.

intakeq_list_intakesread-only

Query submitted intake questionnaires (summaries: client, status, questionnaire, practitioner, dates). By default only completed forms; set all=true for every status (Sent, Partial, Completed, Offline). Max 100 per page. IntakeQ: GET /intakes/summary.

intakeq_get_intakeread-only

Fetch one intake questionnaire with every question and answer, its consent forms and linked appointment. IntakeQ: GET /intakes/{id}.

intakeq_list_questionnairesread-only

List the intake questionnaire templates in the account (id, name, archived, anonymous) — the ids you need to send one. IntakeQ: GET /questionnaires.

intakeq_list_practitionersread-only

List the practitioners in the account (id, name, email, external id). IntakeQ: GET /practitioners.

intakeq_list_notesread-only

Query treatment note summaries by client, lock status, date range or last-updated date. Max 100 per page. IntakeQ: GET /notes/summary.

intakeq_get_noteread-only

Fetch one treatment note with every question and answer and its linked appointment. IntakeQ: GET /notes/{id}.

intakeq_list_invoicesread-only

Query invoices by client, issue date range, status, practitioner or last-updated range. Each invoice includes items, payments and amounts due/paid. Max 100 per page. IntakeQ: GET /invoices.

intakeq_get_invoiceread-only

Fetch one invoice: line items, taxes, discounts, payments, totals and amount due. IntakeQ: GET /invoices/{id}.

intakeq_save_clientcan modify

Create a client, or update one. With ClientId the existing client is updated. WITHOUT ClientId IntakeQ still tries to match an existing client by first name + email (or first name + phone) and updates that one instead of creating a duplicate. For updates, fetch the full profile first (intakeq_list_clients with include_profile=true) and send it back with your changes, so no field is unintentionally

intakeq_add_client_tagcan modify

Add a tag to a client. The tag is created if it does not exist; adding one the client already has is a no-op. IntakeQ: POST /clientTags.

intakeq_create_appointmentcan modify

Book an appointment in the PracticeQ scheduler. Get PractitionerId, ServiceId and LocationId from intakeq_get_booking_settings. All fields are required by IntakeQ. Status must be Confirmed or WaitingConfirmation; SendClientEmailNotification may be true only when Status is Confirmed. IntakeQ: POST /appointments.

intakeq_update_appointmentcan modify

Change an appointment's time, service, location, status or reminder type. Id and UtcDateTime are required (send the current time to keep it); include only the other fields you are changing. The client and practitioner cannot be changed, and a Confirmed appointment cannot go back to WaitingConfirmation. IntakeQ: PUT /appointments.

intakeq_cancel_appointmentcan modify

Cancel an appointment, with an optional reason. This changes the client's booking and cannot be undone through the API — book a new appointment to replace it. IntakeQ: POST /appointments/cancellation.

intakeq_send_questionnairecan modify

Send an intake questionnaire to a client by email or SMS. This MESSAGES THE CLIENT. Identify the client by ClientId, or by ClientName plus ClientEmail and/or ClientPhone (omit ClientEmail to force SMS). PractitionerId is optional. Returns the new intake. IntakeQ: POST /intakes/send.

Alternatives in Finance & Payments

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”