doctofam
Review safe clinic capacity, catalogs and aggregate schedules without clinical records.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"doctofam": {
"url": "https://mcp.doctofam.com/mcp"
}
}
}Remote endpoints
https://mcp.doctofam.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
π’list_clinics(limit, cursor)
List the authenticated user's DoctoFam clinics with bounded, cursor-based pagination. Only non-clinical clinic metadata is returned.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque cursor from a prior result"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"clinics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{24}$"
},
"name": {
"type": "string",
"maxLength": 200
},
"currency": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
{
"type": "null"
}
]
},
"defaultLocale": {
"anyOf": [
{
"type": "string",
"maxLength": 35
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"currency",
"defaultLocale",
"timezone",
"lastEditTime"
],
"additionalProperties": false
},
"maxItems": 100
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
]
}
},
"required": [
"clinics",
"nextCursor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_clinic(clinicId)
Fetch safe metadata for one tenant-owned DoctoFam clinic. Only non-clinical clinic metadata is returned.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"found",
"not-found"
]
},
"clinic": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{24}$"
},
"name": {
"type": "string",
"maxLength": 200
},
"currency": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
{
"type": "null"
}
]
},
"defaultLocale": {
"anyOf": [
{
"type": "string",
"maxLength": 35
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"currency",
"defaultLocale",
"timezone",
"lastEditTime"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"clinic"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_clinic_schedule_summary(clinicId, startTime, endTime)
Count scheduled records by UTC day for one tenant-owned DoctoFam clinic over a range of at most 31 days. Returns aggregate administrative counts onlyβnever appointment identifiers or times, patient information, procedures, diagnoses, notes, or other clinical data.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
},
"startTime": {
"type": "string",
"maxLength": 32,
"description": "Range start as an ISO 8601 value; defaults to now"
},
"endTime": {
"$ref": "#/properties/startTime",
"description": "Range end as an ISO 8601 value; defaults to seven days later"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"range": {
"type": "object",
"properties": {
"startTime": {
"type": "string",
"maxLength": 32
},
"endTime": {
"$ref": "#/properties/range/properties/startTime"
}
},
"required": [
"startTime",
"endTime"
],
"additionalProperties": false
},
"appointmentCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"appointmentCountIsLowerBound": {
"type": "boolean"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"appointmentCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"day",
"appointmentCount"
],
"additionalProperties": false
},
"maxItems": 100
}
},
"required": [
"range",
"appointmentCount",
"appointmentCountIsLowerBound",
"days"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_procedures(clinicId, limit, cursor)
List the authenticated user's DoctoFam procedure catalog with bounded pagination. Only catalog names, prices, durations, and edit times are returned; patient treatment data and record identifiers are excluded.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Filter by clinic id"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque cursor from a prior result"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"procedures": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"type": [
"number",
"null"
]
},
"duration": {
"type": [
"number",
"null"
]
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"price",
"duration",
"lastEditTime"
],
"additionalProperties": false
},
"maxItems": 100
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
]
}
},
"required": [
"procedures",
"nextCursor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_rooms(clinicId, limit, cursor)
List administrative room names for one tenant-owned DoctoFam clinic with bounded pagination. Record identifiers, appointment links, patient information, and clinical content are excluded.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque cursor from a prior result"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"rooms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"lastEditTime"
],
"additionalProperties": false
},
"maxItems": 100
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
]
}
},
"required": [
"rooms",
"nextCursor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_calendar_events(clinicId, startTime, endTime, limit, cursor)
List tenant-scoped non-appointment calendar blocks (courses, meetings, days off, closures) with bounded pagination. Event identifiers, staff references, titles, and notes are never returned.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Filter by clinic id"
},
"startTime": {
"type": "string",
"maxLength": 32,
"description": "Only events starting at or after this ISO 8601 time"
},
"endTime": {
"$ref": "#/properties/startTime",
"description": "Only events ending before this ISO 8601 time"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque cursor from a prior result"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"calendarEvents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"startTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
},
"endTime": {
"anyOf": [
{
"$ref": "#/properties/calendarEvents/items/properties/startTime/anyOf/0"
},
{
"type": "null"
}
]
},
"allDay": {
"type": "boolean"
},
"scope": {
"anyOf": [
{
"type": "string",
"enum": [
"SEAT",
"PROVIDER",
"CLINIC"
]
},
{
"type": "null"
}
]
},
"effect": {
"anyOf": [
{
"type": "string",
"enum": [
"BLOCK",
"OPEN"
]
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
}
},
"required": [
"startTime",
"endTime",
"allDay",
"scope",
"effect",
"type"
],
"additionalProperties": false
},
"maxItems": 100
},
"nextCursor": {
"anyOf": [
{
"type": "string",
"maxLength": 4096
},
{
"type": "null"
}
]
}
},
"required": [
"calendarEvents",
"nextCursor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_providers(clinicId)
List display names for the bookable providers of one tenant-owned DoctoFam clinic. Contact details, role records, identifiers, and clinical data are never returned.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"maxLength": 200
}
},
"required": [
"displayName"
],
"additionalProperties": false
},
"maxItems": 100
}
},
"required": [
"providers"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_clinic_availability(clinicId)
List bookable appointment slots for one tenant-owned DoctoFam clinic. Only day, slot start, and slot end are returnedβnever patient, provider, or clinical data.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"slots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"startTime": {
"type": "string",
"maxLength": 32
},
"endTime": {
"$ref": "#/properties/days/items/properties/slots/items/properties/startTime"
}
},
"required": [
"startTime",
"endTime"
],
"additionalProperties": false
},
"maxItems": 100
}
},
"required": [
"day",
"slots"
],
"additionalProperties": false
},
"maxItems": 7
}
},
"required": [
"days"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_subscription_status(clinicId)
Get administrative plan status and entitlement limits for one tenant-owned DoctoFam clinic. Billing identifiers, payment-provider data, amounts, currencies, patient records, and clinical data are excluded.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "Clinic id (24-character hex)"
}
},
"required": [
"clinicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"subscription": {
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "string",
"enum": [
"ACTIVE",
"PAST_DUE",
"CANCELED"
]
},
{
"type": "null"
}
]
},
"productName": {
"type": "string",
"maxLength": 200
},
"billingFrequency": {
"anyOf": [
{
"type": "string",
"enum": [
"MONTHLY",
"YEARLY"
]
},
{
"type": "null"
}
]
},
"maxNumberOfAppointments": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"maxNumberOfPatients": {
"$ref": "#/properties/subscription/properties/maxNumberOfAppointments"
},
"maxNumberOfSeats": {
"$ref": "#/properties/subscription/properties/maxNumberOfAppointments"
},
"maxNumberOfUsers": {
"$ref": "#/properties/subscription/properties/maxNumberOfAppointments"
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
},
"isDefaultFreePlan": {
"type": "boolean"
}
},
"required": [
"status",
"productName",
"billingFrequency",
"maxNumberOfAppointments",
"maxNumberOfPatients",
"maxNumberOfSeats",
"maxNumberOfUsers",
"lastEditTime",
"isDefaultFreePlan"
],
"additionalProperties": false
}
},
"required": [
"subscription"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’show_clinic_overview(clinicId)
Render a bounded administrative overview for a known DoctoFam clinic. It combines safe clinic metadata, aggregate seven-day schedule counts, provider, room and availability counts, procedure-catalog previews, and plan entitlements. It never returns individual appointment records, patient information, diagnoses, treatment details, notes, or other clinical data.
Input Schema
{
"type": "object",
"properties": {
"clinicId": {
"type": "string",
"pattern": "^[0-9a-f]{24}$",
"description": "DoctoFam clinic id to render"
}
},
"required": [
"clinicId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"clinic": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{24}$"
},
"name": {
"type": "string",
"maxLength": 200
},
"currency": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
{
"type": "null"
}
]
},
"defaultLocale": {
"anyOf": [
{
"type": "string",
"maxLength": 35
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"currency",
"defaultLocale",
"timezone"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"scheduleRange": {
"type": "object",
"properties": {
"startTime": {
"type": "string",
"maxLength": 32
},
"endTime": {
"type": "string",
"maxLength": 32
}
},
"required": [
"startTime",
"endTime"
],
"additionalProperties": false
},
"appointmentCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"appointmentCountIsLowerBound": {
"type": "boolean"
},
"scheduleDays": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"day",
"count"
],
"additionalProperties": false
}
},
"procedureCount": {
"type": "integer",
"minimum": 0,
"maximum": 12
},
"procedureCountIsLowerBound": {
"type": "boolean"
},
"procedures": {
"maxItems": 12,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"lastEditTime": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"price",
"duration",
"lastEditTime"
],
"additionalProperties": false
}
},
"providerCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"providerCountIsLowerBound": {
"type": "boolean"
},
"roomCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"roomCountIsLowerBound": {
"type": "boolean"
},
"availableDayCount": {
"type": "integer",
"minimum": 0,
"maximum": 7
},
"availableSlotCount": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"availabilityDays": {
"maxItems": 7,
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"day",
"count"
],
"additionalProperties": false
}
},
"subscription": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "string",
"enum": [
"ACTIVE",
"PAST_DUE",
"CANCELED"
]
},
{
"type": "null"
}
]
},
"productName": {
"type": "string",
"maxLength": 200
},
"billingFrequency": {
"anyOf": [
{
"type": "string",
"enum": [
"MONTHLY",
"YEARLY"
]
},
{
"type": "null"
}
]
},
"maxNumberOfAppointments": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"maxNumberOfPatients": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"maxNumberOfSeats": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"maxNumberOfUsers": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"isDefaultFreePlan": {
"type": "boolean"
}
},
"required": [
"status",
"productName",
"billingFrequency",
"maxNumberOfAppointments",
"maxNumberOfPatients",
"maxNumberOfSeats",
"maxNumberOfUsers",
"isDefaultFreePlan"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"clinic",
"scheduleRange",
"appointmentCount",
"appointmentCountIsLowerBound",
"scheduleDays",
"procedureCount",
"procedureCountIsLowerBound",
"procedures",
"providerCount",
"providerCountIsLowerBound",
"roomCount",
"roomCountIsLowerBound",
"availableDayCount",
"availableSlotCount",
"availabilityDays",
"subscription"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence