Limited rollout — read-only, Claude and ChatGPT only. For now the server exposes no write tools (no bookings, no payments, no record edits — those are made in PracticeHub itself, or through the REST API), and only Claude and ChatGPT can register as connectors. Both limits lift as the rollout widens.
Discovers itself
list_entity_types describes every resource; the generic tools then read any of them. New resources appear automatically.One way in
OAuth only — every MCP session acts for a team member who approved it. Headless agents use the REST API with an API key.
Same rules
Tools call the API’s services, so an agent cannot do anything a person could not, and every action is on the audit trail.
Authentication
OAuth is the only credential the MCP server accepts — an API key is refused with a
401. Every MCP action is attributable to the person who approved the connection. For your own unattended agent or automation, build on the REST API with an API key instead: same data, same rules, attributed to the integration.
Protocol
Streamable HTTP: JSON-RPC 2.0 overPOST, with Accept: application/json, text/event-stream. The usual sequence is initialize → tools/list → tools/call.
What an agent can do
- Understand the clinic’s data —
list_entity_typesreturns every resource with its attributes and what is filterable and sortable. - Find anything —
query_entitieswith the API’s filter syntax, or the friendlierpatient-lookup-toolfor name / phone / email searches. - Check availability —
check_availabilityreports genuinely free, bookable slots, ready to be booked in PracticeHub.
429 means.
Beyond tools, the server also serves MCP prompts and resources:
- Prompts — verified prompts registered natively on the server, so a connected assistant shows them in its prompt picker with fill-in arguments (patient name, date, month), no copy-paste needed.
- Resources —
practicehub://schema/entities(the full entity catalogue, the same JSON asGET /schema) andpracticehub://capabilities(a plain-language statement of what the server can and cannot do), loadable as context before the first tool call.