Skip to content

AgendaPro MCP by usefulapi

io.usefulapi/agendaprousefulapi.iostreamable-httpv1.1.0Scanned

Read AgendaPro bookings, slots, clients, services and sales; create, update and cancel bookings.

24 tools: 5 can delete or cancel things and 19 only read.

Tools: 5 delete, 0 irreversible, 0 write, 19 read.
  • Reads private data · 5
  • Reads text others write · 24
  • Can send data out · 0
  • No findings

Anlyon alternative

5 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

24 tools

Deletes or cancels 5Claude Code: deny
  • agendapro_cancel_bookingWRITE: cancel a booking.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_cancel_booking" says "cancel": a word for removing or ending something.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Cancel booking
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • agendapro_create_bookingWRITE: create a booking for an existing client, service, provider and location.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_create_booking" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create booking
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • agendapro_create_clientWRITE: create a new client.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_create_client" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create client
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • agendapro_update_bookingWRITE: change an existing booking (partial update: only the fields you pass change): move it, switch service/provider/location, change status, price or notes.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_update_booking" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Update booking
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • agendapro_update_clientWRITE: change an existing client (partial update: only the fields you pass change; it overwrites the stored value).Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_update_client" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change an existing client (partial update: only the fields you pass change; it overwrites the stored value). PATCH /v3/clients/{id}.

    Annotations the server declares

    • title: Update client
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Only reads 19Show 19 read-only tools
  • agendapro_get_bookingOne booking by id with status, service, provider, client id, location, prices, notes and the linked sale.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_booking" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "note": it reads notes.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One booking by id with status, service, provider, client id, location, prices, notes and the linked sale. GET /v3/bookings/{id}.

    Annotations the server declares

    • title: Get booking
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_clientOne client by id with contact details, address, birth date, record number and active flag.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_client" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One client by id with contact details, address, birth date, record number and active flag. GET /v3/clients/{id}.

    Annotations the server declares

    • title: Get client
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_locationOne location by id, with address, coordinates, timezone and weekly opening hours.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_location" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One location by id, with address, coordinates, timezone and weekly opening hours. GET /v3/locations/{id}.

    Annotations the server declares

    • title: Get location
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_productOne catalog product by id with description, SKU, price, category, brand and display.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_product" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One catalog product by id with description, SKU, price, category, brand and display. GET /v3/products/{id}.

    Annotations the server declares

    • title: Get product
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_providerOne service provider by id, with biography, images and working hours including breaks.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_provider" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One service provider by id, with biography, images and working hours including breaks. GET /v3/providers/{id}.

    Annotations the server declares

    • title: Get provider
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_saleOne sale by id with amounts, status, location and its payment transactions (amount, paid-at, payment method).Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_sale" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One sale by id with amounts, status, location and its payment transactions (amount, paid-at, payment method). GET /v3/sales/{id}.

    Annotations the server declares

    • title: Get sale
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_get_serviceOne service by id, including its category, images and the providers who perform it.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_get_service" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One service by id, including its category, images and the providers who perform it. GET /v3/services/{id}.

    Annotations the server declares

    • title: Get service
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_available_slotsFree 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).Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_available_slots" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List available slots
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_bookingsList bookings (reservas / appointments) with time, status, service, provider, client id, location, price and the linked sale.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_bookings" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List bookings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_client_custom_attributesThe custom attribute values stored for one client (id, name, datatype, value).Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_client_custom_attributes" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The custom attribute values stored for one client (id, name, datatype, value). GET /v3/clients/{id}/custom_attributes.

    Annotations the server declares

    • title: List a client's custom attributes
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_clientsList the business's clients (customers) page by page: name, email, phone, identification number, address, birth date, record number, active flag.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_clients" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List clients
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_custom_attributesThe custom client fields the business defined (id, name, datatype, mandatory, group, choices).Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_custom_attributes" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List custom attribute templates
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_locationsList the business's locations (sucursales / locales): id, name, address, phone, email, timezone, opening hours and country.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_locations" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List locations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_productsList retail products in the catalog: name, SKU, price, active flag, category, brand and display.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_products" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List retail products in the catalog: name, SKU, price, active flag, category, brand and display. GET /v3/products.

    Annotations the server declares

    • title: List products
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_providersList service providers (the staff who take bookings): id, public name, location, active flag, online-booking flag and working hours.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_providers" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List providers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_salesList sales (ventas): status (partially_paid, paid, canceled, refunded), paid and pending amounts, paid-at time, location, client id and the payment transactions.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_sales" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List sales
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_service_categoriesList service categories, ordered as the business arranges them.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_service_categories" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List service categories, ordered as the business arranges them. GET /v3/categories.

    Annotations the server declares

    • title: List service categories
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_list_servicesList the services (treatments, classes, sessions) the business offers: id, name, price, duration, type, category, whether online booking/payment is on, and the location.Reads text others writeNo findings

    Why it is in this group

    • The name "agendapro_list_services" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List services
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • agendapro_search_clientsFind clients by free text (name, email, phone, identification number or record number): a short ranked list with id, full name, email, phone.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "agendapro_search_clients" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "find" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "find" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Search clients
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data5
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http agendapro https://agendapro.usefulapi.io/mcp
claude mcp add --transport http agendapro https://agendapro.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agendapro__agendapro_list_locations",
      "mcp__agendapro__agendapro_get_location",
      "mcp__agendapro__agendapro_list_services",
      "mcp__agendapro__agendapro_get_service",
      "mcp__agendapro__agendapro_list_service_categories",
      "mcp__agendapro__agendapro_list_providers",
      "mcp__agendapro__agendapro_get_provider",
      "mcp__agendapro__agendapro_list_bookings",
      "mcp__agendapro__agendapro_get_booking",
      "mcp__agendapro__agendapro_list_available_slots",
      "mcp__agendapro__agendapro_list_clients",
      "mcp__agendapro__agendapro_search_clients",
      "mcp__agendapro__agendapro_get_client",
      "mcp__agendapro__agendapro_list_client_custom_attributes",
      "mcp__agendapro__agendapro_list_custom_attributes",
      "mcp__agendapro__agendapro_list_sales",
      "mcp__agendapro__agendapro_get_sale",
      "mcp__agendapro__agendapro_list_products",
      "mcp__agendapro__agendapro_get_product"
    ],
    "ask": [],
    "deny": [
      "mcp__agendapro__agendapro_create_booking",
      "mcp__agendapro__agendapro_update_booking",
      "mcp__agendapro__agendapro_cancel_booking",
      "mcp__agendapro__agendapro_create_client",
      "mcp__agendapro__agendapro_update_client"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as agendapro. Review it before you use it.

Capability tags behind 24 rules
  • mcp__agendapro__agendapro_list_locations private-data, untrusted-input
  • mcp__agendapro__agendapro_get_location untrusted-input
  • mcp__agendapro__agendapro_list_services untrusted-input
  • mcp__agendapro__agendapro_get_service untrusted-input
  • mcp__agendapro__agendapro_list_service_categories untrusted-input
  • mcp__agendapro__agendapro_list_providers untrusted-input
  • mcp__agendapro__agendapro_get_provider untrusted-input
  • mcp__agendapro__agendapro_list_bookings untrusted-input
  • mcp__agendapro__agendapro_get_booking private-data, untrusted-input
  • mcp__agendapro__agendapro_list_available_slots untrusted-input
  • mcp__agendapro__agendapro_create_booking untrusted-input
  • mcp__agendapro__agendapro_update_booking untrusted-input
  • mcp__agendapro__agendapro_cancel_booking untrusted-input
  • mcp__agendapro__agendapro_list_clients private-data, untrusted-input
  • mcp__agendapro__agendapro_search_clients private-data, untrusted-input
  • mcp__agendapro__agendapro_get_client private-data, untrusted-input
  • mcp__agendapro__agendapro_list_client_custom_attributes untrusted-input
  • mcp__agendapro__agendapro_list_custom_attributes untrusted-input
  • mcp__agendapro__agendapro_create_client untrusted-input
  • mcp__agendapro__agendapro_update_client untrusted-input
  • mcp__agendapro__agendapro_list_sales untrusted-input
  • mcp__agendapro__agendapro_get_sale untrusted-input
  • mcp__agendapro__agendapro_list_products untrusted-input
  • mcp__agendapro__agendapro_get_product untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/agendapro/verify?hash=11f2c56ec0f13e6d80afaea496966de9f42dc0f2616f3efc3a3952e5c35da0b8" | jq -e '.changed == false'

Pinned hash 11f2c56ec0f1, from Oct 24, 2026, 12:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/agendapro/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/agendapro
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/agendapro.svg)](https://anlyon.dev/servers/io.usefulapi/agendapro)

Source: MCP Registry · repository. Synced Oct 24, 2026, 13:17 UTC.