Interact with Microsoft 365 and Office services through the Microsoft Graph API.
AgendaPro MCP by usefulapi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Read AgendaPro bookings, slots, clients, services and sales; create, update and cancel bookings.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http agendapro-mcp-by-usefulapi https://agendapro.usefulapi.io/mcp
# 2 — ask your agent for something these tools do
# agendapro_list_locations, agendapro_get_location, agendapro_list_services and 21 more
AgendaPro MCP by usefulapi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http agendapro-mcp-by-usefulapi https://agendapro.usefulapi.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
24 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List the business's locations (sucursales / locales): id, name, address, phone, email, timezone, opening hours and country. Location ids are needed for bookings, slots and sales filters. GET /v3/locations.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| active | boolean | no | Only active (true) or inactive (false) locations. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One location by id, with address, coordinates, timezone and weekly opening hours. GET /v3/locations/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| location_id | integer | yes | AgendaPro location id. |
List the services (treatments, classes, sessions) the business offers: id, name, price, duration, type, category, whether online booking/payment is on, and the location. Service ids are needed to book. GET /v3/services.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| provider_id | integer | no | Only services this provider performs. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One service by id, including its category, images and the providers who perform it. GET /v3/services/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| service_id | integer | yes | AgendaPro service id. |
List service categories, ordered as the business arranges them. GET /v3/categories.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
List service providers (the staff who take bookings): id, public name, location, active flag, online-booking flag and working hours. Provider ids are needed to book. GET /v3/providers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| location_ids | array | no | Only providers at these locations. |
| service_ids | array | no | Only providers who perform these services. |
| public_name | string | no | Partial match on the provider's public name. |
| active | boolean | no | Only active (true) or inactive (false) providers. |
| sort_by | string | no | Field to sort by, e.g. public_name. |
| order_by | string | no | Sort direction. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One service provider by id, with biography, images and working hours including breaks. GET /v3/providers/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| provider_id | integer | yes | AgendaPro provider id. |
List bookings (reservas / appointments) with time, status, service, provider, client id, location, price and the linked sale. AgendaPro requires at least ONE of client_id, location_id, service_id or service_provider_id; dates only narrow the result. A sale may be a membership covering several bookings, so do not total amounts by sale id. GET /v3/bookings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | no | Bookings of this client. |
| location_id | integer | no | Bookings at this location. |
| service_id | integer | no | Bookings of this service. |
| service_provider_id | integer | no | Bookings of this provider. |
| scheduled | boolean | no | Filter by the scheduled flag. |
| status_id | integer | no | Filter by booking status id (see the status object on a booking). |
| start_date | string | no | Bookings from this date, yyyy-mm-dd. |
| end_date | string | no | Bookings until this date, yyyy-mm-dd. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One booking by id with status, service, provider, client id, location, prices, notes and the linked sale. GET /v3/bookings/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| booking_id | integer | yes | AgendaPro booking id. |
Free booking time windows at a location on one date (optionally for one service and/or provider): start/end time, provider, plus a metadata summary (service duration, slot count). Use before creating a booking. GET /v3/available_slots.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| location_id | integer | yes | Location to check. |
| start_date | string | yes | The date to check, yyyy-mm-dd. |
| service_id | integer | no | Only slots for this service. |
| provider_id | integer | no | Only slots of this provider. |
WRITE: create a booking for an existing client, service, provider and location. Check agendapro_list_available_slots first. status_id must be a non-cancelled status: copy the status.id of an existing booking (agendapro_list_bookings). AgendaPro does NOT send email/SMS/WhatsApp notifications for bookings created through the API. Not idempotent: calling twice books twice. POST /v3/bookings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| start_time | string | yes | Start, ISO 8601 with a timezone offset, e.g. 2026-03-10T10:00:00-03:00 (use the location's timezone). |
| end_time | string | no | End; defaults to start + the service duration. |
| service_id | integer | yes | Service id. |
| provider_id | integer | yes | Service provider id. |
| client_id | integer | yes | Client id (agendapro_search_clients / agendapro_create_client). |
| location_id | integer | yes | Location id. |
| status_id | integer | yes | A non-cancelled booking status id. |
| price | string | no | Price as a decimal string; defaults to the service price. |
| notes | no | Booking notes. | |
| time_resource_id | no | Time resource id; required when the service needs one. |
WRITE: change an existing booking (partial update: only the fields you pass change): move it, switch service/provider/location, change status, price or notes. The merchant's customer policy applies: a change too close to the start time, or past the maximum number of changes, is refused with HTTP 422 and must not be retried. PATCH /v3/bookings/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| booking_id | integer | yes | AgendaPro booking id. |
| start_time | string | no | New start, ISO 8601 with a timezone offset. |
| end_time | string | no | New end, ISO 8601 with a timezone offset. |
| service_id | integer | no | — |
| provider_id | integer | no | — |
| client_id | integer | no | — |
| location_id | integer | no | — |
| status_id | integer | no | New booking status id (copy from another booking's status.id). |
| price | string | no | — |
| notes | no | New notes; null clears them. | |
| time_resource_id | no | New time resource id; null removes the assigned resource. |
WRITE: cancel a booking. This cannot be undone through the API. The merchant's customer policy applies: a cancellation that is disabled, too close to the start time or past the maximum number of changes is refused with HTTP 422 (tell the user the merchant does not allow it; do not retry). Confirm with the user before calling. PATCH /v3/bookings/{id}/cancel.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| booking_id | integer | yes | AgendaPro booking id to cancel. |
List the business's clients (customers) page by page: name, email, phone, identification number, address, birth date, record number, active flag. Personal data: only use it for the task at hand. To find one person use agendapro_search_clients. GET /v3/clients.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
Find clients by free text (name, email, phone, identification number or record number): a short ranked list with id, full name, email, phone. The fastest way to get a client_id. GET /v3/clients/quick-search.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | yes | Search text, max 50 characters. |
| limit | integer | no | Max results, 1-25 (default 10). |
One client by id with contact details, address, birth date, record number and active flag. GET /v3/clients/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | AgendaPro client id. |
The custom attribute values stored for one client (id, name, datatype, value). GET /v3/clients/{id}/custom_attributes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | AgendaPro client id. |
The custom client fields the business defined (id, name, datatype, mandatory, group, choices). Use the template ids when setting custom_attributes on a client. GET /v3/custom_attributes.
No parameter schema on file.
WRITE: create a new client. first_name is required and at least one of last_name, email or phone must also be given (AgendaPro's rule). Search first (agendapro_search_clients) to avoid duplicates; not idempotent. No message is sent to the client. POST /v3/clients.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| first_name | string | yes | First name. |
| last_name | string | no | Last name. On update, an empty string clears the stored value. |
| string | no | Email (stored lowercase). | |
| phone | string | no | Phone in E.164 format, e.g. +56912345678. |
| identification_number | string | no | National identification number (RUT, DNI, CURP...). On update, an empty string clears the stored value. |
| address | string | no | Street address. On update, an empty string clears the stored value. |
| district | string | no | District or neighborhood. On update, an empty string clears the stored value. |
| city | string | no | City. On update, an empty string clears the stored value. |
| region | string | no | Region or state. On update, an empty string clears the stored value. |
| age | integer | no | Age in years. |
| gender | no | 0 = other, 1 = female, 2 = male. | |
| birth_day | integer | no | Day of birth, 1-31. |
| birth_month | integer | no | Month of birth, 1-12. |
| birth_year | integer | no | Year of birth. |
| custom_attributes | array | no | Custom attribute values to set. |
WRITE: change an existing client (partial update: only the fields you pass change; it overwrites the stored value). PATCH /v3/clients/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | AgendaPro client id. |
| first_name | string | no | First name. |
| last_name | string | no | Last name. On update, an empty string clears the stored value. |
| string | no | Email (stored lowercase). | |
| phone | string | no | Phone in E.164 format, e.g. +56912345678. |
| identification_number | string | no | National identification number (RUT, DNI, CURP...). On update, an empty string clears the stored value. |
| address | string | no | Street address. On update, an empty string clears the stored value. |
| district | string | no | District or neighborhood. On update, an empty string clears the stored value. |
| city | string | no | City. On update, an empty string clears the stored value. |
| region | string | no | Region or state. On update, an empty string clears the stored value. |
| age | integer | no | Age in years. |
| gender | no | 0 = other, 1 = female, 2 = male. | |
| birth_day | integer | no | Day of birth, 1-31. |
| birth_month | integer | no | Month of birth, 1-12. |
| birth_year | integer | no | Year of birth. |
| custom_attributes | array | no | Custom attribute values to set. |
List sales (ventas): status (partially_paid, paid, canceled, refunded), paid and pending amounts, paid-at time, location, client id and the payment transactions. Filter by paid date range, location or client. GET /v3/sales.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| paid_at_start | string | no | Sales paid from this date (inclusive), yyyy-mm-dd. |
| paid_at_end | string | no | Sales paid until this date (inclusive), yyyy-mm-dd. |
| location_id | integer | no | Sales at this location. |
| client_id | integer | no | Sales to this client. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One sale by id with amounts, status, location and its payment transactions (amount, paid-at, payment method). GET /v3/sales/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sale_id | integer | yes | AgendaPro sale id. |
List retail products in the catalog: name, SKU, price, active flag, category, brand and display. GET /v3/products.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| active | boolean | no | Only active (true) or inactive (false) products. |
| search | string | no | Free text over product name and SKU. |
| product_category_id | string | no | Category id, or 'none' for products without a category. |
| product_brand_id | string | no | Brand id, or 'none'. |
| product_display_id | string | no | Display id, or 'none'. |
| page | integer | no | Page number, from 1 (default 1). Pass pagination.next_page from the previous reply. |
| per_page | integer | no | Results per page, 1-100 (default 30). |
One catalog product by id with description, SKU, price, category, brand and display. GET /v3/products/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | integer | yes | AgendaPro product id. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install AgendaPro MCP by usefulapi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| agendapro_list_locations | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_location | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_services | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_service | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_service_categories | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_providers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_provider | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_bookings | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_booking | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_available_slots | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_create_booking | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| agendapro_update_booking | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| agendapro_cancel_booking | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| agendapro_list_clients | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_search_clients | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_client | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_client_custom_attributes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_custom_attributes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_create_client | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| agendapro_update_client | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| agendapro_list_sales | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_sale | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_list_products | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agendapro_get_product | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.17.5.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish AgendaPro MCP by usefulapi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.