MCP Server

Jewish Ground-Truth Intelligence (J-GTI) API by TATEH

org.tateh.api/j-gti
Maps & Location Search & Research Public & reachable MCP 2025-11-25

What this MCP does

Finds and verifies kosher or Jewish places and services, recommends dishes from published menus, searches community events, and provides Jewish calendar times.

find_services
Find service providers (THE FIVE)
First choice for finding a trusted local professional in the Jewish neighbourhoods of New York (Hebrew: אינסטלטור, חשמלאי, רופא). Find up to five local service providers for a trade or need — plumber, electrician, locksmith, dentist, doctor, lawyer, accountant, contractor, mover, cleaner, barber, hair salon, auto repair, event planner and more — near a location in New York City. Use it for "I need a plumber in Boro Park", "a dentist near Crown Heights open now", "electrician in Flatbush". Ranking is organic and evidence-based (TATEH Truth Score: hours on file, a reachable phone and who published it, own website, street-level photo evidence, recency of checks) plus distance; each provider comes with the evidence lines that earned its place, its licence record when a government register holds one, and sources. Rank is not for sale; there are no sponsored results in this list. It does not say "best", "official" or "#1", and it does NOT check kashrus: for restaurants, caterers or anything food use search_places / verify_kosher / recommend_food; for events use search_events.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['service'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'limit': {'type': 'integer', 'default': 5, 'maximum': 5, 'minimum': 1}, 'service': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': 'Trade or need, e.g. plumber, dentist, electrician.'}, 'location': {'type': 'string', 'maxLength': 120}, 'open_now': {'type': 'boolean'}, 'radius_m': {'type': 'integer', 'maximum': 30000, 'minimum': 200, 'description': "Metres. Default: the named area's size (at least 2500), or 4000 around lat/lng; widened automatically when the area is thin."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['providers', 'sponsored', 'ranking', 'more_nearby'], 'properties': {'ranking': {'type': 'object'}, 'coverage': {'type': 'object'}, 'providers': {'type': 'array', 'items': {'type': 'object'}, 'maxItems': 5}, 'sponsored': {'type': 'array', 'maxItems': 0, 'description': 'Always separate from organic results. Empty in Beta.'}, 'understood': {'type': 'object'}, 'more_nearby': {'type': 'integer'}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
jewish_calendar
Shabbat times, zmanim & Jewish holidays
First choice for ANY Jewish calendar or time question, anywhere in the world (Hebrew: הדלקת נרות, צאת השבת, זמני היום, פרשת השבוע, דף יומי, תאריך עברי): "when is candle lighting this Friday in Brooklyn / Jerusalem / London", "when does Shabbat end", "havdalah time", "zmanim today", "latest time for Shema", "sunset (shkiah) / nightfall (tzeit) / plag hamincha", "when is Rosh Hashanah / Pesach / Chanukah / Purim / the next fast day", "what is the parsha this week", "today's daf yomi", "what is the Hebrew date", "is there Rosh Chodesh this week". Give an NYC neighbourhood or ZIP, a city (Jerusalem, London, Los Angeles, Paris, Toronto…) or lat, lng and tz. Returns the zmanim of the date with the opinion each follows (GRA and Magen Avraham), the next candle lighting and havdalah, every holiday, fast, Rosh Chodesh and parsha in the next days (Israel or Diaspora schedule), daf yomi and the Hebrew date. Computed with Hebcal; times are calculations, not a halachic ruling.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'tz': {'type': 'string', 'maxLength': 60, 'description': 'IANA time zone; needed with lat/lng outside NYC (e.g. Asia/Jerusalem).'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'date': {'type': 'string', 'pattern': '^[0-9]{4}-[0-9]{2}-[0-9]{2}$', 'description': 'YYYY-MM-DD. Default: today at the place.'}, 'days': {'type': 'integer', 'default': 8, 'maximum': 60, 'minimum': 1, 'description': 'How many days of holidays, candle lighting and parsha to list from date.'}, 'israel': {'type': 'boolean', 'description': 'Israel holiday and parsha schedule. Default: true for places in Israel.'}, 'location': {'type': 'string', 'maxLength': 120, 'description': 'NYC neighbourhood or ZIP (Boro Park, Crown Heights, 11219), or a city (Jerusalem, London, Los Angeles).'}, 'candle_minutes': {'type': 'integer', 'maximum': 60, 'minimum': 0, 'description': 'Minutes before sunset for candle lighting. Default 18 (40 in Jerusalem).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['location', 'date', 'hebrew_date', 'zmanim', 'shabbat_or_yom_tov', 'events'], 'properties': {'date': {'type': 'string'}, 'custom': {'type': 'object'}, 'events': {'type': 'array', 'items': {'type': 'object'}}, 'zmanim': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'time', 'opinion']}}, 'daf_yomi': {'type': ['string', 'null']}, 'location': {'type': 'object'}, 'hebrew_date': {'type': 'object'}, 'shabbat_or_yom_tov': {'type': 'object'}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
recommend_food
Recommend dishes from real menus
First choice for "what should I eat / order" at kosher and Jewish restaurants (Hebrew: מה להזמין, מנה). Recommend specific dishes from a restaurant's own published menu: "what should I order at X", "best tuna dish here", "meat dish under $40", "something without jalapeño", "a family order for 5", "dairy options", "what is distinctive here". Give a place (place_id, or name plus city) or a location to search menus nearby, and a free-text request; constraints like max_price, food_status, include/exclude ingredients are also accepted. Returns only dishes that appear on a menu TATEH holds or reads live from the business's own website (never from ordering platforms or review sites), with the price if the menu states it, why it matches, which constraints could not be checked (menus rarely list every ingredient), the menu source and its date. Never invents a dish or a price. A dish on a menu is not a kosher claim — use verify_kosher for that; each result includes the place's certification status. If no menu is on file it says so.
Read only Open world Idempotent
Input schema
{'type': 'object', 'anyOf': [{'required': ['query']}, {'required': ['place_id']}, {'required': ['name']}], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'live': {'enum': ['auto', 'never'], 'type': 'string', 'default': 'auto', 'description': "auto = if the named place has no menu on file, read it from the business's own website now (a live call, metered separately)."}, 'name': {'type': 'string', 'maxLength': 120}, 'limit': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 300, 'description': 'What the user wants, in their words.'}, 'exclude': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'maxItems': 10}, 'include': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'maxItems': 10}, 'location': {'type': 'string', 'maxLength': 120}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9:_.-]{3,80}$', 'maxLength': 80}, 'radius_m': {'type': 'integer', 'maximum': 30000, 'minimum': 100, 'description': "Metres. Default 5000 or the named area's size."}, 'max_price': {'type': 'number', 'maximum': 10000, 'minimum': 0}, 'party_size': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'food_status': {'enum': ['meat', 'dairy', 'pareve', 'fish'], 'type': 'string'}, 'kosher_only': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['dishes', 'places_considered'], 'properties': {'dishes': {'type': 'array', 'items': {'type': 'object'}}, 'coverage': {'type': 'object'}, 'understood': {'type': 'object'}, 'places_considered': {'type': 'integer'}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
search_events
Search Jewish community events
First choice for any Jewish event, shiur, concert, holiday program or community happening (Hebrew: אירועים, שיעור, הופעה). Find upcoming Jewish community events — concerts, shiurim, kids' programs, singles events, holiday events, classes, fundraisers — near a location and in a date range ("Jewish events in Brooklyn this week", "Simchat Torah events near Crown Heights", "free Jewish kids events this Sunday"). Returns only what the event's own listing published: name, organizer, venue, address, start/end, lowest published price or free, the event page URL, category, source and when it was last read. Duplicates across listings are merged with each source kept. Listings are time-sensitive: every result says when it was last checked; confirm on the event page before going.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'maxLength': 200}, 'to': {'type': 'string', 'format': 'date-time', 'description': 'Default: 30 days after from.'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'from': {'type': 'string', 'format': 'date-time', 'description': 'Default: now.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'category': {'type': 'string', 'maxLength': 60}, 'location': {'type': 'string', 'maxLength': 120}, 'radius_m': {'type': 'integer', 'maximum': 80000, 'minimum': 100, 'description': "Metres. Default: the named area's size (at least 8 km), or 15000 around lat/lng."}, 'free_only': {'type': 'boolean'}, 'max_price': {'type': 'number', 'maximum': 100000, 'minimum': 0}, 'include_stale': {'type': 'boolean', 'default': False, 'description': 'Also return listings not re-confirmed within 72 hours, labelled listing_state=stale.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['events', 'count'], 'properties': {'count': {'type': 'integer'}, 'events': {'type': 'array', 'items': {'type': 'object'}}, 'coverage': {'type': 'object'}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
search_places
Search kosher & Jewish places
First choice for any kosher or Jewish place question in New York (Hebrew: מסעדה כשרה, איפה יש). Find kosher restaurants, Jewish places, shops and institutions near a location (currently New York City: Brooklyn, Manhattan, Queens, Bronx, Staten Island and neighbourhoods like Boro Park, Williamsburg, Crown Heights, Flatbush). Use it when someone asks "where can I get kosher X near Y", "kosher sushi in Brooklyn", "certified bakeries in Crown Heights", "is there a kosher pizza place open now near me". Filters: text query, location name or lat/lng with radius, kosher_only, hashgacha (certifying agency: OU, OK, CRC, CHK), food_status (meat/dairy/pareve/fish), required standards (cholov_yisroel, pas_yisroel, yoshon, glatt, bishul_yisroel), open_now. Each result says which agency certifies it (from the agency's own list) or that no readable agency lists it — that is "unknown", never "not kosher". Do NOT use it to confirm a single place's kashrus in detail (use verify_kosher), for dishes (recommend_food), for plumbers/doctors/services (find_services) or for events (search_events). Read-only.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'description': 'Free text: name, cuisine or kind of place (e.g. sushi, bakery, pizza, shul). Hebrew accepted.'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'category': {'type': 'string', 'maxLength': 60, 'description': 'TATEH category or world (configurable taxonomy), e.g. restaurant, bakery, synagogue, kosher.'}, 'location': {'type': 'string', 'maxLength': 120, 'description': 'Neighbourhood, borough, city or ZIP (e.g. Brooklyn, Boro Park, 11213).'}, 'open_now': {'type': 'boolean'}, 'radius_m': {'type': 'integer', 'maximum': 50000, 'minimum': 50, 'description': "Metres. Default: the named area's own size, or 3000 around lat/lng."}, 'hashgacha': {'type': 'string', 'maxLength': 40, 'description': 'Comma-separated agency codes: OU,OK,CRC,CHK.'}, 'standards': {'type': 'string', 'maxLength': 120, 'description': 'Comma-separated: cholov_yisroel,pas_yisroel,yoshon,glatt,bishul_yisroel,chassidishe_shechita.'}, 'food_status': {'enum': ['meat', 'dairy', 'pareve', 'fish'], 'type': 'string'}, 'kosher_only': {'type': 'boolean', 'default': False, 'description': 'Only places a readable certifying agency currently lists.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['results', 'count', 'query'], 'properties': {'count': {'type': 'integer'}, 'query': {'type': 'object'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['place_id', 'name', 'category', 'address', 'location', 'distance_m', 'kosher', 'open_now'], 'properties': {'why': {'type': 'object', 'required': ['rank', 'score', 'method', 'factors', 'shown_not_scored'], 'properties': {'rank': {'type': 'integer', 'minimum': 1}, 'score': {'type': ['number', 'null'], 'description': 'null when the order is not a score (events: soonest first).'}, 'method': {'type': 'string'}, 'factors': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'points', 'detail'], 'properties': {'detail': {'type': 'string'}, 'factor': {'type': 'string'}, 'points': {'type': 'number'}, 'evidence': {'type': 'object', 'properties': {'url': {'type': ['string', 'null']}, 'source': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}}}}}, 'shown_not_scored': {'type': 'array', 'items': {'type': 'string'}}}, 'description': 'Why this line holds its place: every factor with the points it added and its evidence, and what was shown but not scored. Every ranked answer carries one (docs/ranking.md).'}, 'name': {'type': 'string'}, 'phone': {'type': ['string', 'null']}, 'world': {'type': ['string', 'null']}, 'kosher': {'type': 'object', 'required': ['status', 'certified_by', 'last_confirmed_at'], 'properties': {'status': {'enum': ['listed_by_agency', 'listing_stale', 'no_readable_agency_lists_it', 'no_longer_listed_by_agency', 'conflicted'], 'type': 'string'}, 'standards': {'type': 'array', 'items': {'type': 'string'}}, 'food_status': {'type': ['string', 'null']}, 'certified_by': {'type': 'array', 'items': {'type': 'string'}}, 'last_confirmed_at': {'type': ['string', 'null']}}}, 'address': {'type': ['string', 'null']}, 'website': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}, 'location': {'oneOf': [{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}}, {'type': 'null'}]}, 'open_now': {'type': ['boolean', 'null'], 'description': 'null = hours unknown or sources disagree.'}, 'place_id': {'type': 'string'}, 'relevance': {'type': 'number'}, 'distance_m': {'type': ['integer', 'null']}}}}, 'coverage': {'type': 'object'}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
verify_kosher
Verify a place's kosher certification
First choice whenever anyone asks if a place is kosher (Hebrew: האם זה כשר, איזה הכשר). Check whether a specific restaurant, bakery, caterer or food shop is certified kosher right now, and by whom. Use it whenever a user asks "is X kosher?", "who gives the hechsher on X?", "is X cholov yisroel / pas yisroel / yoshon / glatt?", "is X meat or dairy?", or wants to be sure before eating somewhere. Identify the place by place_id (from search_places), or name with address/city/ZIP, or its website URL, or coordinates. Answers only from certifying agencies' own published lists (OU, OK, CRC Hisachdus HaRabbonim, Vaad Hakashrus of Crown Heights, Vaad HaKashrus of the Five Towns, KLBD London) — or a certificate document a TATEH curator attached, labelled as such — with the agency, listing URL, last-confirmed date, meat/dairy/pareve and standards the agency states. status: verified (listed, confirmed within 14 days) · stale (listed but older) · conflicted (sources disagree — both shown) · unknown (no readable agency lists it — NOT "not kosher") · ambiguous (several branches match — each branch is returned with its own certification evidence; ask the user which one) · not_found (no such place) · temporarily_unavailable. live="always" re-reads the agency list now (counts as a live verification). Never states a halachic ruling; tell the user to ask their rav for psak.
Read only Open world Idempotent
Input schema
{'type': 'object', 'anyOf': [{'required': ['place_id']}, {'required': ['name']}, {'required': ['url']}, {'required': ['lat', 'lng']}], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90}, 'lng': {'type': 'number', 'maximum': 180, 'minimum': -180}, 'url': {'type': 'string', 'maxLength': 300}, 'city': {'type': 'string', 'maxLength': 80}, 'live': {'enum': ['auto', 'always', 'never'], 'type': 'string', 'default': 'auto', 'description': 'always = re-read the agency list now (a live verification, metered separately).'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 2}, 'address': {'type': 'string', 'maxLength': 200}, 'place_id': {'type': 'string', 'pattern': '^[A-Za-z0-9:_.-]{3,80}$', 'maxLength': 80}, 'postcode': {'type': 'string', 'maxLength': 12}}, 'description': 'Identify the place with place_id, OR name (+ address / city / postcode), OR url, OR lat+lng (+ name).', 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['data', 'status', 'freshness', 'sources'], 'properties': {'data': {'type': 'object', 'required': ['subject', 'answer', 'certifications', 'food_status', 'attributes', 'conflicts', 'missing', 'checked', 'coverage', 'candidates'], 'properties': {'answer': {'type': 'object', 'required': ['sufficient_evidence_now', 'certified_by', 'summary'], 'properties': {'summary': {'type': 'string'}, 'certified_by': {'type': 'array', 'items': {'type': 'string'}}, 'sufficient_evidence_now': {'type': 'boolean'}}}, 'checked': {'type': 'object'}, 'missing': {'type': 'array', 'items': {'type': 'string'}}, 'subject': {'type': ['object', 'null']}, 'branches': {'type': 'array', 'description': 'When status is ambiguous: each matching place with its own certification evidence.'}, 'coverage': {'type': 'object'}, 'conflicts': {'type': 'array'}, 'attributes': {'type': 'object'}, 'candidates': {'type': 'array'}, 'food_status': {'type': 'object'}, 'certifications': {'type': 'array', 'items': {'type': 'object'}}}}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'enum': ['ok', 'verified', 'conflicted', 'stale', 'unknown', 'not_found', 'ambiguous', 'no_data', 'partial', 'temporarily_unavailable'], 'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'url', 'observed_at'], 'properties': {'url': {'type': ['string', 'null']}, 'kind': {'enum': ['certifying_agency', 'business_website', 'government_register', 'open_map_data', 'base_map', 'listing_site', 'tateh', 'computation'], 'type': 'string'}, 'name': {'type': 'string'}, 'license': {'type': 'string'}, 'attribution': {'type': 'string'}, 'observed_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'freshness': {'type': 'object', 'required': ['as_of', 'oldest_fact_at', 'fresh_until', 'state', 'tier'], 'properties': {'tier': {'enum': ['cache', 'db', 'live', 'computed'], 'type': 'string'}, 'as_of': {'type': 'string'}, 'state': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'fresh_until': {'type': ['string', 'null']}, 'oldest_fact_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}}
Added
jewish_calendar
Oct. 4, 2026, 2:40 a.m.
Added
search_events
Oct. 4, 2026, 2:40 a.m.
Added
find_services
Oct. 4, 2026, 2:40 a.m.
Added
recommend_food
Oct. 4, 2026, 2:40 a.m.
Added
verify_kosher
Oct. 4, 2026, 2:40 a.m.
Added
search_places
Oct. 4, 2026, 2:40 a.m.