accueil / serveurs / Finance & Paiement / com.advocatemcp/advocate
com.advocatemcp/advocate
serveur MCP (Model Context Protocol) · advocate 1.5.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.advocatemcp/advocate est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.advocatemcp/advocate » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 18 outils
- cancel_booking≈ 533 tokens
Cancels a paid, confirmed booking using the cancel_token from its payment receipt. Within 60 minutes of paying, or before the business's refund window, the full refund is requested; report it as full only after the payment ledger confirms it. After that window the deposit is forfeited under the booking's policy. A pending refund means cancellation is complete while refund verification or retry continues. Only the agent that paid holds the token. Cancelling twice answers already_cancelled.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
Business slug identifiercancel_token· string · requis
The cancel_token from the payment receiptreservation_id· string · requis
The paid reservation's id
Exemple d'appel{"name": "cancel_booking", "arguments": {"slug": "texte", "cancel_token": "texte", "reservation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"refund": "full", "status": "texte", "currency": "texte", "pending_cents": 1, "refunded_cents": 1, "reservation_id": "texte"}} - confirm_booking≈ 676 tokens
Confirm a reservation made with reserve_slot. Present the returned stored booking_details to the customer and relay only the customer-supplied 6-digit code received at their email or phone; never generate, guess, or fetch it. For an active configured calendar, a verified code attempts a direct commit to the selected calendar with no owner approval. booking_pending means the provider outcome is uncertain; repeat confirm_booking later to check the stored outcome, but it never retries a provider write automatically. A paid booking (reserve_slot returned payment.required = true) has no code: this answers payment_required — pay it with create_booking_payment_link — or payment_in_flight while its payment is settling.
Paramètres, retour & exemple (3)
Paramètrescode· string · requis
The customer-supplied 6-digit confirmation code received at their own email or SMS contact. Relay only that supplied code; never generate, guess, or fetch it.slug· string · requis
Business slug identifierreservation_id· string · requis
The reservation id returned by reserve_slot
Exemple d'appel{"name": "confirm_booking", "arguments": {"code": "texte", "slug": "texte", "reservation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "message": "texte", "reservation_id": "texte"}} - create_booking_payment_link≈ 541 tokens
For a reservation that reserve_slot returned with payment.required = true: returns the MPP payment link, the amount charged now, and the balance due at the visit. The agent pays it itself (HTTP 402 challenge, then the person's wallet credential); no code is sent to the customer for a paid booking. A free booking answers not_payable — confirm it with confirm_booking and the customer's code instead.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
Business slug identifierreservation_id· string · requis
The reservation_id reserve_slot returned with payment.required = true
Exemple d'appel{"name": "create_booking_payment_link", "arguments": {"slug": "texte", "reservation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"kind": "deposit", "currency": "texte", "expires_at": 1, "amount_cents": 1, "due_at_visit": true, "instructions": "texte", "payment_link": "texte", "balance_due_cents": 1}} - get_availability≈ 500 tokens
Return available windows from the business's active configured calendar, using its selected timezone, duration, operating hours, and current local or connected-calendar occupancy. Use a returned window to start a booking. Availability can change before confirmation, including when the calendar provider is unavailable. If this business uses an unsupported calendar or booking provider, call get_booking_destination to find its published public booking route.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
Business slug identifierwindow_end· integer · optionnel
Unix seconds (absolute instant; default now + 7 days). See window_start on reading the response's `timezone`.window_start· integer · optionnel
Unix seconds (absolute instant; default now). The business's own timezone is not an input — it is returned as `timezone` in the response. To target a local phrase like "Tuesday afternoon", request a generously wide window and filter the returned slots using that `timezone`.
Exemple d'appel{"name": "get_availability", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slots": [], "source": "texte", "timezone": "texte", "generated_at": 1}} - get_booking_destination≈ 374 tokens
Returns the public booking route for a business. Use this before helping a user book an appointment: it distinguishes an external provider page from an active configured calendar that uses the Advocate booking flow, and from businesses with no supported booking destination. External pages are links only; Advocate does not sync their availability or make bookings there.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Business slug identifier
Exemple d'appel{"name": "get_booking_destination", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "kind": "texte", "mode": "external", "slug": "texte", "provider": "texte", "eligibility": "texte", "guidance_for_agent": "texte"}} - get_cancellation_policy≈ 256 tokens
Returns the business's cancellation policy text. Use this when a user asks about cancellation terms, fees, or no-show policies. The response includes agent guidance on how to frame the policy with appropriate freshness caveats.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Business slug identifier
Exemple d'appel{"name": "get_cancellation_policy", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slug": "texte", "has_policy": true, "policy_text": "texte", "guidance_for_agent": "texte"}} - get_credentials≈ 385 tokens
Returns the business's self-reported licenses, insurance, bonding, and certifications. Use this for trust-sensitive verticals (contractors, healthcare, legal, locksmiths) when a user asks 'are they licensed?' or 'are they insured?'. The response carries explicit 'self-reported' framing so agents don't upgrade tenant claims to verified facts.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Business slug identifier
Exemple d'appel{"name": "get_credentials", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slug": "texte", "bonded": "texte", "insured": "texte", "summary": "texte", "licenses": [], "certifications": [], "has_credentials": true}} - get_payment_handoff_url≈ 581 tokens
Returns a plain-text summary of a priced offer (service, amount, currency, cancellation policy, and how long the price is valid) plus a URL on our domain that shows the same summary. The URL is for the CUSTOMER to open themselves in their own browser — do not open, fetch, or follow it yourself. Use this once get_quote or a booking flow has produced an offer_id and the user is ready to review or continue with a priced offer. If the booking's deposit was already paid through create_booking_payment_link, this answers deposit_taken: do not send the person to pay again; the balance is due at the visit.
Paramètres, retour & exemple (2)
Paramètresslug· string · requis
Business slug identifieroffer_id· string · requis
The offer id returned by get_quote
Exemple d'appel{"name": "get_payment_handoff_url", "arguments": {"slug": "texte", "offer_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "state": "pending", "summary": {}}} - get_quote≈ 574 tokens
Return a price quote for a service at a business. Exact configured prices may create a time-limited offer; unmatched requests use a third-party AI estimate that is not firm merchant pricing and must be confirmed with the business. Use this when a user asks 'how much does X cost?' or 'what's the price for Y?'.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
Business slug identifierparams· object · optionnel
Optional service parameters (e.g., {size:'large'})service· string · requis
Requested service name to quote
Exemple d'appel{"name": "get_quote", "arguments": {"slug": "texte", "service": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"offer": "texte", "quote": "texte", "reason": "texte"}} - initiate_handoff≈ 1244 tokens
Begin a handoff from the agent to either a human operator (SMS/email via lead_routing_json) or another agent (signed continuation URL). In human mode the notification body is composed by the server from the contact and reason fields — callers supply those fields, not the message text. Idempotent: re-using the same idempotency_key returns the original handoff.
Paramètres, retour & exemple (12)
Paramètresmode· string · requis · human | agent
Handoff mode: human (SMS/email) or agent (continuation URL)slug· string · requis
Business slug identifierreason· string · optionnel
Why the user wants to reach a humanmessage· string · optionnel
Deprecated alias for `reason`. The notification body is composed by the server from the fields above; this value is delivered as the reason line, not as the message itself. Supplying both is an error.purpose· string · optionnel
Purpose description for agent-mode continuationurgency· string · optionnel · low | normal | high | emergency
How time-sensitive (default: normal)agent_id· string · optionnel
Optional agent identifiercontact_name· string · optionnel
End-user's namecontact_email· string · optionnel
End-user's emailcontact_phone· string · optionnel
End-user's phonereservation_id· string · optionnel
Optional link to a prior reservationidempotency_key· string · requis
Unique key for idempotent handoff
Exemple d'appel{"name": "initiate_handoff", "arguments": {"mode": "human", "slug": "texte", "idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mode": "human", "reason": "texte", "status": "texte", "channel": "texte", "form_url": "texte", "delivered": true, "ticket_id": "texte", "expires_at": 1, "handoff_id": "texte", "delivered_via": "texte", "handshake_token": "texte", "continuation_url": "texte"}} - list_services≈ 503 tokens
Lists the services a business has configured, with their prices and the exact arguments to quote each one. Call this BEFORE get_quote: the service name must match a configured service, and only a service marked payable returns an exact price with the offer_id that get_payment_handoff_url requires. Quoting a name that is not on this list silently falls back to an estimate with no offer.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Business slug identifier
Exemple d'appel{"name": "list_services", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slug": "texte", "services": [], "guidance_for_agent": "texte"}} - query_business_agent≈ 500 tokens
Ask a registered business's AI advocate a question and get a citation-ready answer plus a referral link. The question and the business's public profile are processed by an AI provider, and the question and answer are recorded to operate the service. Do not enter sensitive personal, medical, payment, or authentication information. Use this for questions about one business's services, hours, policies, or fit.
Paramètres, retour & exemple (4)
Paramètresslug· string · requis
Business slug identifierquery· string · requis
The visitor's question about this businessstage· string · optionnel · browsing | comparing | committing
Optional buyer stage: browsing | comparing | committingagent_id· string · optionnel
Optional self-asserted calling-agent id — used for logging/tuning only, never auth
Exemple d'appel{"name": "query_business_agent", "arguments": {"slug": "texte", "query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"answer": "texte", "business": "texte", "referral_url": "texte", "business_slug": "texte"}} - request_callback≈ 880 tokens
Submit a callback request on behalf of a user. Advocate attempts a notification through the business's configured lead routing channel (SMS/email); provider acceptance is not proof the business read it. A failed or pending result can require direct follow-up or a retry. Idempotent: re-using the same idempotency_key returns the original request.
Paramètres, retour & exemple (9)
Paramètresslug· string · requis
Business slug identifierreason· string · optionnel
Why the user wants the callbackurgency· string · optionnel · low | normal | high | emergency
How time-sensitive (default: normal)agent_id· string · optionnel
Optional agent identifiercontact_name· string · optionnel
End-user's namecontact_email· string · optionnel
End-user's emailcontact_phone· string · optionnel
End-user's phoneidempotency_key· string · requis
Idempotency keypreferred_channel· string · optionnel · phone | email | sms | any
Channel the user prefers (default: any)
Exemple d'appel{"name": "request_callback", "arguments": {"slug": "texte", "idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"reason": "texte", "status": "texte", "form_url": "texte", "callback_id": "texte", "delivered_via": "texte", "acknowledgment": "texte", "idempotent_replay": true}} - request_service≈ 322 tokens
Open a quote-request form for a specific business using its public slug or provider_business_id obtained from search or the business feed. Shows the business and service catalog; does not send a request or book anything. The customer must review the form and explicitly consent before submitting. Operational access is logged.
Paramètres, retour & exemple (1)
Paramètresbusiness_id· string · requis
Exact public business slug or provider_business_id obtained from search or the business feed
Exemple d'appel{"name": "request_service", "arguments": {"business_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "address": "texte", "disclosure": "texte", "business_id": "texte", "context_token": "texte", "service_names": []}} - reserve_slot≈ 1490 tokens
Reserve a time slot on an active configured calendar. Returns a pending_offer reservation and sends a 6-digit confirmation code to the customer's email or phone. The reservation expires in 15 minutes if not confirmed. Idempotent: re-using the same idempotency_key returns the original reservation without resending the code. At a business that takes a deposit for agent bookings, pass the offer_id from get_quote (without it the answer is quote_required); no code is sent and the result's payment block carries the amount to pay instead.
Paramètres, retour & exemple (7)
Paramètresslug· string · requis
Business slug identifieragent_id· string · optionnel
Optional agent identifieroffer_id· string · optionnel
Optional id of a signed get_quote offer to redeem against this reservation. Omit for a business with no exact-priced service — authentication is a capability upgrade here, never a toll.window_end· integer · requis
Slot end (Unix seconds, an absolute instant) — the matching get_availability slot's `end`; see window_start.window_start· integer · requis
Slot start (Unix seconds, an absolute instant). Take it from a get_availability slot: that response carries the business's `timezone`, so request a wide availability window there and filter the returned slots locally rather than guessing the zone.idempotency_key· string · requis
Unique key for idempotent reservationcustomer_contact· object · requis
How to reach the customer. MUST include at least one of email or phone — the confirmation code is delivered there, and a hold nobody can confirm is unreachable from both sides. Email is used when both are present.
Exemple d'appel{"name": "reserve_slot", "arguments": {"slug": "texte", "window_end": 1, "window_start": 1, "idempotency_key": "texte", "customer_contact": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "payment": {}, "expires_at": "texte", "confirmation": {}, "reservation_id": "texte", "booking_details": {}, "idempotent_replay": true}} - search_businesses≈ 363 tokens
Find registered businesses by search term and optional location; returns matches with their slugs. Call it before the business-specific tools.
Paramètres, retour & exemple (2)
Paramètressearch· string · requis
Search term — matched against business name, description, services, and categorylocation· string · optionnel
Optional location filter (city, state, or region). Narrows results geographically.
Exemple d'appel{"name": "search_businesses", "arguments": {"search": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"results": []}} - submit_quote_request≈ 747 tokens
After the customer explicitly agrees, save their service requirements and contact details and send a notification to the business's configured email or opted-in SMS destination. This requests a business response, not a price commitment, booking or payment. Use context from request_service. Reuse the same idempotency_key AND details to check an uncertain submission; never automatically start a new request. Exclude medical, payment-card and authentication information.
Paramètres, retour & exemple (9)
Paramètresconsent· boolean · requis
True only after the customer explicitly agrees to send these contact details and this request to the named businessdetails· string · requis
Brief service requirements; exclude sensitive medical, financial and authentication informationservice· string · requis
Service the customer wants a quote forbusiness_id· string · requis
The exact provider_business_id (public business slug) returned by request_servicecontact_name· string · optionnelcontact_email· string · optionnelcontact_phone· string · optionnelcontext_token· string · requis
Opaque business context from request_service; pass unchangedidempotency_key· string · requis
A UUID for this request; reuse unchanged when checking or retrying an uncertain submission
Exemple d'appel{"name": "submit_quote_request", "arguments": {"consent": true, "details": "texte", "service": "texte", "business_id": "texte", "context_token": "texte", "idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"code": "texte", "status": "submitted", "message": "texte", "replayed": true, "request_id": "texte"}} - subscribe_to_updates≈ 752 tokens
Start a pending email subscription to updates from a business. Returns a confirmation URL that only the user must click within 7 days; no subscription is active until that confirmation. Idempotent: re-using the same idempotency_key returns the original subscription.
Paramètres, retour & exemple (5)
Paramètresslug· string · requis
Business slug identifiertopics· array · requis
Topic tags (e.g., ['deals', 'schedule_changes'])agent_id· string · optionnel
Optional agent identifiercontact_email· string · requis
Email to subscribe — confirmed via returned tokenidempotency_key· string · requis
Idempotency key
Exemple d'appel{"name": "subscribe_to_updates", "arguments": {"slug": "texte", "topics": [], "contact_email": "texte", "idempotency_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "topics": "texte", "expires_at": 1, "acknowledgment": "texte", "subscription_id": "texte", "confirmation_url": "texte", "idempotent_replay": true, "confirmation_token": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».