IntakeQ MCP server

Search clients, appointments, intakes, notes and invoices in IntakeQ, and book or cancel visits. Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://intakeq.usefulapi.io/mcp
  3. Authenticate with IntakeQ when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "intakeq": {
      "url": "https://intakeq.usefulapi.io/mcp"
    }
  }
}
live21 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 21

ToolTypeWhat it does
intakeq_list_clientsread
Search clients
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
Get a client's diagnoses
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
List appointments
Query appointments by client name/email, date range, status, practitioner or last-modified date. Max 100 per page. IntakeQ: GET /appointments.
intakeq_get_appointmentread
Get one appointment
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
Get booking settings
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
List intake forms
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
Get a full intake form
Fetch one intake questionnaire with every question and answer, its consent forms and linked appointment. IntakeQ: GET /intakes/{id}.
intakeq_list_questionnairesread
List questionnaire templates
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
List practitioners
List the practitioners in the account (id, name, email, external id). IntakeQ: GET /practitioners.
intakeq_list_notesread
List treatment notes
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
Get a full treatment note
Fetch one treatment note with every question and answer and its linked appointment. IntakeQ: GET /notes/{id}.
intakeq_list_invoicesread
List invoices
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
Get one invoice
Fetch one invoice: line items, taxes, discounts, payments, totals and amount due. IntakeQ: GET /invoices/{id}.
intakeq_save_clientwrite
Create or update a client
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 cleared. Field names are IntakeQ's own. Dates are Unix timestamps in milliseconds. IntakeQ: POST /clients.
intakeq_add_client_tagwrite
Tag a client
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_appointmentwrite
Create an appointment
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_appointmentwrite
Update or reschedule an appointment
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_appointmentwrite
Cancel an appointment
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_questionnairewrite
Send an intake questionnaire
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.
intakeq_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
intakeq_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED IntakeQ tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.

More Healthcare MCP servers

Canvas MedicalClinicalTrials.govClinikoDailyMedDrChronoFitbitHealth GorillaHealthieInfermedicaMetriportNexHealthNPPES NPI RegistryopenFDAOuraParticle HealthRxNormVitalWHOOP

All Healthcare servers →