Skip to content

Andrii Co. Notary & Apostille Assistant

by andrii.net · remote · no sign-in to list tools · v1.0.1 · published by net.andrii

Book a Washington notary or apostille appointment, get a quote, and track it, via AI assistant.

Deletes · 1Changes · 7

15 tools: 1 can delete or cancel things, 7 change things and 7 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http booking https://andrii.net/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "check_request_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "check_request_status" says "request": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

15 tools

Deletes or cancels 1Claude Code: deny
  • cancel_bookingCancel a booking on the signed-in account — Pending or Scheduled only.No findings

    Why it is in this group

    • The name "cancel_booking" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Cancel a booking
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
Changes things 7Claude Code: ask
  • book_appointmentSchedule an appointment tied to the signed-in customer's account — still a request until the notary confirms it, never guaranteed.No findings

    Why it is in this group

    • The description's first verb is "schedule": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Book an appointment
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • check_request_statusCheck what became of a previously submitted request — no sign-in needed, guests welcome.1 finding

    Why it is in this group

    • The name "check_request_status" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_request_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "check_request_status" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check request status
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • check_service_areaCheck whether an address sits inside our Washington coverage and resolves precisely enough to book.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check service area
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • request_apostilleSubmit a mail-in apostille request — a lead for already-certified Washington public records needing NO notarization (e.g.No findings

    Why it is in this group

    • The name "request_apostille" says "request": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Request mail-in apostille
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • request_bookingSubmit a booking request — a lead, NOT a confirmed appointment; the notary follows up.No findings

    Why it is in this group

    • The name "request_booking" says "request": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Request a booking
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • request_price_matchRequest a price-match review of a competitor's WRITTEN quote from a comparable licensed notary — it never sets our price automatically.No findings

    Why it is in this group

    • The name "request_price_match" says "request": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Request a price match
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • reschedule_bookingMove one of the signed-in customer's own bookings to a new slot.No findings

    Why it is in this group

    • The name "reschedule_booking" says "reschedule": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Reschedule a booking
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 7Claude Code: allow
  • get_apostille_requirementsCheck whether a document can get an apostille and how: certified vital records mail in as-is, private papers (e.g.No findings

    Why it is in this group

    • The name "get_apostille_requirements" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Check apostille requirements
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_price_quoteCalculate a server-authoritative USD price estimate before shipping — pure, no side effects, nothing booked.No findings

    Why it is in this group

    • The name "get_price_quote" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Get price quote
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_servicesList the service catalog — Washington notary and apostille offerings with USD prices and accepted payment options (e.g.No findings

    Why it is in this group

    • The name "get_services" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: List services
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_turnaround_estimateCalculate typical turnaround — apostille processing days plus mailing and delivery legs.No findings

    Why it is in this group

    • The name "get_turnaround_estimate" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Estimate turnaround
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • my_bookingsList every booking on the signed-in customer's own account, sorted by scheduled time, latest first.No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: My bookings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_availabilityFind open appointment slots (validating the meeting area too).No findings

    Why it is in this group

    • The name "search_availability" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Find open appointment slots
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • search_documentationSearch 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, o…No findings

    Why it is in this group

    • The name "search_documentation" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

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

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.

Install

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

claude mcp add --transport http booking https://andrii.net/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__booking__get_apostille_requirements",
      "mcp__booking__get_price_quote",
      "mcp__booking__get_services",
      "mcp__booking__get_turnaround_estimate",
      "mcp__booking__my_bookings",
      "mcp__booking__search_availability",
      "mcp__booking__search_documentation"
    ],
    "ask": [
      "mcp__booking__book_appointment",
      "mcp__booking__check_request_status",
      "mcp__booking__check_service_area",
      "mcp__booking__request_apostille",
      "mcp__booking__request_booking",
      "mcp__booking__request_price_match",
      "mcp__booking__reschedule_booking"
    ],
    "deny": [
      "mcp__booking__cancel_booking"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as booking. Review it before you use it.