Progenda MCP by usefulapi

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

¿Debería usar esto?

Calidad y seguridad

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

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

Costo de contexto

~2,914Tokens (definiciones de herramientas)
~2.0 KBTamaño de respuesta típico
Impacto significativo en la atención (2.28% 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": {
    "progenda": {
      "url": "https://progenda.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (12)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada12 herramientas