Book a Washington notary or apostille appointment, get a quote, and track it, via AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh 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.
Service: office | mobile | apostille | loan.
Anything else the notary should know.
Meeting address (required for "mobile"; omit for office/apostille).
The chosen slot's `startUnix` (from search_availability). Omit for a "call me to schedule" request (no time held).
Number of documents. Default 1.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| notes | string | null | Anything else the notary should know. |
| address | string | null | Meeting address (required for "mobile"; omit for office/apostille). |
| service* | string | Service: office | mobile | apostille | loan. |
| scheduled_at | integer | null | The chosen slot's `startUnix` (from search_availability). Omit for a "call me to schedule" request (no time held). |
| document_count | integer | null | Number of documents. Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"service"
],
"properties": {
"notes": {
"type": [
"string",
"null"
],
"default": null,
"description": "Anything else the notary should know."
},
"address": {
"type": [
"string",
"null"
],
"default": null,
"description": "Meeting address (required for \"mobile\"; omit for office/apostille)."
},
"service": {
"type": "string",
"description": "Service: office | mobile | apostille | loan."
},
"scheduled_at": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "The chosen slot's `startUnix` (from search_availability). Omit for a\n\"call me to schedule\" request (no time held)."
},
"document_count": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Number of documents. Default 1."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The booking's order id (from my_bookings). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "The booking's order id (from my_bookings)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| reference* | string | The reference id returned when the request was submitted (also accepts the token from the emailed confirm link). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"reference"
],
"properties": {
"reference": {
"type": "string",
"description": "The reference id returned when the request was submitted (also accepts\nthe token from the emailed confirm link)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| address* | string | Street address, city, or ZIP to check (Washington State service area). |
| service | string | null | "notary" (default) or "apostille" — the service-area rules differ slightly. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Street address, city, or ZIP to check (Washington State service area)."
},
"service": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"notary\" (default) or \"apostille\" — the service-area rules differ slightly."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| document* | string | The document in plain words (e.g. "Washington birth certificate", "university diploma", "FBI background check", "power of attorney"). |
| issuing_state | string | null | The US state that issued or notarized it (default Washington). |
| destination_country | string | null | The country the apostilled document is for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"document"
],
"properties": {
"document": {
"type": "string",
"description": "The document in plain words (e.g. \"Washington birth certificate\",\n\"university diploma\", \"FBI background check\", \"power of attorney\")."
},
"issuing_state": {
"type": [
"string",
"null"
],
"default": null,
"description": "The US state that issued or notarized it (default Washington)."
},
"destination_country": {
"type": [
"string",
"null"
],
"default": null,
"description": "The country the apostilled document is for."
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| tier | string | null | Apostille tier when `apostille`: expedited | priority | standard | mailin. |
| mobile | boolean | True if we travel to the customer (adds the flat travel fee). |
| ua_lane | string | null | Ukraine delivery lane: withinUkraine (weekly batch, included) or fromUsa (direct: NP postage estimate + the $25 dispatch fee). |
| apostille | boolean | True to include a Secretary-of-State apostille. |
| after_hours | boolean | Mobile only: the chosen slot is after 6pm or on a weekend. |
| document_count | integer | null | Number of documents (1–20). Default 1. |
| translation_docs |
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).
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| tier | string | null | Apostille speed tier when service is apostille: expedited | priority | standard. |
| service* | string | Service: notarization | apostille | apostille_mail | loan_signing. |
| ua_lane | string | null | 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 | 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 | Destination country (used to infer shipping when `shipping` is omitted). |
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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string | The customer's FULL LEGAL NAME exactly as on their government-issued ID (never a nickname) — apostille filings print it. |
| string | null | Email. Collect BOTH an email AND a phone in one question when possible; at least one is required. | |
| notes | string | null | Anything else the notary should know. |
| phone | string | null | Phone with country code — the notary confirms fastest by phone/SMS. |
| documents* | string | What documents, in plain words (e.g. "2 birth certificates for Ukraine"). |
| existing_reference | string | null | 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 |
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.
| Argument | Type | Description |
|---|---|---|
| name* | string | 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. |
| string | null | Email. Collect BOTH an email AND a phone in one question when possible; at least one is required. | |
| notes | string | null | Anything else the notary should know. |
| phone | string | null | 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 | Meeting address — MOBILE ONLY. Office and apostille visits automatically use our Bothell office; omit this for them. |
| service* | string | Service: office | mobile | apostille | loan. |
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.
| Argument | Type | Description |
|---|---|---|
| name* | string | The customer's name. |
| string | null | Email — provide an email OR a phone so we can reach them. | |
| notes | string | null | Anything else the notary should know. |
| phone | string | null | Phone — provide an email OR a phone so we can reach them. |
| service* | string | Service: office | mobile | apostille | apostille_mail | loan. |
| competitor_url | string | null | Link to the competitor's quote/page, if any (stored for the operator, never fetched). |
| document_count | integer | null | Number of documents, for our comparison quote. Default 1. |
| competitor_name |
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.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The booking's order id (from my_bookings). |
| scheduled_at* | integer | The new slot's `startUnix` (from search_availability). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"scheduled_at"
],
"properties": {
"order_id": {
"type": "string",
"description": "The booking's order id (from my_bookings)."
},
"scheduled_at": {
"type": "integer",
"format": "int64",
"description": "The new slot's `startUnix` (from search_availability)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| address | string | null | The address to meet at — required for "mobile"; ignored for "office". |
| service* | string | "office" (at our office), "mobile" (we come to you), or "apostille". |
| document_count | integer | null | Number of documents (drives the appointment length). Default 1. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"service"
],
"properties": {
"address": {
"type": [
"string",
"null"
],
"default": null,
"description": "The address to meet at — required for \"mobile\"; ignored for \"office\"."
},
"service": {
"type": "string",
"description": "\"office\" (at our office), \"mobile\" (we come to you), or \"apostille\"."
},
"document_count": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Number of documents (drives the appointment length). Default 1."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| lang | string | null | Restrict to one language. Only `en` is indexed today; any other value returns no results rather than silently ignoring the filter. |
| limit | integer | null | How many results (default 10, max 20). |
| query* | string | 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 | Restrict to sections whose heading contains this text (e.g. "What it costs"). Heading TEXT, not a URL fragment — the pages carry no anchors. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"lang": {
"type": [
"string",
"null"
],
"default": null,
"description": "Restrict to one language. Only `en` is indexed today; any other value\nreturns no results rather than silently ignoring the filter."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"default": null,
"minimum": 0,
"description": "How many results (default 10, max 20)."
},
"query": {
"type": "string",
"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."
},
"section": {
"type": [
"string",
"null"
],
"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."
}
}
}| integer | null |
| Apostille documents translated in Ukraine ($20/doc; the first doc is free on the direct lane). |
| needs_notarization | boolean | null | Set false for a mail-in apostille of already-certified public records (birth/marriage/death certificates) that need no notarial act. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tier": {
"type": [
"string",
"null"
],
"default": null,
"description": "Apostille tier when `apostille`: expedited | priority | standard | mailin."
},
"mobile": {
"type": "boolean",
"default": false,
"description": "True if we travel to the customer (adds the flat travel fee)."
},
"ua_lane": {
"type": [
"string",
"null"
],
"default": null,
"description": "Ukraine delivery lane: withinUkraine (weekly batch, included) or\nfromUsa (direct: NP postage estimate + the $25 dispatch fee)."
},
"apostille": {
"type": "boolean",
"default": false,
"description": "True to include a Secretary-of-State apostille."
},
"after_hours": {
"type": "boolean",
"default": false,
"description": "Mobile only: the chosen slot is after 6pm or on a weekend."
},
"document_count": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Number of documents (1–20). Default 1."
},
"translation_docs": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Apostille documents translated in Ukraine ($20/doc; the first doc is\nfree on the direct lane)."
},
"needs_notarization": {
"type": [
"boolean",
"null"
],
"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": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"service"
],
"properties": {
"tier": {
"type": [
"string",
"null"
],
"default": null,
"description": "Apostille speed tier when service is apostille: expedited | priority | standard."
},
"service": {
"type": "string",
"description": "Service: notarization | apostille | apostille_mail | loan_signing."
},
"ua_lane": {
"type": [
"string",
"null"
],
"default": null,
"description": "Ukraine delivery lane: withinUkraine (weekly batch, 7–14 days) or\nfromUsa (direct from the USA, 7–10 days). Fills `shipping` when that\nis omitted; an explicit `shipping` always wins."
},
"shipping": {
"type": [
"string",
"null"
],
"default": null,
"description": "Delivery: pickup | us | ukraine | ukraine_direct | international. If\nomitted, inferred from destination_country (apostille legs default to\nUS shipping) or from `ua_lane` (fromUsa ⇒ ukraine_direct)."
},
"destination_country": {
"type": [
"string",
"null"
],
"default": null,
"description": "Destination country (used to infer shipping when `shipping` is omitted)."
}
}
}| string | null |
| Destination country the apostilled documents are for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"documents",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The customer's FULL LEGAL NAME exactly as on their government-issued ID\n(never a nickname) — apostille filings print it."
},
"email": {
"type": [
"string",
"null"
],
"default": null,
"description": "Email. Collect BOTH an email AND a phone in one question when possible;\nat least one is required."
},
"notes": {
"type": [
"string",
"null"
],
"default": null,
"description": "Anything else the notary should know."
},
"phone": {
"type": [
"string",
"null"
],
"default": null,
"description": "Phone with country code — the notary confirms fastest by phone/SMS."
},
"documents": {
"type": "string",
"description": "What documents, in plain words (e.g. \"2 birth certificates for Ukraine\")."
},
"existing_reference": {
"type": [
"string",
"null"
],
"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."
},
"destination_country": {
"type": [
"string",
"null"
],
"default": null,
"description": "Destination country the apostilled documents are for."
}
}
}| desired_time | string | null | 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 | Number of documents. Default 1. |
| desired_time_unix | integer | null | 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 | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"service",
"name"
],
"properties": {
"name": {
"type": "string",
"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."
},
"email": {
"type": [
"string",
"null"
],
"default": null,
"description": "Email. Collect BOTH an email AND a phone in one question when possible;\nat least one is required."
},
"notes": {
"type": [
"string",
"null"
],
"default": null,
"description": "Anything else the notary should know."
},
"phone": {
"type": [
"string",
"null"
],
"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."
},
"address": {
"type": [
"string",
"null"
],
"default": null,
"description": "Meeting address — MOBILE ONLY. Office and apostille visits automatically\nuse our Bothell office; omit this for them."
},
"service": {
"type": "string",
"description": "Service: office | mobile | apostille | loan."
},
"desired_time": {
"type": [
"string",
"null"
],
"default": null,
"description": "The wanted time in plain words, when no exact slot was chosen (rides the\nnotes; the notary confirms a real time)."
},
"document_count": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Number of documents. Default 1."
},
"desired_time_unix": {
"type": [
"integer",
"null"
],
"format": "int64",
"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."
},
"existing_reference": {
"type": [
"string",
"null"
],
"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."
}
}
}| string |
| The competitor's business name. |
| competitor_price_usd* | number | The competitor's quoted price, in US dollars. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"service",
"competitor_name",
"competitor_price_usd"
],
"properties": {
"name": {
"type": "string",
"description": "The customer's name."
},
"email": {
"type": [
"string",
"null"
],
"default": null,
"description": "Email — provide an email OR a phone so we can reach them."
},
"notes": {
"type": [
"string",
"null"
],
"default": null,
"description": "Anything else the notary should know."
},
"phone": {
"type": [
"string",
"null"
],
"default": null,
"description": "Phone — provide an email OR a phone so we can reach them."
},
"service": {
"type": "string",
"description": "Service: office | mobile | apostille | apostille_mail | loan."
},
"competitor_url": {
"type": [
"string",
"null"
],
"default": null,
"description": "Link to the competitor's quote/page, if any (stored for the operator,\nnever fetched)."
},
"document_count": {
"type": [
"integer",
"null"
],
"format": "int64",
"default": null,
"description": "Number of documents, for our comparison quote. Default 1."
},
"competitor_name": {
"type": "string",
"description": "The competitor's business name."
},
"competitor_price_usd": {
"type": "number",
"format": "double",
"description": "The competitor's quoted price, in US dollars."
}
}
}