Progenda MCP by usefulapi

Read patients, calendars, appointments and open slots; book and move appointments in Progenda.

사용해야 할까요

품질 및 안전성

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

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

컨텍스트 비용

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

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

설치

원클릭 설치

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

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

원격 엔드포인트

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

할 수 있는 일

도구 목록

도구 (12)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢progenda_list_centers

List the centers (practices) your Progenda user can access. Start here: the center id is needed by the patient tools. Progenda API: GET /api/v2/centers.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_list_calendars

List the calendars (one agenda per practitioner) your Progenda user can access. The calendar id is needed by the appointment and service tools. Progenda API: GET /api/v2/calendars.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_list_patients(center_id, page, since)

List the patients of a center, 1000 per page. Contains personal and health-adjacent data: fetch only what the user asks for. Progenda API: GET /api/v2/centers/{center_id}/patients.

입력 스키마

{
  "type": "object",
  "properties": {
    "center_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Center id (from progenda_list_centers)."
    },
    "page": {
      "description": "Page number (1000 patients per page).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "since": {
      "description": "Unix timestamp in seconds: return only records updated after this time (use the X-Date of your last sync).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "center_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_get_patient(center_id, remote_id)

Get one patient by your own remote_id. Progenda API: GET /api/v2/centers/{center_id}/patients/remote_id:{remote_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "center_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Center id (from progenda_list_centers)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    }
  },
  "required": [
    "center_id",
    "remote_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_list_appointments(calendar_id, start, stop, since)

List the appointments of one calendar, optionally between two Unix times (start, stop) or updated since a time. Progenda API: GET /api/v2/calendars/{calendar_id}/appointments.

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    },
    "start": {
      "description": "Only appointments from this Unix time.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "stop": {
      "description": "Only appointments until this Unix time.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "since": {
      "description": "Unix timestamp in seconds: return only records updated after this time (use the X-Date of your last sync).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "calendar_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_get_appointment(calendar_id, remote_id)

Get one appointment by your own remote_id. Progenda API: GET /api/v2/calendars/{calendar_id}/appointments/remote_id:{remote_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    }
  },
  "required": [
    "calendar_id",
    "remote_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_list_services(calendar_id)

List the services (appointment types) of one calendar. The service remote_id is used when you create an appointment. Progenda API: GET /api/v2/calendars/{calendar_id}/services.

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    }
  },
  "required": [
    "calendar_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢progenda_get_suggestions(calendar_id, service_id)

Compute suggested free slots in one calendar for one service. Live route: GET /api/v2/calendars/{calendar_id}/suggestions?service_id= (the route named in the docs answers 404).

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    },
    "service_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Service id (the Progenda id of the service)."
    }
  },
  "required": [
    "calendar_id",
    "service_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴progenda_create_patient(center_id, remote_id, first_name, last_name, email, ...)

Create a patient in a center under your own remote_id. Creates a new record each time it runs with a new remote_id; use progenda_update_patient to change an existing one. Progenda API: POST /api/v2/centers/{center_id}/patients.

입력 스키마

{
  "type": "object",
  "properties": {
    "center_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Center id (from progenda_list_centers)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    },
    "first_name": {
      "type": "string",
      "description": "Patient's first name (may be blank)."
    },
    "last_name": {
      "type": "string",
      "description": "Patient's last name (may be blank)."
    },
    "email": {
      "type": "string",
      "description": "Patient's e-mail address (may be blank)."
    },
    "phone_number": {
      "type": "string",
      "description": "Patient's phone number, preferably mobile (text reminders are sent to it; may be blank)."
    },
    "birthdate": {
      "description": "Birthdate, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "address": {
      "description": "Postal address.",
      "type": "string"
    },
    "notes": {
      "description": "Personal notes about the patient.",
      "type": "string"
    },
    "language_code": {
      "description": "Patient language code, e.g. en, fr, nl, es.",
      "type": "string"
    }
  },
  "required": [
    "center_id",
    "remote_id",
    "first_name",
    "last_name",
    "email",
    "phone_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡progenda_update_patient(center_id, remote_id, first_name, last_name, email, ...)

Update a patient found by your own remote_id. The four contact fields are required by the API: send the current values for the ones you do not change. Progenda API: PUT /api/v2/centers/{center_id}/patients/remote_id:{remote_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "center_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Center id (from progenda_list_centers)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    },
    "first_name": {
      "type": "string",
      "description": "Patient's first name (may be blank)."
    },
    "last_name": {
      "type": "string",
      "description": "Patient's last name (may be blank)."
    },
    "email": {
      "type": "string",
      "description": "Patient's e-mail address (may be blank)."
    },
    "phone_number": {
      "type": "string",
      "description": "Patient's phone number, preferably mobile (text reminders are sent to it; may be blank)."
    },
    "birthdate": {
      "description": "Birthdate, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "address": {
      "description": "Postal address.",
      "type": "string"
    },
    "notes": {
      "description": "Personal notes about the patient.",
      "type": "string"
    },
    "language_code": {
      "description": "Patient language code, e.g. en, fr, nl, es.",
      "type": "string"
    }
  },
  "required": [
    "center_id",
    "remote_id",
    "first_name",
    "last_name",
    "email",
    "phone_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴progenda_create_appointment(calendar_id, remote_id, start, stop, patient_remote_id, ...)

Create an appointment in a calendar under your own remote_id, for a patient remote_id and a service remote_id. Each run creates a new appointment. Progenda API: POST /api/v2/calendars/{calendar_id}/appointments.

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    },
    "start": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Start time, Unix seconds (UTC)."
    },
    "stop": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "End time, Unix seconds (UTC)."
    },
    "patient_remote_id": {
      "description": "Your identifier of the patient (must exist in Progenda).",
      "type": "string"
    },
    "service_remote_id": {
      "description": "Your identifier of the service (appointment type).",
      "type": "string"
    },
    "title": {
      "description": "Title, e.g. Meeting or Lunch.",
      "type": "string"
    },
    "notes": {
      "description": "Notes about the appointment.",
      "type": "string"
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9A-Fa-f]{6}$",
      "description": "Colour on the Progenda calendar, as #rrggbb."
    },
    "status": {
      "type": "string",
      "enum": [
        "booked",
        "cancelled",
        "noshow"
      ],
      "description": "Appointment status. A cancelled appointment cannot become booked again."
    },
    "noshow": {
      "description": "True if the patient missed the appointment.",
      "type": "boolean"
    },
    "patient_arrived_at": {
      "description": "Unix time the patient arrived, or null.",
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Unix timestamp in seconds, UTC."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "calendar_id",
    "remote_id",
    "start",
    "stop"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡progenda_update_appointment(calendar_id, remote_id, start, stop, patient_remote_id, ...)

Change an appointment found by your remote_id: time, status (booked, cancelled, noshow), arrival or no-show. Send only the fields to change. Progenda API: PUT /api/v2/calendars/{calendar_id}/appointments/remote_id:{remote_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "calendar_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Calendar id (from progenda_list_calendars)."
    },
    "remote_id": {
      "type": "string",
      "minLength": 1,
      "description": "Your own identifier for the record (the remote_id you set when you created it)."
    },
    "start": {
      "description": "New start time, Unix seconds.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "stop": {
      "description": "New end time, Unix seconds.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "patient_remote_id": {
      "type": "string"
    },
    "service_remote_id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9A-Fa-f]{6}$",
      "description": "Colour on the Progenda calendar, as #rrggbb."
    },
    "status": {
      "type": "string",
      "enum": [
        "booked",
        "cancelled",
        "noshow"
      ],
      "description": "Appointment status. A cancelled appointment cannot become booked again."
    },
    "noshow": {
      "type": "boolean"
    },
    "patient_arrived_at": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Unix timestamp in seconds, UTC."
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "calendar_id",
    "remote_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

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