Semble MCP by usefulapi

Read Semble patients, bookings, invoices and products; create patients and tasks, label patients.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
89%
Integridad del esquema
92%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (5)

  • LOWTool 'semble_list_patient_bookings' description lacks action verben semble_list_patient_bookings
  • LOWTool 'semble_get_booking' description lacks action verben semble_get_booking
  • LOWTool 'semble_get_user' description lacks action verben semble_get_user
  • LOWTool 'semble_get_product' description lacks action verben semble_get_product
  • LOWTool 'semble_get_invoice' description lacks action verben semble_get_invoice

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,866Tokens (definiciones de herramientas)
~1.5 KBTamaño de respuesta típico
Impacto significativo en la atención (3.02% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (19)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢semble_get_practice

The practice the API token belongs to: name, timezone, locations, appointment types and medical specialties. A good first call to check the connection.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_patients(search, page, page_size)

Patients of the practice (personal and health data). `search` matches name, email, phone or date of birth. Returns id, name, date of birth, contact details and status, plus pageInfo.hasMore for the next page.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search (name, email, phone, date of birth).",
      "type": "string",
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_get_patient(id)

One patient by id (personal data): demographics, phones, address, numbers, custom attributes, labels, comments and status. Appointments, invoices and tasks have their own tools.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Patient id (from semble_list_patients)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_patient_bookings(patient_id, start, end, include_deleted, only_cancelled, ...)

The bookings (appointments) of one patient between two dates, with doctor, location, appointment type and status. Both dates are required (YYYY-MM-DD).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Patient id."
    },
    "start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day, YYYY-MM-DD (from 00:00 UTC)."
    },
    "end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day, YYYY-MM-DD (until 23:59 UTC, inclusive)."
    },
    "include_deleted": {
      "description": "Also return cancelled (deleted) bookings next to the active ones (default false).",
      "type": "boolean"
    },
    "only_cancelled": {
      "description": "Return ONLY cancelled (deleted) bookings. Takes precedence over include_deleted.",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "patient_id",
    "start",
    "end"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_bookings(start, end, include_deleted, page, page_size)

Bookings (appointments) of the whole practice. With a date range, a booking is included if it starts or ends inside it. Returns patient, doctor, location, appointment type, status and journey (arrived, consultation, departed, dna).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day, YYYY-MM-DD (from 00:00 UTC)."
    },
    "end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day, YYYY-MM-DD (until 23:59 UTC, inclusive)."
    },
    "include_deleted": {
      "description": "Also return deleted bookings (default false).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_get_booking(id)

One booking by id, with patient, doctor, location, appointment type, status and journey.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Booking id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_users(search, clinicians_only, include_deleted, page, page_size)

Staff users of the practice (clinicians and admin): name, email, role, qualifications and specialties. Use the ids for bookings and tasks.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search.",
      "type": "string",
      "maxLength": 200
    },
    "clinicians_only": {
      "description": "Only clinicians.",
      "type": "boolean"
    },
    "include_deleted": {
      "description": "Also return deleted users (default false).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_get_user(id)

One staff user by id.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "User id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_products(search, page, page_size)

The practice's price list: appointment types, services and stock items, with price, cost, duration and stock level. `search` matches the item code or name.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Item code or name.",
      "type": "string",
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_get_product(id)

One product, service or appointment type by id.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Product id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_invoices(start, end, status, paid_or_outstanding, page, ...)

Invoices whose invoice date is inside a date range, with patient, totals and what is outstanding. Filter by status (active or cancelled) and paid_or_outstanding. Monetary amounts are in the practice currency.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First invoice date, YYYY-MM-DD."
    },
    "end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last invoice date, YYYY-MM-DD."
    },
    "status": {
      "description": "Invoice status.",
      "type": "string",
      "enum": [
        "active",
        "cancelled"
      ]
    },
    "paid_or_outstanding": {
      "description": "Filter by payment state.",
      "type": "string",
      "enum": [
        "Paid",
        "Outstanding",
        "Void"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_get_invoice(id)

One invoice by id, with its line items, totals and what is outstanding.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Invoice id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_contacts(search, is_doctor, is_payor, page, page_size)

Contacts of the practice (referring doctors, insurers and other payors). `search` matches name, email, phone, specialty and numbers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search.",
      "type": "string",
      "maxLength": 200
    },
    "is_doctor": {
      "description": "Only doctors.",
      "type": "boolean"
    },
    "is_payor": {
      "description": "Only payors.",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_tasks(patient_id, status, priority, task_type, assigned_to, ...)

Practice tasks, filtered by patient, status, priority, type or assignee. Returns subject, due date, priority, assignee and patient.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "description": "Only tasks about this patient id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "status": {
      "description": "Task status.",
      "type": "string",
      "enum": [
        "open",
        "processing",
        "closed"
      ]
    },
    "priority": {
      "description": "Task priority.",
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low",
        "unset"
      ]
    },
    "task_type": {
      "description": "Task type.",
      "type": "string",
      "enum": [
        "general",
        "recall",
        "medical",
        "rx",
        "lab",
        "vaccine",
        "admin",
        "invoice"
      ]
    },
    "assigned_to": {
      "description": "Only tasks assigned to this user id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢semble_list_labels(search, page, page_size)

The labels that can be put on patients (id, title, colour). Use the id with semble_add_patient_label.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Label title.",
      "type": "string",
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "page_size": {
      "description": "Rows per page, 1-100 (default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡semble_create_task(subject, assigned_to, patient_id, due_date, priority, ...)

Creates a task in Semble assigned to a staff user (get ids from semble_list_users), optionally about a patient, with a due date, priority and type. Creates a new record each time it is called.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "The task text."
    },
    "assigned_to": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "User id the task is assigned to."
    },
    "patient_id": {
      "description": "Patient the task is about.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "due_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Due date, YYYY-MM-DD."
    },
    "priority": {
      "description": "Priority.",
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low",
        "unset"
      ]
    },
    "task_type": {
      "description": "Task type.",
      "type": "string",
      "enum": [
        "general",
        "recall",
        "medical",
        "rx",
        "lab",
        "vaccine",
        "admin",
        "invoice"
      ]
    },
    "comments": {
      "description": "Extra notes.",
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "subject",
    "assigned_to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴semble_update_task(id, status, subject, assigned_to, due_date, ...)

Changes a task: close or reopen it (status), reassign it, move the due date, or edit subject, priority and notes. Only the fields you pass are changed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Task id (from semble_list_tasks)."
    },
    "status": {
      "description": "New status.",
      "type": "string",
      "enum": [
        "open",
        "processing",
        "closed"
      ]
    },
    "subject": {
      "description": "New subject.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "assigned_to": {
      "description": "New assignee user id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "due_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "New due date, YYYY-MM-DD."
    },
    "priority": {
      "description": "New priority.",
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low",
        "unset"
      ]
    },
    "comments": {
      "description": "New notes (replace the old).",
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡semble_add_patient_label(patient_id, label_id)

Puts an existing label on a patient (label ids from semble_list_labels). Adds only; nothing is removed.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Patient id."
    },
    "label_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Label id (from semble_list_labels)."
    }
  },
  "required": [
    "patient_id",
    "label_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡semble_create_patient(first_name, last_name, email, dob, sex, ...)

Creates a new patient record (personal data) from the details you give. It does not check for an existing patient: search with semble_list_patients first to avoid a duplicate.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "First name."
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Last name."
    },
    "email": {
      "description": "Email address.",
      "type": "string",
      "maxLength": 254,
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "dob": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date of birth, YYYY-MM-DD."
    },
    "sex": {
      "description": "Sex as the practice records it.",
      "type": "string",
      "maxLength": 30
    },
    "phone_number": {
      "description": "Phone number.",
      "type": "string",
      "maxLength": 40
    },
    "phone_type": {
      "description": "Phone type, for example Mobile.",
      "type": "string",
      "maxLength": 30
    },
    "address": {
      "description": "Street address.",
      "type": "string",
      "maxLength": 200
    },
    "city": {
      "description": "City.",
      "type": "string",
      "maxLength": 100
    },
    "postcode": {
      "description": "Postcode.",
      "type": "string",
      "maxLength": 20
    },
    "country": {
      "description": "Country.",
      "type": "string",
      "maxLength": 100
    },
    "comments": {
      "description": "Notes.",
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "first_name",
    "last_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada19 herramientas