Andrii Co. Notary & Apostille Assistant

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
90%
Qualität der Benennung
92%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~8,159Tokens (Tool-Definitionen)
~5.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (6.37% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "booking": {
      "url": "https://andrii.net/mcp"
    }
  }
}

Remote-Endpunkte

https://andrii.net/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (15)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢book_appointment(address, document_count, notes, scheduled_at, service)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🔴cancel_booking(order_id)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟢check_request_status(reference)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ],
  "description": "PII-minimal status of a request — never the address, name or notes."
}
🟢check_service_area(address, service)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟢get_apostille_requirements(destination_country, document, issuing_state)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟢get_price_quote(after_hours, apostille, document_count, mobile, needs_notarization, ...)

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).

Eingabe-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"
      ]
    },
    "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"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟢get_services

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).

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ],
  "description": "Static service catalog, coverage summary and accepted payment options."
}
🟢get_turnaround_estimate(destination_country, service, shipping, tier, ua_lane)

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.

Eingabe-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 | 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"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ],
  "description": "Staged day estimates — ranges, never guarantees."
}
🟢my_bookings

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟡request_apostille(destination_country, documents, email, existing_reference, name, ...)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟡request_booking(address, desired_time, desired_time_unix, document_count, email, ...)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
⚪request_price_match(competitor_name, competitor_price_usd, competitor_url, document_count, email, ...)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟡reschedule_booking(order_id, scheduled_at)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}
🟢search_availability(address, document_count, service)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ],
  "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."
}
🟢search_documentation(lang, limit, query, section)

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.

Eingabe-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"
}

Ausgabe-Schema

{
  "type": "object",
  "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"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet15 Tools
verifiziertVersion nicht aufgezeichnet15 Tools
verifiziertVersion nicht aufgezeichnet15 Tools