Agenviva
This listing identifies a third-party MCP server. MCPBundles is not affiliated with, sponsored by, or endorsed by the service or its operator unless stated on this page.
https://agenviva.com/https://agenviva.com/mcpLast probed Nov 2, 2026 · agenviva.com
14tools discovered
Get
My
Other capabilities
Count Professionals
count_professionalsHow many professionals there are, by profession: in all of Mexico (leave place empty; this also gives the total on Agenviva in every country), in a Mexican state (e.g. Jalisco, CDMX) or around a city (within 20 km): how many are on Agenviva and can be booked, and how many offices exist that are not on Agenviva yet (from INEGI's official directory, Mexico only: dentists and psychologists). Numbers only, never which ones. If the patient's own professional is not on Agenviva, suggest invite_my_prof
Description may be truncated on the public preview.
Add to workspace[
{
"name": "count_professionals",
"annotations": {
"readOnlyHint": true
},
"description": "How many professionals there are, by profession: in all of Mexico (leave place empty; this also gives the total on Agenviva in every country), in a Mexican state (e.g. Jalisco, CDMX) or around a city (within 20 km): how many are on Agenviva and can be booked, and how many offices exist that are not on Agenviva yet (from INEGI's official directory, Mexico only: dentists and psychologists). Numbers only, never which ones. If the patient's own professional is not on Agenviva, suggest invite_my_professional.",
"inputSchema": {
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "A city (Cancún), a Mexican state (Jalisco, CDMX), or empty for all of Mexico"
},
"profession": {
"type": "string",
"description": "Profession, e.g. dentist, psychologist"
}
}
}
},
{
"name": "search_professionals",
"annotations": {
"readOnlyHint": true
},
"description": "Search the professionals on Agenviva by name, office, profession or city; without any of them, everyone who can be booked (up to 20, and the total). Returns each one's name, profession, location and the link to their page. Then get_free_times and book_appointment book it for the patient. Only professionals who can be found; never their phone or email.",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City"
},
"query": {
"type": "string",
"description": "Name, office or profession, e.g. « dentist » or « Ana López »"
}
}
}
},
{
"name": "get_professional",
"annotations": {
"readOnlyHint": true
},
"description": "One professional's page: name, profession, licence number (cédula), office (full address, or only the city, as the professional chose), time zone, appointment types with duration and price, team, booking rules, and the link to their page. Book with book_appointment. Never their phone or email.",
"inputSchema": {
"type": "object",
"required": [
"page"
],
"properties": {
"page": {
"type": "string",
"description": "The link to their page (from search_professionals), or its last part"
}
}
}
},
{
"name": "get_free_times",
"annotations": {
"readOnlyHint": true
},
"description": "A professional's free times for one appointment type, day by day, in the office's time zone (up to 14 days at a time). In a team, each day also says who is free at which time (by_member): tell the patient who it would be with. Then book one of them with book_appointment (with with_member to choose the person; without it, the first one free).",
"inputSchema": {
"type": "object",
"required": [
"page"
],
"properties": {
"days": {
"type": "integer",
"description": "How many days, 1 to 14 (default 7)"
},
"page": {
"type": "string",
"description": "The link to their page, or its last part"
},
"from_date": {
"type": "string",
"description": "First day, YYYY-MM-DD (default: today)"
},
"with_member": {
"type": "string",
"description": "A team member's name, to see only their times (optional)"
},
"appointment_type": {
"type": "string",
"description": "As in get_professional; may be left out if there is only one"
}
}
}
},
{
"name": "invite_my_professional",
"annotations": {
"readOnlyHint": true
},
"description": "Prepare an invitation the patient sends to their own professional, from their own WhatsApp: the message, in the patient's language, and a link that opens WhatsApp with it. Agenviva sends nothing: show the link to the patient, who taps it and sends the message.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The professional's name, e.g. Dra. López"
},
"phone": {
"type": "string",
"description": "The professional's mobile, if the patient gives it"
},
"language": {
"enum": [
"es",
"en",
"fr",
"pt"
],
"type": "string",
"description": "The patient's language (default es)"
}
}
}
},
{
"name": "book_appointment",
"annotations": {
"readOnlyHint": false
},
"description": "Book an appointment for the patient, in two calls. 1) Without booking_token: check the time is free, then send a 6-digit code to the patient's mobile (WhatsApp, or SMS) and return a booking_token. Before that, ask the patient for their name and mobile, and make sure they accept Agenviva's terms and privacy notice. 2) With booking_token and the code the patient received: book it. Never ask for or pass on the reason for the visit. If the appointment is for someone else (a child), give their name in patient_first_name and patient_last_name; the mobile stays the one of the person booking.",
"inputSchema": {
"type": "object",
"required": [
"page"
],
"properties": {
"code": {
"type": "string",
"description": "Second call only: the 6 digits the patient received"
},
"page": {
"type": "string",
"description": "The professional's page link, or its last part"
},
"email": {
"type": "string",
"description": "Optional"
},
"phone": {
"type": "string",
"description": "Their mobile, with its country code; the code is sent there"
},
"start": {
"type": "string",
"description": "YYYY-MM-DD HH:MM, one of the times from get_free_times, in the office's time zone"
},
"language": {
"enum": [
"es",
"en",
"fr",
"pt"
],
"type": "string",
"description": "The patient's language, for the code message (default es)"
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string",
"description": "The person booking"
},
"with_member": {
"type": "string",
"description": "A team member's name (optional)"
},
"booking_token": {
"type": "string",
"description": "Second call only: from the first call"
},
"accepted_terms": {
"type": "boolean",
"description": "The patient accepted https://agenviva.com/terms/ and https://agenviva.com/privacy/"
},
"appointment_type": {
"type": "string",
"description": "As in get_professional"
},
"patient_last_name": {
"type": "string"
},
"patient_first_name": {
"type": "string",
"description": "Only if the appointment is for someone else"
}
}
}
},
{
"name": "verify_my_phone",
"annotations": {
"readOnlyHint": false
},
"description": "Before the patient's own appointments (my_appointments and the others): prove their mobile, in two calls. 1) With phone: a 6-digit code goes to that mobile (WhatsApp, or SMS) and you get a verify_token. 2) With verify_token and the code the patient received: you get a patient_token, valid 6 hours, to pass to the other tools. It opens the appointments booked with this mobile number, with every professional on Agenviva.",
"inputSchema": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Second call only: the 6 digits the patient received"
},
"phone": {
"type": "string",
"description": "The patient's mobile, with its country code"
},
"language": {
"enum": [
"es",
"en",
"fr",
"pt"
],
"type": "string",
"description": "For the code message (default es)"
},
"verify_token": {
"type": "string",
"description": "Second call only: from the first call"
}
}
}
},
{
"name": "my_appointments",
"annotations": {
"readOnlyHint": true
},
"description": "The patient's upcoming appointments with all their professionals, and the last ones (60 days): professional, type, time (office time zone), place, status (confirmed, to_confirm, waiting_for_the_professional, move_requested…), and what each professional allows online (can_cancel_online, can_move_online). « for » is the person the appointment is for (a child on the parent's mobile). Never notes or health information.",
"inputSchema": {
"type": "object",
"properties": {
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
}
}
}
},
{
"name": "cancel_my_appointment",
"annotations": {
"readOnlyHint": false
},
"description": "Cancel one of the patient's appointments, within the professional's rules (can_cancel_online in my_appointments); the professional is told. Two calls: without confirm, you get what will happen and ask the patient; then with confirm true. For a booking request, withdraw_my_request.",
"inputSchema": {
"type": "object",
"required": [
"appointment_id"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Leave out the first time: you get what will happen, you ask the patient, then call again with confirm true"
},
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
},
"appointment_id": {
"type": "string",
"description": "The appointment's id, from my_appointments"
}
}
}
},
{
"name": "move_my_appointment",
"annotations": {
"readOnlyHint": false
},
"description": "Move one of the patient's appointments to a free time (get_free_times on the professional's page, same appointment type), within their rules (can_move_online). If the professional approves each move, it becomes a request and the appointment stays until they answer. Two calls: without confirm, then with confirm true.",
"inputSchema": {
"type": "object",
"required": [
"appointment_id",
"start"
],
"properties": {
"start": {
"type": "string",
"description": "YYYY-MM-DD HH:MM, a free time in the office's time zone"
},
"confirm": {
"type": "boolean",
"description": "Leave out the first time: you get what will happen, you ask the patient, then call again with confirm true"
},
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
},
"appointment_id": {
"type": "string",
"description": "The appointment's id, from my_appointments"
}
}
}
},
{
"name": "confirm_my_appointment",
"annotations": {
"readOnlyHint": false
},
"description": "Confirm an upcoming appointment whose status is to_confirm (the professional asked, or moved it). The professional sees it. Only when the patient says they'll come.",
"inputSchema": {
"type": "object",
"required": [
"appointment_id"
],
"properties": {
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
},
"appointment_id": {
"type": "string",
"description": "The appointment's id, from my_appointments"
}
}
}
},
{
"name": "withdraw_my_request",
"annotations": {
"readOnlyHint": false
},
"description": "Withdraw what the professional hasn't answered yet: a booking request (status waiting_for_the_professional), or a request to move (move_requested; the appointment stays at its time). The professional is told. Two calls: without confirm, then with confirm true.",
"inputSchema": {
"type": "object",
"required": [
"appointment_id"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Leave out the first time: you get what will happen, you ask the patient, then call again with confirm true"
},
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
},
"appointment_id": {
"type": "string",
"description": "The appointment's id, from my_appointments"
}
}
}
},
{
"name": "my_professionals",
"annotations": {
"readOnlyHint": true
},
"description": "The professionals the patient has appointments with: name, profession, place, page (to see free times and book again) and the next appointment.",
"inputSchema": {
"type": "object",
"properties": {
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
}
}
}
},
{
"name": "add_to_my_calendar",
"annotations": {
"readOnlyHint": true
},
"description": "A link that adds one of the patient's appointments to Google Calendar. For Apple or Outlook, the .ics file is attached to the confirmation email, when the patient gave an email.",
"inputSchema": {
"type": "object",
"required": [
"appointment_id"
],
"properties": {
"patient_token": {
"type": "string",
"description": "From verify_my_phone (not needed when the patient is signed in)"
},
"appointment_id": {
"type": "string",
"description": "The appointment's id, from my_appointments"
}
}
}
}
]Get your MCP into directories
A working endpoint is step one. Directory coverage is the coordinated launch across ChatGPT, Claude, Cursor, the MCP Registry, and community indexes.
Directory coverage for brandsAgenviva is an MCP server at agenviva.com. MCPBundles discovered 14 tools on the live endpoint.
Use the MCP endpoint listed on this page in your MCP client configuration. One-click install pills support Claude, Cursor, VS Code, and other hosts. Copy the remote MCP URL if your client needs a manual entry.
Request removal if you do not want Agenviva listed here, or claim the listing if you want to manage it on MCPBundles.
This server appears in the MCPBundles directory. Verify you operate it to take over the listing — name, description, logo, contact email, and skill content. We email a 6-digit code to a maintainer address your server publishes in /.well-known/security.txt or /.well-known/mcpbundles.json. Free, takes about a minute.
MCPBundles publishes this directory for MCP discovery. Except where we host or operate an offering, third-party services run under their own terms. Product and company names on this page are used in a descriptive, identifying way (including under nominative fair use where applicable); they remain the property of their owners. Nothing here grants you rights in those marks, and nothing here is an offer to sell a third party's services. Terms · Request removal
Other MCP servers in this category from the directory index
MCPBundles probed 14 tools on the live server. The tool list on this page reflects what was discovered at the last refresh — connect your client to see the full set available to your session.
No provider sign-in was required during MCPBundles' probe. Your client may still need MCPBundles credentials depending on how you connect.
Request removal from the MCPBundles directory. We stop publishing this listing on mcpbundles.com.
MCPBundles is an independent platform built on the open Model Context Protocol standard. MCPBundles is not affiliated with, sponsored by, or endorsed by Anthropic PBC.