Semble MCP by usefulapi

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

사용해야 할까요

품질 및 안전성

A
설명 품질
89%
스키마 완전성
92%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (5)

  • LOWTool 'semble_list_patient_bookings' description lacks action verbsemble_list_patient_bookings에서
  • LOWTool 'semble_get_booking' description lacks action verbsemble_get_booking에서
  • LOWTool 'semble_get_user' description lacks action verbsemble_get_user에서
  • LOWTool 'semble_get_product' description lacks action verbsemble_get_product에서
  • LOWTool 'semble_get_invoice' description lacks action verbsemble_get_invoice에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,866토큰 (도구 정의)
~1.5 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.02%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

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

원격 엔드포인트

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

할 수 있는 일

도구 목록

도구 (19)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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).

입력 스키마

{
  "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).

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 19개