{
  "name": "halulu",
  "kind": "product",
  "description": "AI restaurant finder. Reads the Google Maps reviews for restaurants near a person and says which one is actually good for the dish they asked for, with verbatim review quotes as proof. English and Arabic. MCP Apps enabled: results render as interactive cards in Claude and ChatGPT.",
  "icon": "https://www.halulu.food/logo.svg",
  "url": "https://www.halulu.food/api/mcp",
  "transport": "streamable-http",
  "documentation": "https://www.halulu.food/agents.md",
  "authentication": {
    "type": "oauth2.1",
    "authorizationServer": "https://www.halulu.food/api/mcp-auth",
    "protectedResourceMetadata": "https://www.halulu.food/.well-known/oauth-protected-resource",
    "dynamicClientRegistration": true,
    "pkce": "S256",
    "scopes": [
      "openid",
      "profile",
      "email",
      "offline_access"
    ],
    "guide": "https://www.halulu.food/auth.md",
    "note": "A human must sign in and approve in a browser. There is no machine-only path to a user's data."
  },
  "capabilities": {
    "tools": true,
    "resources": true
  },
  "tools": [
    {
      "name": "halulu_search_restaurants",
      "description": "Find and rank nearby restaurants for a food craving using Halulu's AI review analysis. Costs one search credit. Returns up to nine ranked places with a Halulu Score, the Google rating, distance and two verbatim review quotes.",
      "ui": "ui://halulu/results.html",
      "parameters": {
        "craving": {
          "type": "string",
          "description": "What the user wants to eat, in their own words, in English or Arabic",
          "required": true
        },
        "location": {
          "type": "string",
          "description": "A place the user names explicitly. Overrides their shared GPS pin. Halulu never infers a location from the conversation.",
          "required": false
        },
        "radius_km": {
          "type": "number",
          "description": "Search radius in kilometres, 1 to 50. Paid accounts only; free accounts are fixed at 10.",
          "required": false
        },
        "language": {
          "type": "string",
          "description": "en or ar. Defaults to the language of the craving.",
          "required": false
        }
      }
    },
    {
      "name": "halulu_save_favorite",
      "description": "Save a restaurant from a search result to the signed-in user's Halulu favorites. It then appears on their saved list at halulu.food/favorites.",
      "parameters": {
        "place_id": {
          "type": "string",
          "description": "The Google place_id from a search result row",
          "required": true
        }
      }
    },
    {
      "name": "halulu_list_favorites",
      "description": "List the restaurants the signed-in user has saved. Costs no search credit.",
      "parameters": {}
    },
    {
      "name": "halulu_remove_favorite",
      "description": "Remove a saved restaurant from the signed-in user's favorites by its place_id.",
      "parameters": {
        "place_id": {
          "type": "string",
          "description": "The Google place_id to remove",
          "required": true
        }
      }
    },
    {
      "name": "halulu_share_restaurant",
      "description": "Create a public shareable Halulu link for a restaurant from a search result. The link opens for anyone, including people with no Halulu account.",
      "parameters": {
        "place_id": {
          "type": "string",
          "description": "The Google place_id from a search result row",
          "required": true
        }
      }
    },
    {
      "name": "halulu_search_credits",
      "description": "Show how many searches the signed-in user has left this billing cycle and when it resets. Costs no search credit, so call it before a burst of searches.",
      "parameters": {}
    },
    {
      "name": "halulu_clear_location",
      "description": "Delete the GPS location the user previously shared, so the next search asks for it again.",
      "parameters": {}
    },
    {
      "name": "halulu_subscribe",
      "description": "Return a checkout link so the signed-in user can subscribe to Halulu Pro, 5 US dollars a month or 50 a year, without leaving the chat.",
      "parameters": {}
    }
  ],
  "quota": {
    "unit": "search",
    "free": "3 searches per month",
    "paid": "30 searches per month",
    "note": "Only halulu_search_restaurants consumes a credit. Every other tool is free to call."
  },
  "languages": [
    "en",
    "ar"
  ],
  "contact": "eat@halulu.food"
}
