accueil / serveurs / Recherche & Web / net.andrii/booking
net.andrii/booking
serveur MCP (Model Context Protocol) · net.andrii/booking 1.0.1
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 net.andrii/booking est sûr ?
Au dernier audit MCP Hub, le serveur MCP « net.andrii/booking » 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 15 outils
- book_appointment≈ 714 tokens
Schedule an appointment tied to the signed-in customer's account — still a request until the notary confirms it, never guaranteed. PREFER this over request_booking whenever the customer is signed in: only a booking on their own account can later be listed, rescheduled or cancelled through this connector. Guests go through request_booking. Accepts: `service` (e.g. office, mobile, apostille, loan), `scheduled_at` — a slot's startUnix from search_availability, omitted for a call-me request — plus `address` for mobile, `notes`, `document_count`. Returns a Pending reference; fails if not signed in.
Paramètres, retour & exemple (5)
Paramètresnotes· string|null · optionnel
Anything else the notary should know.address· string|null · optionnel
Meeting address (required for "mobile"; omit for office/apostille).service· string · requis
Service: office | mobile | apostille | loan.scheduled_at· integer|null · optionnel
The chosen slot's `startUnix` (from search_availability). Omit for a "call me to schedule" request (no time held).document_count· integer|null · optionnel
Number of documents. Default 1.
Exemple d'appel{"name": "book_appointment", "arguments": {"service": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - cancel_booking≈ 493 tokens
Cancel a booking on the signed-in account — Pending or Scheduled only. Use when the visit is no longer needed; guests cancel via their emailed manage link instead. Accepts: `order_id` (e.g. copied from my_bookings). Returns a cancellation notice; fails if the booking is not yours, is neither Pending nor Scheduled, or not signed in.
Paramètres, retour & exemple (1)
Paramètresorder_id· string · requis
The booking's order id (from my_bookings).
Exemple d'appel{"name": "cancel_booking", "arguments": {"order_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - check_request_status≈ 655 tokens
Check what became of a previously submitted request — no sign-in needed, guests welcome. Use when the customer asks whether the notary confirmed, moved, cancelled, or merged it. Accepts: `reference` — the id returned at submission or the token from the emailed confirm link. Returns the service plus status and timing (PII-minimal — never address, name, or notes; Pacific time, e.g. scheduledAtPacific). Fails if the reference is wrong — a not found reply.
Paramètres, retour & exemple (1)
Paramètresreference· string · requis
The reference id returned when the request was submitted (also accepts the token from the emailed confirm link).
Exemple d'appel{"name": "check_request_status", "arguments": {"reference": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "status": "texte", "service": "texte", "reference": "texte", "mergedInto": {}, "scheduledAt": 1, "displayStatus": {}, "requestedTime": 1, "scheduledAtPacific": "texte", "awaitingCustomerConfirmation": true}} - check_service_area≈ 431 tokens
Check whether an address sits inside our Washington coverage and resolves precisely enough to book. Use when the customer wants an area answer without searching slots — search_availability already validates the area itself. Accepts: `address` (e.g. a Seattle street or ZIP) and optional `service` — notary or apostille rules differ. Returns withinServiceArea, distanceMiles, precise; if the address cannot be resolved the message says not found.
Paramètres, retour & exemple (2)
Paramètresaddress· string · requis
Street address, city, or ZIP to check (Washington State service area).service· string|null · optionnel
"notary" (default) or "apostille" — the service-area rules differ slightly.
Exemple d'appel{"name": "check_service_area", "arguments": {"address": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"label": "texte", "region": "texte", "country": "texte", "message": "texte", "precise": true, "distanceMiles": 1, "withinServiceArea": true}} - get_apostille_requirements≈ 698 tokens
Check whether a document can get an apostille and how: certified vital records mail in as-is, private papers (e.g. a diploma or POA) need notarization first, federal ones go to the US Department of State. Use when the customer asks is this apostillable. Accepts: `document` in plain words, optional `issuing_state`, `destination_country`. Returns the category, the honest do-it-yourself path and our offer; unclear wording yields an `unknown` category, never an error.
Paramètres, retour & exemple (3)
Paramètresdocument· string · requis
The document in plain words (e.g. "Washington birth certificate", "university diploma", "FBI background check", "power of attorney").issuing_state· string|null · optionnel
The US state that issued or notarized it (default Washington).destination_country· string|null · optionnel
The country the apostilled document is for.
Exemple d'appel{"name": "get_apostille_requirements", "arguments": {"document": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"diyPath": {}, "category": "texte", "document": "texte", "ourOffer": {}, "disclaimer": "texte", "destination": {}, "explanation": "texte", "howToProceed": "texte", "issuingState": "texte", "eligibleForMailInAsIs": true}} - get_price_quote≈ 654 tokens
Calculate a server-authoritative USD price estimate before shipping — pure, no side effects, nothing booked. Use when the customer asks about cost. Accepts: `document_count`, `mobile`, `after_hours`, `apostille` plus `tier` (e.g. expedited, priority, standard, mailin); set `needs_notarization` false for already-certified records; `ua_lane` (withinUkraine | fromUsa) prices the Ukraine direct lane, `translation_docs` the in-Ukraine translation. Returns amountCents and line items; fails if `apostille` is true and `tier` is invalid (with `apostille` false, `tier` is ignored).
Paramètres, retour & exemple (8)
Paramètrestier· string|null · optionnel
Apostille tier when `apostille`: expedited | priority | standard | mailin.mobile· boolean · optionnel
True if we travel to the customer (adds the flat travel fee).ua_lane· string|null · optionnel
Ukraine delivery lane: withinUkraine (weekly batch, included) or fromUsa (direct: NP postage estimate + the $25 dispatch fee).apostille· boolean · optionnel
True to include a Secretary-of-State apostille.after_hours· boolean · optionnel
Mobile only: the chosen slot is after 6pm or on a weekend.document_count· integer|null · optionnel
Number of documents (1–20). Default 1.translation_docs· integer|null · optionnel
Apostille documents translated in Ukraine ($20/doc; the first doc is free on the direct lane).needs_notarization· boolean|null · optionnel
Set false for a mail-in apostille of already-certified public records (birth/marriage/death certificates) that need no notarial act.
Exemple d'appel{"name": "get_price_quote", "arguments": {"tier": "texte", "mobile": true, "ua_lane": "texte", "apostille": true, "after_hours": true, "document_count": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"currency": "texte", "lineItems": [], "amountCents": 1, "howToProceed": "texte", "prepaymentRequired": true}} - get_services≈ 353 tokens
List the service catalog — Washington notary and apostille offerings with USD prices and accepted payment options (e.g. card, PayPal, Venmo, cash). Optional — the server instructions already summarize the flow; use when the customer asks what we offer or how to pay. Takes: no arguments. Returns `services` plus payment notes — a static catalog (no error if repeated).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_services", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"business": "texte", "location": "texte", "services": [], "languages": [], "priceMatch": "texte", "priceQuote": "texte", "paymentNote": "texte", "serviceArea": "texte", "paymentOptions": [], "remoteOnlineNotarization": true}} - get_turnaround_estimate≈ 626 tokens
Calculate typical turnaround — apostille processing days plus mailing and delivery legs. Ranges, never guarantees; exact appointment times come from search_availability. Use when the customer asks how long. Accepts: `service` (e.g. notarization, apostille, apostille_mail, loan_signing), optional `tier`, `shipping`, `destination_country`, `ua_lane` (withinUkraine | fromUsa — the Ukraine lane when `shipping` is omitted). Returns staged day estimates; an unknown `tier` falls back to the standard figure, not an error.
Paramètres, retour & exemple (5)
Paramètrestier· string|null · optionnel
Apostille speed tier when service is apostille: expedited | priority | standard.service· string · requis
Service: notarization | apostille | apostille_mail | loan_signing.ua_lane· string|null · optionnel
Ukraine delivery lane: withinUkraine (weekly batch, 7–14 days) or fromUsa (direct from the USA, 7–10 days). Fills `shipping` when that is omitted; an explicit `shipping` always wins.shipping· string|null · optionnel
Delivery: pickup | us | ukraine | ukraine_direct | international. If omitted, inferred from destination_country (apostille legs default to US shipping) or from `ua_lane` (fromUsa ⇒ ukraine_direct).destination_country· string|null · optionnel
Destination country (used to infer shipping when `shipping` is omitted).
Exemple d'appel{"name": "get_turnaround_estimate", "arguments": {"service": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"tier": "texte", "stages": [], "service": "texte", "disclaimer": "texte", "howToProceed": "texte", "typicalTotalDaysLow": 1, "typicalTotalDaysHigh": 1}} - my_bookings≈ 285 tokens
List every booking on the signed-in customer's own account, sorted by scheduled time, latest first. Use when an authenticated customer asks what is scheduled, or to grab an `order_id` before reschedule_booking or cancel_booking. Takes: no arguments. Returns orderId, service, status, scheduledAt, location per row (e.g. Scheduled vs Pending); fails if not signed in.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "my_bookings", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"bookings": []}} - request_apostille≈ 799 tokens
Submit a mail-in apostille request — a lead for already-certified Washington public records needing NO notarization (e.g. birth or marriage certificates). Use when get_apostille_requirements says they qualify. Requires: `documents`, `name`, and an email or phone; the notary replies with mailing instructions and a quote — nothing charged until approved. Pass `existing_reference` to extend an open request. Returns a reference; fails if the name or a valid contact is missing.
Paramètres, retour & exemple (7)
Paramètresname· string · requis
The customer's FULL LEGAL NAME exactly as on their government-issued ID (never a nickname) — apostille filings print it.email· string|null · optionnel
Email. Collect BOTH an email AND a phone in one question when possible; at least one is required.notes· string|null · optionnel
Anything else the notary should know.phone· string|null · optionnel
Phone with country code — the notary confirms fastest by phone/SMS.documents· string · requis
What documents, in plain words (e.g. "2 birth certificates for Ukraine").existing_reference· string|null · optionnel
To ADD these documents to an EXISTING request instead of creating a second one, pass that request's reference id (with the same email/phone so we can verify the customer). Nothing new is created.destination_country· string|null · optionnel
Destination country the apostilled documents are for.
Exemple d'appel{"name": "request_apostille", "arguments": {"name": "texte", "documents": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - request_booking≈ 1026 tokens
Submit a booking request — a lead, NOT a confirmed appointment; the notary follows up. Use when ready to book AND the customer is not signed in; a signed-in customer goes through book_appointment instead. Requires: `service` (e.g. office, mobile, loan), the FULL LEGAL NAME as on government ID, and an email or phone (collect both). Pass the chosen startUnix from search_availability as `desired_time_unix`; to modify an open request pass `existing_reference`, never a duplicate. Returns a reference for check_request_status; fails if the name or a valid contact is missing.
Paramètres, retour & exemple (10)
Paramètresname· string · requis
The customer's FULL LEGAL NAME exactly as on their government-issued ID (never a nickname or chat display name) — notarial records and apostille filings print it. Ask if you only know a first name.email· string|null · optionnel
Email. Collect BOTH an email AND a phone in one question when possible; at least one is required.notes· string|null · optionnel
Anything else the notary should know.phone· string|null · optionnel
Phone with country code (e.g. +1...). The notary confirms fastest by phone/SMS — ask for it even when an email is known.address· string|null · optionnel
Meeting address — MOBILE ONLY. Office and apostille visits automatically use our Bothell office; omit this for them.service· string · requis
Service: office | mobile | apostille | loan.desired_time· string|null · optionnel
The wanted time in plain words, when no exact slot was chosen (rides the notes; the notary confirms a real time).document_count· integer|null · optionnel
Number of documents. Default 1.desired_time_unix· integer|null · optionnel
The chosen slot's `startUnix` from search_availability (Unix seconds). Pass it so the request carries the exact wanted time — still a request, never a hold.existing_reference· string|null · optionnel
To ADD to or change an EXISTING request instead of creating a second one (e.g. "also apostille it", "make it 3 documents"), pass that request's reference id here — the same email/phone must be provided so we can verify it's the same customer. Nothing new is created.
Exemple d'appel{"name": "request_booking", "arguments": {"name": "texte", "service": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - request_price_match≈ 796 tokens
Request a price-match review of a competitor's WRITTEN quote from a comparable licensed notary — it never sets our price automatically. Use when the customer found a cheaper offer. Requires: `competitor_name`, `competitor_price_usd`, `service` (e.g. office, mobile, apostille), `name`, and an email or phone. Returns a logged reference and, where computable, our comparable quote; the notary decides within one business day. Fails if the name or a valid contact is missing.
Paramètres, retour & exemple (9)
Paramètresname· string · requis
The customer's name.email· string|null · optionnel
Email — provide an email OR a phone so we can reach them.notes· string|null · optionnel
Anything else the notary should know.phone· string|null · optionnel
Phone — provide an email OR a phone so we can reach them.service· string · requis
Service: office | mobile | apostille | apostille_mail | loan.competitor_url· string|null · optionnel
Link to the competitor's quote/page, if any (stored for the operator, never fetched).document_count· integer|null · optionnel
Number of documents, for our comparison quote. Default 1.competitor_name· string · requis
The competitor's business name.competitor_price_usd· number · requis
The competitor's quoted price, in US dollars.
Exemple d'appel{"name": "request_price_match", "arguments": {"name": "texte", "service": "texte", "competitor_name": "texte", "competitor_price_usd": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - reschedule_booking≈ 550 tokens
Move one of the signed-in customer's own bookings to a new slot. Use when an authenticated customer wants a different time: find the `order_id` via my_bookings, take a fresh startUnix from search_availability (e.g. a morning slot), send it as `scheduled_at`. Returns a done confirmation; fails if the new time is not genuinely available, the booking is not yours, or not signed in.
Paramètres, retour & exemple (2)
Paramètresorder_id· string · requis
The booking's order id (from my_bookings).scheduled_at· integer · requis
The new slot's `startUnix` (from search_availability).
Exemple d'appel{"name": "reschedule_booking", "arguments": {"order_id": "texte", "scheduled_at": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "status": "texte", "message": "texte", "manageUrl": "texte", "onAccount": true, "reference": "texte", "appendedToExisting": true, "ourComparableQuoteCents": 1}} - search_availability≈ 911 tokens
Find open appointment slots (validating the meeting area too). Use when the customer wants a time. Requires: `service` (office, mobile, apostille); mobile needs an `address`, e.g. a Bothell street. Returns resolved location, up to 7 recommended slots with startUnix, and per-day windows — the k-th start is startUnixFrom + k*stepSec for k < startCount; hand the picked startUnix to request_booking as `desired_time_unix`. An ungeocodable address is flagged not found.
Paramètres, retour & exemple (3)
Paramètresaddress· string|null · optionnel
The address to meet at — required for "mobile"; ignored for "office".service· string · requis
"office" (at our office), "mobile" (we come to you), or "apostille".document_count· integer|null · optionnel
Number of documents (drives the appointment length). Default 1.
Exemple d'appel{"name": "search_availability", "arguments": {"service": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"days": [], "resolved": {}, "recommended": [], "afterHoursSurchargeCents": 1}} - search_documentation≈ 582 tokens
Search the text of andrii.co — every service page, the terms and privacy notices, and the 110-jurisdiction apostille handbook (who issues an apostille, accepted documents, forms, offices, fees, payment). Use for reference questions the other tools do not answer, and to cite a page. Accepts: `query` (keywords, not prose — there is no semantic matching), optional `lang`, `section`, `limit`. Returns ranked page excerpts with a URL and a Markdown URL to read in full; no match is an empty list. Reference text, not a live quote — use get_price_quote and check_service_area for what we charge and where we go.
Paramètres, retour & exemple (4)
Paramètreslang· string|null · optionnel
Restrict to one language. Only `en` is indexed today; any other value returns no results rather than silently ignoring the filter.limit· integer|null · optionnel
How many results (default 10, max 20).query· string · requis
What to look for. Keywords beat prose: this is a lexical index with no semantic fallback, so "mail-in apostille birth certificate" finds the page that "can I post my documents instead" does not.section· string|null · optionnel
Restrict to sections whose heading contains this text (e.g. "What it costs"). Heading TEXT, not a URL fragment — the pages carry no anchors.
Exemple d'appel{"name": "search_documentation", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "count": 1, "query": "texte", "results": []}}
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é ».