Server definition
- Hash
- sha256:d8725da8e158445582ca244708f3b093d0e5dfaef5cabf52fdb7e87c64921129
- What it is
- What a remote MCP server returned when asked what it offers: 15 tools
The blob, as servednamed by its sha256
{
"instructions": "Andrii Co. — a Washington State notary public (Bothell, WA; English/Ukrainian/Russian). Bookings made here are REQUESTS the notary confirms out-of-band — never instant confirmations — and no payment is taken in chat. FAST PATH (goal: one question, one booking): collect in a SINGLE question the customer's FULL LEGAL NAME (exactly as on their government ID — never a chat display name), BOTH an email AND a phone when possible (one is required; phone confirms fastest), the service (office | mobile | apostille | loan), the meeting address (mobile only — office and apostille visits automatically use our Bothell office), and the preferred day/time. search_availability already validates the service area (a separate check_service_area call is rarely needed) and is read-only, safe to call in parallel with get_price_quote. Then submit ONE booking: book_appointment when the customer is SIGNED IN (the connector carries their account), request_booking when they are not, passing the chosen slot's startUnix as scheduled_at or desired_time_unix respectively. To ADD to or change an existing request, pass existing_reference — never create a second request for the same visit. Keep the returned reference and use check_request_status whenever the customer asks about status, confirmation, or rescheduling — the notary may have updated it since. A booking made while signed in comes back with onAccount: true; say so, because the customer can then ask you to list it (my_bookings), move it (reschedule_booking) or cancel it (cancel_booking) rather than hunting for an emailed link. Payments accepted: Visa/Mastercard, PayPal, Venmo, cash, Interac e-Transfer (Canadian customers), or escrow/title-company disbursement on loan signings (a line item in closing costs). Reference resources (service areas, the apostille guide, WA notary requirements, the pricing guide) are available via resources/list — background reading; live answers (quotes, slots, a specific address) come from the tools. For anything else the site documents — service-of-process, vital records, registered agent, Form I-9, notarized screenshots, the terms and privacy notices, or the per-jurisdiction apostille handbook — call search_documentation with KEYWORDS (a state name, \"registered agent\", \"Form I-9\"), not a sentence: it is a lexical index with no semantic fallback. What it returns is prose; get_price_quote and check_service_area remain authoritative for money and coverage. Service area: Washington State primary (Greater Seattle / Puget Sound); Oregon and British Columbia apostille hand-offs; cross-border meetings at Peace Arch Park. No Remote Online Notarization.",
"tools": [
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "book_appointment",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"order_id": {
"description": "The booking's order id (from my_bookings).",
"type": "string"
}
},
"required": [
"order_id"
],
"type": "object"
},
"name": "cancel_booking",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "check_request_status",
"outputSchema": {
"description": "PII-minimal status of a request — never the address, name or notes.",
"properties": {
"awaitingCustomerConfirmation": {
"type": "boolean"
},
"displayStatus": {
"description": "The customer-facing word: {code, tone}. Code is the derived display status (Signed | Apostilled | ReadyToShip | Shipped | Complete | PartiallyComplete | DealDone | …); tone is ok | warn | err | info | neutral. Quote the code's meaning from `note`, never the stored status.",
"type": "object"
},
"mergedInto": {
"description": "Only for MergedWithOther: the surviving appointment's status and time.",
"properties": {
"scheduledAt": {
"type": [
"integer",
"null"
]
},
"scheduledAtPacific": {
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object"
},
"note": {
"type": "string"
},
"reference": {
"type": "string"
},
"requestedTime": {
"description": "Unix seconds the customer asked for on a lead, or null.",
"type": [
"integer",
"null"
]
},
"scheduledAt": {
"description": "Unix seconds.",
"type": [
"integer",
"null"
]
},
"scheduledAtPacific": {
"type": [
"string",
"null"
]
},
"service": {
"description": "office | apostille | mobile | loan | ron | apostille_mail; null on a legacy row.",
"type": [
"string",
"null"
]
},
"status": {
"description": "Pending | Scheduled | EnRoute | InProgress | Completed | Notarized | PickedUp | Cancelled | NoShow | MergedWithOther. The STORED operator lifecycle — `Completed` means the notarial act happened (signed), not that the order is done. `note` says what the word means for the customer; read that rather than branching on this.",
"type": "string"
}
},
"required": [
"reference",
"service",
"status",
"awaitingCustomerConfirmation",
"note"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "check_service_area",
"outputSchema": {
"properties": {
"country": {
"type": [
"string",
"null"
]
},
"distanceMiles": {
"description": "Straight-line miles from the Bothell office (display only, not a routed leg).",
"type": "number"
},
"label": {
"description": "Formatted address, or null when the address could not be resolved.",
"type": [
"string",
"null"
]
},
"message": {
"description": "Why the place is not bookable as given, or null.",
"type": [
"string",
"null"
]
},
"precise": {
"description": "False when a street and city are still needed to pin the spot.",
"type": "boolean"
},
"region": {
"type": [
"string",
"null"
]
},
"withinServiceArea": {
"type": "boolean"
}
},
"required": [
"withinServiceArea",
"precise"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "get_apostille_requirements",
"outputSchema": {
"properties": {
"category": {
"description": "Document class: vital_record_mailin_ready, needs_notarized_copy, notarized_document, court_document, federal_authentication, unknown.",
"type": "string"
},
"destination": {
"properties": {
"country": {
"type": "string"
},
"effectiveDate": {
"type": "string"
},
"note": {
"type": "string"
},
"status": {
"description": "member | coming_soon | non_member.",
"type": "string"
}
},
"required": [
"country",
"status"
],
"type": [
"object",
"null"
]
},
"disclaimer": {
"type": "string"
},
"diyPath": {
"properties": {
"stateFee": {
"type": "string"
},
"whenToUseUs": {
"type": "string"
},
"yourself": {
"type": "string"
}
},
"type": "object"
},
"document": {
"type": "string"
},
"eligibleForMailInAsIs": {
"description": "True when no notarial act is needed first.",
"type": "boolean"
},
"explanation": {
"type": "string"
},
"howToProceed": {
"type": "string"
},
"issuingState": {
"type": "string"
},
"ourOffer": {
"properties": {
"fullServiceTiers": {
"type": "string"
},
"inPersonApostilleFromCents": {
"type": [
"integer",
"null"
]
},
"mailInApostilleFromCents": {
"type": [
"integer",
"null"
]
},
"typicalTurnaround": {
"type": [
"object",
"null"
]
},
"typicalTurnaroundTier": {
"type": "string"
}
},
"type": "object"
}
},
"required": [
"document",
"issuingState",
"category",
"eligibleForMailInAsIs",
"explanation",
"diyPath",
"ourOffer"
],
"type": "object"
}
},
{
"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; `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).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
]
},
"translation_docs": {
"default": null,
"description": "Apostille documents translated in Ukraine ($20/doc; the first doc is\nfree on the direct lane).",
"format": "int64",
"type": [
"integer",
"null"
]
},
"ua_lane": {
"default": null,
"description": "Ukraine delivery lane: withinUkraine (weekly batch, included) or\nfromUsa (direct: NP postage estimate + the $25 dispatch fee).",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"name": "get_price_quote",
"outputSchema": {
"properties": {
"amountCents": {
"type": "integer"
},
"currency": {
"type": "string"
},
"howToProceed": {
"type": "string"
},
"lineItems": {
"items": {
"properties": {
"amountCents": {
"type": "integer"
},
"label": {
"type": "string"
}
},
"required": [
"label",
"amountCents"
],
"type": "object"
},
"type": "array"
},
"prepaymentRequired": {
"type": "boolean"
}
},
"required": [
"currency",
"amountCents",
"lineItems",
"prepaymentRequired",
"howToProceed"
],
"type": "object"
}
},
{
"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).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_services",
"outputSchema": {
"description": "Static service catalog, coverage summary and accepted payment options.",
"properties": {
"business": {
"type": "string"
},
"languages": {
"items": {
"type": "string"
},
"type": "array"
},
"location": {
"type": "string"
},
"paymentNote": {
"type": "string"
},
"paymentOptions": {
"items": {
"type": "string"
},
"type": "array"
},
"priceMatch": {
"type": "string"
},
"priceQuote": {
"description": "Which tool gives an exact figure.",
"type": "string"
},
"remoteOnlineNotarization": {
"type": "boolean"
},
"serviceArea": {
"type": "string"
},
"services": {
"items": {
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"business",
"serviceArea",
"paymentOptions",
"paymentNote",
"services"
],
"type": "object"
}
},
{
"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`, `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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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 | ukraine_direct | international. If\nomitted, inferred from destination_country (apostille legs default to\nUS shipping) or from `ua_lane` (fromUsa ⇒ ukraine_direct).",
"type": [
"string",
"null"
]
},
"tier": {
"default": null,
"description": "Apostille speed tier when service is apostille: expedited | priority | standard.",
"type": [
"string",
"null"
]
},
"ua_lane": {
"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.",
"type": [
"string",
"null"
]
}
},
"required": [
"service"
],
"type": "object"
},
"name": "get_turnaround_estimate",
"outputSchema": {
"description": "Staged day estimates — ranges, never guarantees.",
"properties": {
"disclaimer": {
"type": "string"
},
"howToProceed": {
"type": "string"
},
"service": {
"type": "string"
},
"stages": {
"items": {
"properties": {
"businessDays": {
"type": "integer"
},
"calendarDaysHigh": {
"type": "integer"
},
"calendarDaysLow": {
"type": "integer"
},
"note": {
"type": "string"
},
"stage": {
"type": "string"
}
},
"required": [
"stage"
],
"type": "object"
},
"type": "array"
},
"tier": {
"type": "string"
},
"typicalTotalDaysHigh": {
"type": "integer"
},
"typicalTotalDaysLow": {
"type": "integer"
}
},
"required": [
"service",
"stages",
"typicalTotalDaysLow",
"typicalTotalDaysHigh",
"disclaimer"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "my_bookings",
"outputSchema": {
"properties": {
"bookings": {
"description": "Latest first.",
"items": {
"properties": {
"location": {
"type": "string"
},
"orderId": {
"description": "Pass to reschedule_booking / cancel_booking as order_id.",
"type": "string"
},
"scheduledAt": {
"description": "Unix seconds; null for a call-me request with no time held.",
"type": [
"integer",
"null"
]
},
"service": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
}
},
"required": [
"orderId",
"service",
"status"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"bookings"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "request_apostille",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "request_booking",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "request_price_match",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "reschedule_booking",
"outputSchema": {
"properties": {
"appendedToExisting": {
"description": "True when existing_reference was given and the request was extended, not duplicated.",
"type": "boolean"
},
"manageUrl": {
"description": "Guest requests: the emailed confirm/cancel link, when one was minted (null otherwise).",
"type": [
"string",
"null"
]
},
"message": {
"description": "Customer-facing outcome; relay it as written — bookings are requests until the notary confirms.",
"type": "string"
},
"ok": {
"const": true,
"type": "boolean"
},
"onAccount": {
"description": "True when the request was filed on the signed-in customer's own account — they can then list it with my_bookings and change it with reschedule_booking / cancel_booking. Absent or false means a guest request, managed through the emailed link.",
"type": "boolean"
},
"ourComparableQuoteCents": {
"description": "request_price_match only, when computable.",
"type": "integer"
},
"reference": {
"description": "Request / order reference for check_request_status (guest tools) or my_bookings (account tools).",
"type": "string"
},
"status": {
"description": "Account tools: the booking's status after this call (Pending after book_appointment).",
"type": "string"
}
},
"required": [
"ok",
"message"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "search_availability",
"outputSchema": {
"description": "Open slots over the booking horizon (Pacific time). `recommended` is what to offer; `days[].windows` encodes every bookable start losslessly: the k-th start is startUnixFrom + k*stepSec for k < startCount.",
"properties": {
"afterHoursSurchargeCents": {
"description": "Mobile services only: the surcharge an afterHours slot adds.",
"type": "integer"
},
"days": {
"items": {
"properties": {
"closed": {
"description": "Present only on a day with no bookable slot: closed | full.",
"type": "string"
},
"date": {
"description": "YYYY-MM-DD, Pacific.",
"type": "string"
},
"windows": {
"items": {
"properties": {
"afterHours": {
"type": "boolean"
},
"fit": {
"description": "great | good | fair | far.",
"type": "string"
},
"from": {
"description": "HH:MM of the first start.",
"type": "string"
},
"startCount": {
"type": "integer"
},
"startUnixFrom": {
"type": "integer"
},
"stepSec": {
"type": "integer"
},
"until": {
"description": "HH:MM end of the last slot.",
"type": "string"
}
},
"required": [
"from",
"until",
"fit",
"startUnixFrom",
"startCount",
"stepSec"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"date",
"windows"
],
"type": "object"
},
"type": "array"
},
"recommended": {
"items": {
"properties": {
"date": {
"type": "string"
},
"durationMin": {
"type": "integer"
},
"fit": {
"description": "great | good | fair | far.",
"type": "string"
},
"start": {
"description": "HH:MM Pacific.",
"type": "string"
},
"startUnix": {
"description": "Pass to request_booking as desired_time_unix (or to book_appointment as scheduled_at).",
"type": "integer"
}
},
"required": [
"date",
"start",
"startUnix",
"durationMin",
"fit"
],
"type": "object"
},
"type": "array"
},
"resolved": {
"properties": {
"country": {
"type": [
"string",
"null"
]
},
"distanceMiles": {
"description": "Straight-line miles from the Bothell office (display only, not a routed leg).",
"type": "number"
},
"label": {
"description": "Formatted address, or null when the address could not be resolved.",
"type": [
"string",
"null"
]
},
"message": {
"description": "Why the place is not bookable as given, or null.",
"type": [
"string",
"null"
]
},
"precise": {
"description": "False when a street and city are still needed to pin the spot.",
"type": "boolean"
},
"region": {
"type": [
"string",
"null"
]
},
"withinServiceArea": {
"type": "boolean"
}
},
"required": [
"withinServiceArea",
"precise"
],
"type": "object"
}
},
"required": [
"resolved",
"days",
"recommended"
],
"type": "object"
}
},
{
"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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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"
],
"type": "object"
},
"name": "search_documentation",
"outputSchema": {
"properties": {
"count": {
"type": "integer"
},
"note": {
"type": "string"
},
"query": {
"type": "string"
},
"results": {
"items": {
"properties": {
"excerpt": {
"type": "string"
},
"markdownUrl": {
"description": "Markdown twin of the page — fetch to read it in full.",
"type": "string"
},
"section": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"description": "Canonical page URL to cite.",
"type": "string"
}
},
"required": [
"title",
"url",
"markdownUrl",
"excerpt"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"query",
"count",
"results",
"note"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d8725da8e158445582ca244708f3b093d0e5dfaef5cabf52fdb7e87c64921129 | sha256sum