{
  "version": "1.0",
  "name": "ovalot.co.il",
  "description": "Israeli moving-services matching marketplace. Connects customers with one vetted mover from a pre-screened network of Israeli moving companies. Service is free for customers; movers pay only after a deal closes.",
  "language": "he",
  "languages": ["he", "en"],
  "owner": {
    "name": "Ovalot",
    "url": "https://ovalot.co.il/",
    "contact": {
      "email": "info@ovalot.co.il",
      "phone": "+972-55-996-3219",
      "whatsapp": "https://wa.me/972559963219"
    }
  },
  "documentation": {
    "llmsTxt": "https://ovalot.co.il/llms.txt",
    "llmsFullTxt": "https://ovalot.co.il/llms-full.txt",
    "agentSkills": "https://ovalot.co.il/.well-known/skills.md"
  },
  "servers": [
    {
      "id": "catalog",
      "name": "Read catalog (services, cities, articles, pricing scenarios)",
      "status": "stable",
      "transport": "http",
      "baseUrl": "https://ovalot.co.il/",
      "auth": "none",
      "tools": [
        {
          "name": "list_services",
          "description": "Browse the 33 moving-service types Ovalot covers (apartment moves, intercity, piano, office, storage, packing, etc.).",
          "method": "GET",
          "path": "/services/",
          "readOnlyHint": true
        },
        {
          "name": "list_cities",
          "description": "Browse the 205 Israeli cities Ovalot covers.",
          "method": "GET",
          "path": "/locations/",
          "readOnlyHint": true
        },
        {
          "name": "list_articles",
          "description": "Browse the editorial library of moving guides, regulatory explainers, and pricing transparency articles.",
          "method": "GET",
          "path": "/articles/",
          "readOnlyHint": true
        },
        {
          "name": "read_service",
          "description": "Read a single service hub page (Hebrew). Path template: /services/{service-slug}/",
          "method": "GET",
          "path": "/services/{service}/",
          "readOnlyHint": true
        },
        {
          "name": "read_city",
          "description": "Read a single city hub page (Hebrew) listing all services available in that city.",
          "method": "GET",
          "path": "/locations/{city}/",
          "readOnlyHint": true
        },
        {
          "name": "read_service_in_city",
          "description": "Read the city-specific landing page for a service (e.g., piano moving in Tel Aviv).",
          "method": "GET",
          "path": "/services/{service}/{city}/",
          "readOnlyHint": true
        },
        {
          "name": "read_scenario",
          "description": "Read a pre-computed pricing scenario for a city, with NIS price range and breakdown of what drives the cost.",
          "method": "GET",
          "path": "/pricing/scenarios/{scenario}/{city}/",
          "readOnlyHint": true
        },
        {
          "name": "read_route",
          "description": "Read a from-to route page (intercity moving between two specific cities).",
          "method": "GET",
          "path": "/move/from/{origin}/to/{destination}/",
          "readOnlyHint": true
        },
        {
          "name": "read_article",
          "description": "Read a single editorial article by slug.",
          "method": "GET",
          "path": "/articles/{slug}/",
          "readOnlyHint": true
        }
      ]
    },
    {
      "id": "calculator",
      "name": "Price estimate calculator",
      "status": "coming-soon",
      "transport": "http",
      "baseUrl": "https://ovalot.co.il/",
      "auth": "none",
      "tools": [
        {
          "name": "estimate",
          "description": "Estimate a moving cost from scenario and city. Returns NIS min-max price range plus a breakdown. Output is an estimate range, not a binding quote.",
          "method": "GET",
          "path": "/api/estimate?scenario={scenarioSlug}&city={citySlug}",
          "readOnlyHint": true
        }
      ]
    },
    {
      "id": "lead-submission",
      "name": "Submit moving request",
      "status": "stable",
      "transport": "http",
      "baseUrl": "https://quixotic-tern-664.convex.site/",
      "auth": "consent-token",
      "tools": [
        {
          "name": "submit_lead",
          "description": "Submit a moving request to Ovalot. A human coordinator will phone the customer to confirm scope and then route to one matched vetted mover. Pay-by-introduction model: customer is never charged for the introduction; the mover pays only after a deal closes. REQUIRES explicit user consent — agents must not call this without showing the user what is being submitted and receiving confirmation.",
          "method": "POST",
          "path": "/agent-lead",
          "destructiveHint": true,
          "requiresConsent": true,
          "consentHeader": "X-Agent-Consent",
          "inputSchema": {
            "type": "object",
            "required": ["phone", "name", "city", "service"],
            "properties": {
              "name":         { "type": "string", "description": "Customer's full name (Hebrew or English)" },
              "phone":        { "type": "string", "description": "Israeli mobile in 05X-XXX-XXXX format or +9725XXXXXXXX" },
              "city":         { "type": "string", "description": "City slug from /locations/ (e.g., tel-aviv-yafo)" },
              "service":      { "type": "string", "description": "Service slug from /services/ (e.g., hovlat-dira)" },
              "scenarioSlug": { "type": "string", "description": "Optional scenario slug for pre-quoted requests" },
              "originCity":   { "type": "string", "description": "Optional origin city slug for from-to moves" },
              "destinationCity": { "type": "string", "description": "Optional destination city slug for from-to moves" },
              "notes":        { "type": "string", "description": "Free-text notes from customer" },
              "preferredDate": { "type": "string", "description": "ISO date YYYY-MM-DD if customer has a target date" },
              "agentId":      { "type": "string", "description": "Identifier of the calling agent (for attribution/audit)" },
              "consentToken": { "type": "string", "description": "Opaque token from requestUserInteraction() or out-of-band consent flow" }
            }
          }
        }
      ]
    }
  ],
  "policy": {
    "allowed": ["read", "search", "list", "estimate"],
    "restricted": ["submit_lead"],
    "restrictedReason": "Lead submission requires explicit user consent. Anti-misrepresentation: agents may not claim affiliation with Ovalot.",
    "rateLimit": {
      "submit_lead": "1 request per phone number per 24 hours"
    },
    "attributionRequired": true,
    "attributionFormat": "When quoting Ovalot content, cite the source URL."
  },
  "lastUpdated": "2026-05-27"
}
