{"name":"net.andrii/booking","slug":"andrii-booking","title":"Andrii Co. Notary & Apostille Assistant","description":"Book a Washington notary or apostille appointment, get a quote, and track it, via AI assistant.","url":"https://mcp.market/server/andrii-booking","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":19,"ok":19,"last_checked_at":"2026-09-24T04:40:48.271Z","last_ok_at":"2026-09-24T04:40:48.271Z","latency_ms":692},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://andrii.co","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://andrii.net/mcp"}],"packages":[],"tools":[{"name":"book_appointment","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"default":null,"description":"Meeting address (required for \"mobile\"; omit for office/apostille).","type":["string","null"]},"document_count":{"default":null,"description":"Number of documents. Default 1.","format":"int64","type":["integer","null"]},"notes":{"default":null,"description":"Anything else the notary should know.","type":["string","null"]},"scheduled_at":{"default":null,"description":"The chosen slot's `startUnix` (from search_availability). Omit for a\n\"call me to schedule\" request (no time held).","format":"int64","type":["integer","null"]},"service":{"description":"Service: office | mobile | apostille | loan.","type":"string"}},"required":["service"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"cancel_booking","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"order_id":{"description":"The booking's order id (from my_bookings).","type":"string"}},"required":["order_id"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"check_request_status","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"reference":{"description":"The reference id returned when the request was submitted (also accepts\nthe token from the emailed confirm link).","type":"string"}},"required":["reference"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"check_service_area","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"description":"Street address, city, or ZIP to check (Washington State service area).","type":"string"},"service":{"default":null,"description":"\"notary\" (default) or \"apostille\" — the service-area rules differ slightly.","type":["string","null"]}},"required":["address"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_apostille_requirements","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"destination_country":{"default":null,"description":"The country the apostilled document is for.","type":["string","null"]},"document":{"description":"The document in plain words (e.g. \"Washington birth certificate\",\n\"university diploma\", \"FBI background check\", \"power of attorney\").","type":"string"},"issuing_state":{"default":null,"description":"The US state that issued or notarized it (default Washington).","type":["string","null"]}},"required":["document"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_price_quote","description":"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. Returns amountCents and line items; fails if `apostille` is true and `tier` is invalid (with `apostille` false, `tier` is ignored).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"after_hours":{"default":false,"description":"Mobile only: the chosen slot is after 6pm or on a weekend.","type":"boolean"},"apostille":{"default":false,"description":"True to include a Secretary-of-State apostille.","type":"boolean"},"document_count":{"default":null,"description":"Number of documents (1–20). Default 1.","format":"int64","type":["integer","null"]},"mobile":{"default":false,"description":"True if we travel to the customer (adds the flat travel fee).","type":"boolean"},"needs_notarization":{"default":null,"description":"Set false for a mail-in apostille of already-certified public records\n(birth/marriage/death certificates) that need no notarial act.","type":["boolean","null"]},"tier":{"default":null,"description":"Apostille tier when `apostille`: expedited | priority | standard | mailin.","type":["string","null"]}},"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"get_services","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_turnaround_estimate","description":"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`. Returns staged day estimates; an unknown `tier` falls back to the standard figure, not an error.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"destination_country":{"default":null,"description":"Destination country (used to infer shipping when `shipping` is omitted).","type":["string","null"]},"service":{"description":"Service: notarization | apostille | apostille_mail | loan_signing.","type":"string"},"shipping":{"default":null,"description":"Delivery: pickup | us | ukraine | international. If omitted, inferred from\ndestination_country (apostille legs default to US shipping).","type":["string","null"]},"tier":{"default":null,"description":"Apostille speed tier when service is apostille: expedited | priority | standard.","type":["string","null"]}},"required":["service"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"my_bookings","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"request_apostille","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"destination_country":{"default":null,"description":"Destination country the apostilled documents are for.","type":["string","null"]},"documents":{"description":"What documents, in plain words (e.g. \"2 birth certificates for Ukraine\").","type":"string"},"email":{"default":null,"description":"Email. Collect BOTH an email AND a phone in one question when possible;\nat least one is required.","type":["string","null"]},"existing_reference":{"default":null,"description":"To ADD these documents to an EXISTING request instead of creating a\nsecond one, pass that request's reference id (with the same email/phone\nso we can verify the customer). Nothing new is created.","type":["string","null"]},"name":{"description":"The customer's FULL LEGAL NAME exactly as on their government-issued ID\n(never a nickname) — apostille filings print it.","type":"string"},"notes":{"default":null,"description":"Anything else the notary should know.","type":["string","null"]},"phone":{"default":null,"description":"Phone with country code — the notary confirms fastest by phone/SMS.","type":["string","null"]}},"required":["documents","name"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"request_booking","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"default":null,"description":"Meeting address — MOBILE ONLY. Office and apostille visits automatically\nuse our Bothell office; omit this for them.","type":["string","null"]},"desired_time":{"default":null,"description":"The wanted time in plain words, when no exact slot was chosen (rides the\nnotes; the notary confirms a real time).","type":["string","null"]},"desired_time_unix":{"default":null,"description":"The chosen slot's `startUnix` from search_availability (Unix seconds).\nPass it so the request carries the exact wanted time — still a request,\nnever a hold.","format":"int64","type":["integer","null"]},"document_count":{"default":null,"description":"Number of documents. Default 1.","format":"int64","type":["integer","null"]},"email":{"default":null,"description":"Email. Collect BOTH an email AND a phone in one question when possible;\nat least one is required.","type":["string","null"]},"existing_reference":{"default":null,"description":"To ADD to or change an EXISTING request instead of creating a second one\n(e.g. \"also apostille it\", \"make it 3 documents\"), pass that request's\nreference id here — the same email/phone must be provided so we can\nverify it's the same customer. Nothing new is created.","type":["string","null"]},"name":{"description":"The customer's FULL LEGAL NAME exactly as on their government-issued ID\n(never a nickname or chat display name) — notarial records and apostille\nfilings print it. Ask if you only know a first name.","type":"string"},"notes":{"default":null,"description":"Anything else the notary should know.","type":["string","null"]},"phone":{"default":null,"description":"Phone with country code (e.g. +1...). The notary confirms fastest by\nphone/SMS — ask for it even when an email is known.","type":["string","null"]},"service":{"description":"Service: office | mobile | apostille | loan.","type":"string"}},"required":["service","name"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"request_price_match","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"competitor_name":{"description":"The competitor's business name.","type":"string"},"competitor_price_usd":{"description":"The competitor's quoted price, in US dollars.","format":"double","type":"number"},"competitor_url":{"default":null,"description":"Link to the competitor's quote/page, if any (stored for the operator,\nnever fetched).","type":["string","null"]},"document_count":{"default":null,"description":"Number of documents, for our comparison quote. Default 1.","format":"int64","type":["integer","null"]},"email":{"default":null,"description":"Email — provide an email OR a phone so we can reach them.","type":["string","null"]},"name":{"description":"The customer's name.","type":"string"},"notes":{"default":null,"description":"Anything else the notary should know.","type":["string","null"]},"phone":{"default":null,"description":"Phone — provide an email OR a phone so we can reach them.","type":["string","null"]},"service":{"description":"Service: office | mobile | apostille | apostille_mail | loan.","type":"string"}},"required":["name","service","competitor_name","competitor_price_usd"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"reschedule_booking","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"order_id":{"description":"The booking's order id (from my_bookings).","type":"string"},"scheduled_at":{"description":"The new slot's `startUnix` (from search_availability).","format":"int64","type":"integer"}},"required":["order_id","scheduled_at"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"search_availability","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"default":null,"description":"The address to meet at — required for \"mobile\"; ignored for \"office\".","type":["string","null"]},"document_count":{"default":null,"description":"Number of documents (drives the appointment length). Default 1.","format":"int64","type":["integer","null"]},"service":{"description":"\"office\" (at our office), \"mobile\" (we come to you), or \"apostille\".","type":"string"}},"required":["service"],"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"name":"search_documentation","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"default":null,"description":"Restrict to one language. Only `en` is indexed today; any other value\nreturns no results rather than silently ignoring the filter.","type":["string","null"]},"limit":{"default":null,"description":"How many results (default 10, max 20).","format":"uint32","minimum":0,"type":["integer","null"]},"query":{"description":"What to look for. Keywords beat prose: this is a lexical index with no\nsemantic fallback, so \"mail-in apostille birth certificate\" finds the\npage that \"can I post my documents instead\" does not.","type":"string"},"section":{"default":null,"description":"Restrict to sections whose heading contains this text (e.g. \"What it\ncosts\"). Heading TEXT, not a URL fragment — the pages carry no anchors.","type":["string","null"]}},"required":["query"],"$schema":"https://json-schema.org/draft/2020-12/schema"}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-24T05:04:17.025Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:04:17.021Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 965ms"]},"poisoning":{"score":15,"max":15,"notes":["15 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://andrii.net/mcp","reachable":true,"authRequired":false,"latencyMs":965,"serverInfo":{"name":"net.andrii/booking","version":"1.0.1"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://andrii.net/icon-512.png","source":"registry","width":512,"height":512},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}