Atly
Server Details
Find places by what you want (work friendly, gluten free, great coffee), scored from real reviews.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- atlyai/atly-plugin
- GitHub Stars
- 0
TDQS
Scored across 7 tools
Each tool has a clearly distinct role: account/quota, documentation, place detail, area list, category list, place search, and feedback. There is no meaningful overlap between list_areas/list_categories and search_places because those are clearly lookup versus intent search operations.
All tools follow a predictable verb_noun pattern (get_api_key, get_docs, get_place, list_areas, list_categories, search_places, submit_feedback). The convention is consistent throughout with no mixed casing or vague verb styles.
Seven tools is well-scoped for a focused place-discovery API. Each tool appears to earn its place, covering authentication, docs, taxonomy, search, detail lookup, and feedback without bloat.
The surface covers the full read-only discovery workflow: understand usage, read docs, map categories, resolve locations, search places, inspect place details, and submit feedback. No obvious CRUD/lifecycle gap exists for a search-and-discovery service.
Available Tools
7 toolsget_api_keyShow my key and quotaARead-onlyInspect
Show my key, tier and remaining quota
Who am I and how much quota is left. Works without a key too (then it describes the anonymous allowance for your IP).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | No | |
| label | No | |
| quota | No | |
| key_id | No | |
| call_id | No | |
| doc_notes | No | |
| email_verified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false. The description adds genuinely new behavioral context beyond them: the tool is callable unauthenticated and degrades to IP-based anonymous allowance, which an agent could not infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is returned. The second sentence partly restates the first ('Who am I and how much quota is left' echoes 'my key, tier and remaining quota'), which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return structure, and with zero parameters there's nothing else to cover. The unauthenticated case is covered; the only light gap is not stating whether the key is redacted or returned in full, but that is arguably output-schema territory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there are no parameter semantics for the description to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource set — key, tier and remaining quota — plus the anonymous-allowance behavior, so an agent knows exactly what it returns. Differentiation from siblings is trivial since none of them touch credentials, but the description doesn't say so explicitly, keeping it just shy of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for both invocation modes: call it to answer 'who am I and how much quota is left,' and it still works without a key, in which case it returns the anonymous allowance for your IP. No alternatives or exclusions are named, but the sibling tools are unrelated, so there's little to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docsRead the Atly API guideARead-onlyInspect
Read the documentation
Returns the API guide as Markdown: what each operation is for, how to turn a user's request into category ids and a location, request and response shapes, how to read scores. Call this once per session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's added value is the return format (Markdown) and the content inventory, which lets the agent judge relevance before calling. The "once per session" note adds useful caching/idempotency context. Minor gap: no indication of size or whether the output can be scoped/truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and immediately followed by what comes back. The content list is dense but every item earns its place by telling the agent what questions the guide answers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing the return value — and it does, specifying Markdown and the topics covered. With zero parameters and full annotation coverage, nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema imposes nothing to interpret; the baseline for a 0-param tool is 4. The description correctly implies a parameterless, fire-and-read call and does not invent arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read the documentation" / "Returns the API guide as Markdown") and enumerates the guide's contents: operation purposes, mapping user requests to category ids and location, request/response shapes, and score interpretation. That is clearly distinct from every sibling, which are all concrete API operations (search_places, list_areas, get_place, etc.) rather than documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call this once per session" is an explicit, actionable invocation rule that no sibling provides. It also implies the trigger context (you need to know how to map a user request to category ids/location). It stops short of naming alternatives, but no sibling overlaps with this tool's role, so there is nothing to exclude.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_placeGet place detailsARead-onlyInspect
Everything about one place
Full detail for a place id from search_places: profile, hours, scores for the categories reviewers mention most (up to 40), up to eight quotable
statements, good-to-know facts, gluten-free identity when known, and the canonical Atly URL to cite.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A place id from search_places, or an atly.com place link (with or without https://) or its slug. In a REST path, URL-encode a link. |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | |
| call_id | No | |
| doc_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, closed-world behavior, and an output schema exists. The description adds useful behavioral context about the return payload: profile, hours, category scores capped at 40, up to eight quotes, facts, and a canonical URL. It does not cover auth or rate limits, but those are not essential for this read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose before listing returned content. The return-content list is dense but earns its place by telling the agent what useful detail to expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one fully documented parameter, read-only annotations, and an output schema, the description provides enough context to call the tool correctly. It identifies the input source and summarizes the rich payload without needing to re-document schema fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that `id` may be a place id from `search_places`, an Atly URL, or a slug. The description only reinforces the `search_places` source and adds no new syntax or format details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific retrieval operation (full detail for one place) and names the exact sibling it follows from, `search_places`. An agent can distinguish this from search and from unrelated tools like `list_areas` without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies this is the follow-up call for a place id obtained from `search_places`, which is the main usage context. It stops short of explicit when-not-to-use guidance or naming alternative detail tools, but the intended path is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_areasFind areasARead-onlyInspect
List supported areas
Cities, neighborhoods and states Atly covers — densest in the United States, with pockets in Mexico, Israel and Thailand — each with an id you can pass to
search, a center, a bounding box when known, and how many places it holds. Filter with q (substring of
the name) and level (city, neighborhood, state). Results are ordered by place count.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Area name or common abbreviation, e.g. "san diego", "midtown", "nyc". Exact and prefix matches rank first. | |
| level | No | Restrict to one level. | |
| limit | No | Maximum areas to return, at most 200; a larger value returns 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| areas | No | |
| total | No | |
| call_id | No | |
| doc_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful behavior beyond that: the geographic coverage shape ('densest in the United States, with pockets in Mexico, Israel and Thailand'), the presence of bounding boxes 'when known', and that results are ordered by place count.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by the payload shape and filters in two compact sentences. The 'densest in the United States...' clause is flavor but does convey coverage scope, so it earns most of its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description need only cover scope, filters and result shape — all of which it does. It stops short of noting anything about the 200-item cap or ordering tie-breaks, but those live in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented with examples and enum values. The description restates `q` as a substring of the name and `level` as city/neighborhood/state, which adds little beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('List supported areas') and then enumerates what each area contains (id, center, bounding box, place count), which makes it unmistakable against siblings like search_places or list_categories. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the practical workflow — 'each with an `id` you can pass to search' — and states how to narrow results via `q` and `level`. It does not explicitly state when to prefer search_places or list_categories over this tool, so no exclusion guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesFind categoriesARead-onlyInspect
List intent categories
The intent taxonomy: cuisines, dishes, features ("Wifi", "Outdoor Seating"), vibes ("Cozy", "Lively"),
occasions ("First Date", "Group Dinner"), diets ("Gluten Free", "Keto") and more. Map the user's words to
category ids before searching. Filter with q, one concept per call — exact and prefix matches rank first, then substrings and keywords;
plurals, hyphens and small typos are tolerated — or fetch once without q and cache the full list.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match against category names and keywords, e.g. "coffee", "dog friendly", "gluten-free". Ranked; tolerant of plurals and small typos. | |
| limit | No | Maximum categories to return, at most 2000; a larger value returns 2000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| call_id | No | |
| doc_notes | No | |
| categories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare that this is a safe read; the description goes well beyond them by disclosing the ranking behavior (exact and prefix matches first, then substrings and keywords) and the tolerance rules (plurals, hyphens, small typos). It also flags the caching pattern, which matters for repeated lookups.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each doing distinct work — taxonomy definition, the pre-search mapping rule, query semantics, and the cache alternative. Front-loaded with the resource definition; no repetition of schema facts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are unnecessary, and the description covers scope, matching behavior, and the call pattern. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: `q` should carry one concept per call, and omitting it returns the full taxonomy for caching. That operational advice is not derivable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List intent categories') and then defines what a category actually is by enumerating the taxonomy (cuisines, dishes, features, vibes, occasions, diets). This clearly separates it from the place-oriented siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use direction — 'Map the user's words to category ids before searching' — plus a concrete alternative strategy: query with `q` one concept at a time, or fetch once without `q` and cache the full list. The agent knows both the sequencing and the two operating modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_placesSearch placesARead-onlyInspect
Find places for an intent near a location
The core call. Give one or more categories (exact names like "Coffee", or ids from list_categories; all must
match) and a location — a city name or an area_id from list_areas, or coordinates with a radius — and get
places ranked by Atly's score for those categories, each with quotable reasons from real reviews, a link to
cite, a Google Maps link, whether it is open now, and when Atly added and last refreshed it. The first three
also carry hours, contact and good-to-know. Scores are 0–10 and
relative to other places in the same country; a place with no score is unmeasured, not bad. If no place matches every category, trailing
categories are dropped until something does (the first is never dropped), and dropped_categories says which.
Ranking considers the strongest 100 candidates by Atly's base score (400 with place_type); dropped_categories
lists the dropped ones as you sent them.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| limit | No | Places to return, at most 25; a larger value returns 25. | |
| area_id | No | An id from `list_areas`; the search covers that area's viewport. A city name also works ("Austin", "Boise, ID"): it resolves to the matching area, or, for a city with no area, to the extent of the places whose address is in it; the response's `area` and doc_notes say what it resolved to. Give this or lat/lon, not both. | |
| radius_km | No | Used with lat/lon, in km. Held to 0.2-50 (doc_notes say so when it was). | |
| categories | Yes | Category names or ids, most important first. Every result matches all of them (after any relaxation). A name that is not exact is refused, with the close matches in the error. | |
| place_type | No | Optional. Keep only places whose Google place type contains one of these words, matched as whole words: "restaurant" keeps "Mexican restaurant" and "Pizza restaurant", "coffee" keeps "Coffee shop", "bar" keeps "Wine bar" but not "Barber shop". A place matches on its main type (`place_type` in results) or any of its other Google types. Use it when the user asks for a kind of venue ("gluten-free restaurants"), not a dish or a feature. Google's types are literal: "Cafe" and "Coffee shop" are different, so for cafes pass both ["cafe", "coffee"]. The filter is applied to the strongest 400 places for the categories and never relaxed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| area | No | The resolved search geometry — an area (id, name, level, center, bbox), a city known only from its places (name, level, region, country, center, bbox; no id), or a circle (center, radius_km). |
| places | No | |
| call_id | No | |
| doc_notes | No | |
| total_matched | No | How many places match in this area, capped ("1000+"). Absent with `place_type` (the count cannot see place types) or when counting timed out. |
| dropped_categories | No | Categories dropped to avoid an empty result, as you sent them (a name or an id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses substantive behavior: ranking by Atly's score, review-derived reasons, returned links, open-now status, score scale and country-relative meaning, category relaxation rules, and candidate-pool behavior. These details materially help an agent understand what results mean and how to interpret partial matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and efficiently organized around purpose, inputs, ranking, and relaxation behavior. It is somewhat long and repeats `dropped_categories` behavior, but the length is justified by the complexity of the search semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and annotations, the description supplies the missing behavioral context an agent needs: ranking logic, score interpretation, category relaxation, dropped categories, and candidate limits. It does not need to restate every schema field or return shape because those are already structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds useful semantics for `categories`, including exact naming, id sourcing, ordering by importance, and category relaxation. It also clarifies location inputs and how `place_type` affects the candidate pool, though some schema-described parameters such as `limit` are not elaborated in the prose. With 71% schema coverage, this is meaningfully additive but not fully comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find places for an intent near a location. It immediately distinguishes this as the core call and explicitly references sibling tools such as `list_categories` and `list_areas` for required inputs, so an agent can tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: supply categories and a location, using category names or ids from `list_categories` and a city name, `area_id` from `list_areas`, or coordinates with radius. It also explains fallback behavior when no place matches every category. It does not explicitly contrast this tool with `get_place` for single-place detail lookups, so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackSend feedbackAInspect
Tell us how a call went
Reference the call_id of any earlier response and say whether it helped, and optionally why, in a sentence
about the result — what was right, missing or wrong. Do not include the user's words, the conversation, or
anything about the person. Nothing is overwritten: sending again for the same call adds a new version and keeps
the earlier ones (up to 50 per call). Lightly rate-limited.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | About the result only — never the conversation or the user. | |
| call_id | Yes | ||
| outcome | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| call_id | No | |
| version | No | Which submission for this call this is (1 for the first); earlier ones are kept. |
| recorded | No | |
| doc_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only declare it is a non-destructive, non-open-world write), the description discloses that nothing is overwritten, that repeat submissions create versions retaining up to 50 per call, that it is lightly rate-limited, and that no user words or personal data may be included. These are exactly the operational and privacy facts an agent needs and cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by the constraint and then the behavioral facts, in a compact paragraph with no wasted sentences. There is minor duplication between the privacy instruction and the schema's notes description, but it is defensible emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter write tool with an output schema and reasonable annotations, the description covers purpose, privacy constraints, idempotency/versioning behavior, and rate limiting. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description must compensate, and it does: it explains that call_id refers to an earlier response, characterizes outcome as whether the result helped, and reinforces that notes should cover only the result. The enum values themselves go unglossed, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Tell us how a call went" names the action and the subject (post-call feedback) in a way that is unmistakable and clearly distinct from the lookup-oriented siblings (search_places, get_docs, list_areas). It stops just short of 5 because the verb is conversational rather than a precise operation name, but an agent can still tell instantly what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent exactly when to invoke it: reference the call_id of an earlier response and report whether it helped. It gives clear context but names no alternative or exclusion path (trivially so, since no sibling overlaps), so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_place1 field changed- changed
Output schema / properties / place / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "added_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly added the place. Not a freshness date." - }, - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One-line editorial summary." - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "data_refreshed_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." - }, - "distance_km": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "close": { - "type": "string" - }, - "close_day": { - "anyOf": [ - { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "day": { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - "open": { - "type": "string" - } - }, - "required": [ - "day", - "open", - "close" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." - }, - "hours_updated_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "maps_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "open_now": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "IANA timezone of the place." - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dedicated_kitchen": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "menu": { + "anyOf": [ + { + "enum": [ + "DEDICATED_GF_MENU", + "GF_OPTIONS_MARKED", + "GF_OPTIONS_NOT_MARKED", + "UNKNOWN" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
search_places1 field changed- changed
Output schema / properties / places / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "added_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly added the place. Not a freshness date." - }, - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One-line editorial summary." - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "data_refreshed_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." - }, - "distance_km": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "close": { - "type": "string" - }, - "close_day": { - "anyOf": [ - { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "day": { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - "open": { - "type": "string" - } - }, - "required": [ - "day", - "open", - "close" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." - }, - "hours_updated_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "maps_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "open_now": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "IANA timezone of the place." - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dedicated_kitchen": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "menu": { + "anyOf": [ + { + "enum": [ + "DEDICATED_GF_MENU", + "GF_OPTIONS_MARKED", + "GF_OPTIONS_NOT_MARKED", + "UNKNOWN" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "anyOf": [ + { + "enum": [ + "YES", + "NO", + "UNKNOWN", + "NOT_APPLICABLE" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
2 tool updates
- Changed
get_place1 field changed- changed
Output schema / properties / place / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "added_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly added the place. Not a freshness date." - }, - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One-line editorial summary." - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "data_refreshed_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." - }, - "distance_km": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "From the search center." - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "close": { - "type": "string" - }, - "close_day": { - "anyOf": [ - { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "day": { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - "open": { - "type": "string" - } - }, - "required": [ - "day", - "open", - "close" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." - }, - "hours_updated_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "maps_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "open_now": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "IANA timezone of the place." - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
search_places3 fields changed- changed
Input schema / properties / categories / descriptionPrevious value: -"Category names or ids, most important first. Every result matches all of them (after any relaxation). A name that is not exact is refused (400) with the close matches in the error."New value: +"Category names or ids, most important first. Every result matches all of them (after any relaxation). A name that is not exact is refused, with the close matches in the error." - changed
Output schema / properties / places / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": {}, - "properties": { - "added_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly added the place. Not a freshness date." - }, - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "One-line editorial summary." - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "data_refreshed_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." - }, - "distance_km": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "From the search center." - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "close": { - "type": "string" - }, - "close_day": { - "anyOf": [ - { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "day": { - "enum": [ - "sun", - "mon", - "tue", - "wed", - "thu", - "fri", - "sat" - ], - "type": "string" - }, - "open": { - "type": "string" - } - }, - "required": [ - "day", - "open", - "close" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." - }, - "hours_updated_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "maps_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "open_now": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "items": { - "additionalProperties": {}, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "IANA timezone of the place." - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one)." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / total_matched / descriptionPrevious value: -"How many places match in this area, capped (\"1000+\"). Absent when counting timed out."New value: +"How many places match in this area, capped (\"1000+\"). Absent with `place_type` (the count cannot see place types) or when counting timed out."
1 tool update
- Changed
submit_feedback1 field changed- added
Output schema / properties / versionAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Which submission for this call this is (1 for the first); earlier ones are kept." +}
7 tool updates
- Changed
get_api_key3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / quota / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "limit": { - "anyOf": [ - { - "description": "Calls allowed per window.", - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Calls allowed per window." - }, - "remaining": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "resets_at": { - "type": [ - "string", - "null" - ] - }, - "window": { - "anyOf": [ - { - "enum": [ - "hour", - "day" - ], - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "limit": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Calls allowed per window." + }, + "remaining": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "resets_at": { + "type": [ + "string", + "null" + ] + }, + "window": { + "anyOf": [ + { + "enum": [ + "hour", + "day" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_docs1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_place4 fields changed- added
Input schema / properties / id / descriptionAdded value: +"A place id from search_places, or an atly.com place link (with or without https://) or its slug. In a REST path, URL-encode a link." - changed
Input schema / properties / id / maxLengthPrevious value: -40New value: +300 - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / place / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "description": "One-line editorial summary.", - "type": [ - "string", - "null" - ] - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "description": "Reviews that mention this category.", - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "distance_km": { - "description": "From the search center.", - "type": [ - "number", - "null" - ] - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Present only for places with a gluten-free identity.", - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "description": "Weekly opening periods as reported by Google ({open:{day,time}, close:{day,time}}, day 0 = Sunday), when known. get_place's doc_notes say when they were last updated.", - "items": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening periods as reported by Google ({open:{day,time}, close:{day,time}}, day 0 = Sunday), when known. get_place's doc_notes say when they were last updated." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "last_updated": { - "description": "When Atly last refreshed this place's data from its sources. Absent when unknown; never the date the place was added.", - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "description": "Short first-person statements from real reviews, most useful first. Quote them.", - "items": { - "additionalProperties": false, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "description": "Atly score 0–10 — for the requested categories in search", - "type": [ - "number", - "null" - ] - }, - "timezone": { - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "Canonical Atly page. Link it when you cite.", - "type": [ - "string", - "null" - ] - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
list_areas4 fields changed- added
Input schema / properties / limit / maximumAdded value: +9007199254740991 - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / areas / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "bbox": { - "anyOf": [ - { - "description": "[west, south, east, north]", - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "[west, south, east, north]" - }, - "center": { - "anyOf": [ - { - "description": "[lon, lat]", - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "[lon, lat]" - }, - "country": { - "description": "Country the area is in. Coverage is densest in the United States", - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "level": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "parent": { - "description": "City for neighborhoods.", - "type": [ - "string", - "null" - ] - }, - "place_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "region": { - "description": "State for US cities and neighborhoods; the equivalent district or province elsewhere.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "bbox": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "[west, south, east, north]" + }, + "center": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "[lon, lat]" + }, + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Country the area is in. Coverage is densest in the United States, with pockets in Mexico, Israel and Thailand." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "level": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "parent": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "City for neighborhoods." + }, + "place_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "State for US cities and neighborhoods; the equivalent district or province elsewhere." + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / total / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +]
- Changed
list_categories4 fields changed- added
Input schema / properties / limit / maximumAdded value: +9007199254740991 - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / categories / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "emoji": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "match": { - "description": "How the query matched this category — exact", - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "emoji": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "match": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "How the query matched this category — exact, prefix, word, substring, keyword or fuzzy." + }, + "name": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / total / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +]
- Changed
search_places11 fields changed- changed
Input schema / properties / categories / descriptionPrevious value: -"Category ids, most important first. Every result matches all of them (after any relaxation)."New value: +"Category names or ids, most important first. Every result matches all of them (after any relaxation). A name that is not exact is refused (400) with the close matches in the error." - added
Input schema / properties / limit / maximumAdded value: +9007199254740991 - added
Input schema / properties / radius_km / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Used with lat/lon."New value: +"Used with lat/lon, in km. Held to 0.2-50 (doc_notes say so when it was)." - removed
Input schema / properties / radius_km / typeRemoved value: -"number" - changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Output schema / properties / area / anyOfPrevious value: -[ - { - "additionalProperties": true, - "description": "The resolved search geometry — an area (id, name, level, center, bbox), a city known only from its places (name, level, region, country, center, bbox; no id), or a circle (center, radius_km).", - "properties": {}, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / dropped_categories / anyOfPrevious value: -[ - { - "description": "Category ids dropped to avoid an empty result.", - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / dropped_categories / descriptionPrevious value: -"Category ids dropped to avoid an empty result."New value: +"Categories dropped to avoid an empty result, as you sent them (a name or an id)." - changed
Output schema / properties / places / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "description": "One-line editorial summary.", - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "description": "Reviews that mention this category.", - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "distance_km": { - "description": "From the search center.", - "type": [ - "number", - "null" - ] - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Present only for places with a gluten-free identity.", - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "last_updated": { - "description": "When Atly last refreshed this place's data from its sources. Absent when unknown; never the date the place was added.", - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "description": "Short first-person statements from real reviews, most useful first. Quote them.", - "items": { - "additionalProperties": false, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "review_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "description": "Atly score 0–10 — for the requested categories in search", - "type": [ - "number", - "null" - ] - }, - "url": { - "description": "Canonical Atly page. Link it when you cite.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": {}, + "properties": { + "added_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly added the place. Not a freshness date." + }, + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "One-line editorial summary." + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "data_refreshed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When Atly last refreshed the place's data from its sources. Absent when unknown." + }, + "distance_km": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "From the search center." + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "close": { + "type": "string" + }, + "close_day": { + "anyOf": [ + { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "day": { + "enum": [ + "sun", + "mon", + "tue", + "wed", + "thu", + "fri", + "sat" + ], + "type": "string" + }, + "open": { + "type": "string" + } + }, + "required": [ + "day", + "open", + "close" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown." + }, + "hours_updated_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "maps_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly." + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "open_now": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at." + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Atly score 0–10 — for the requested categories in search, the overall score in get_place — relative to other places in the same country. Absent when unmeasured (too few reviews, or closed)." + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "IANA timezone of the place." + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Canonical Atly page. Link it when you cite. Absent when the place has no page yet." + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / total_matched / anyOfPrevious value: -[ - { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "description": "How many places match in this area, capped (\"1000+\"). Absent when counting timed out." - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "string" + } + ] + }, + { + "type": "null" + } +]
- Changed
submit_feedback1 field changed- changed
Output schema / additionalPropertiesPrevious value: -falseNew value: +{}
2 tool updates
- Changed
get_place1 field changed- changed
Output schema / properties / place / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "description": "One-line editorial summary.", - "type": [ - "string", - "null" - ] - }, - "business_status": { - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "description": "Reviews that mention this category.", - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "distance_km": { - "description": "From the search center.", - "type": [ - "number", - "null" - ] - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Present only for places with a gluten-free identity.", - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "good_to_know": { - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "hours": { - "anyOf": [ - { - "description": "Weekly opening periods as reported by Google, when known.", - "items": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Weekly opening periods as reported by Google, when known." - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "last_updated": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "menu_url": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "phone": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "description": "Short first-person statements from real reviews, most useful first. Quote them.", - "items": { - "additionalProperties": false, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "reservation_url": { - "type": [ - "string", - "null" - ] - }, - "review_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "description": "Atly score 0–10 — for the requested categories in search", - "type": [ - "number", - "null" - ] - }, - "timezone": { - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "Canonical Atly page. Link it when you cite.", - "type": [ - "string", - "null" - ] - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "description": "One-line editorial summary.", + "type": [ + "string", + "null" + ] + }, + "business_status": { + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": false, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "description": "Reviews that mention this category.", + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "distance_km": { + "description": "From the search center.", + "type": [ + "number", + "null" + ] + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Present only for places with a gluten-free identity.", + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "good_to_know": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "hours": { + "anyOf": [ + { + "description": "Weekly opening periods as reported by Google ({open:{day,time}, close:{day,time}}, day 0 = Sunday), when known. get_place's doc_notes say when they were last updated.", + "items": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Weekly opening periods as reported by Google ({open:{day,time}, close:{day,time}}, day 0 = Sunday), when known. get_place's doc_notes say when they were last updated." + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "last_updated": { + "description": "When Atly last refreshed this place's data from its sources. Absent when unknown; never the date the place was added.", + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "menu_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "phone": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "description": "Short first-person statements from real reviews, most useful first. Quote them.", + "items": { + "additionalProperties": false, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "reservation_url": { + "type": [ + "string", + "null" + ] + }, + "review_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "description": "Atly score 0–10 — for the requested categories in search", + "type": [ + "number", + "null" + ] + }, + "timezone": { + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical Atly page. Link it when you cite.", + "type": [ + "string", + "null" + ] + }, + "website": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
search_places2 fields changed- added
Input schema / properties / place_typeAdded value: +{ + "description": "Optional. Keep only places whose Google place type contains one of these words, matched as whole words: \"restaurant\" keeps \"Mexican restaurant\" and \"Pizza restaurant\", \"coffee\" keeps \"Coffee shop\", \"bar\" keeps \"Wine bar\" but not \"Barber shop\". A place matches on its main type (`place_type` in results) or any of its other Google types. Use it when the user asks for a kind of venue (\"gluten-free restaurants\"), not a dish or a feature. Google's types are literal: \"Cafe\" and \"Coffee shop\" are different, so for cafes pass both [\"cafe\", \"coffee\"]. The filter is applied to the strongest 400 places for the categories and never relaxed.", + "items": { + "maxLength": 40, + "minLength": 2, + "type": "string" + }, + "maxItems": 5, + "type": "array" +} - changed
Output schema / properties / places / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "blurb": { - "description": "One-line editorial summary.", - "type": [ - "string", - "null" - ] - }, - "category_scores": { - "anyOf": [ - { - "items": { - "additionalProperties": false, - "properties": { - "category_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "reviews": { - "anyOf": [ - { - "description": "Reviews that mention this category.", - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Reviews that mention this category." - }, - "score": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ] - }, - "distance_km": { - "description": "From the search center.", - "type": [ - "number", - "null" - ] - }, - "gluten_free": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Present only for places with a gluten-free identity.", - "properties": { - "dedicated_fryer": { - "type": [ - "string", - "null" - ] - }, - "dedicated_kitchen": { - "type": [ - "string", - "null" - ] - }, - "menu": { - "type": [ - "string", - "null" - ] - }, - "safety": { - "anyOf": [ - { - "enum": [ - "100% dedicated gluten-free", - "celiac friendly (low risk of cross-contamination)", - "accommodating (some risk of cross-contamination)", - "discuss cross-contamination with staff" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "trained_staff": { - "type": [ - "string", - "null" - ] - }, - "verified_by_atly": { - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Present only for places with a gluten-free identity." - }, - "google_rating": { - "type": [ - "number", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "last_updated": { - "type": [ - "string", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lon": { - "type": [ - "number", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "place_type": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "reasons": { - "anyOf": [ - { - "description": "Short first-person statements from real reviews, most useful first. Quote them.", - "items": { - "additionalProperties": false, - "properties": { - "kind": { - "type": [ - "string", - "null" - ] - }, - "sentiment": { - "anyOf": [ - { - "enum": [ - "positive", - "neutral", - "negative" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "text": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Short first-person statements from real reviews, most useful first. Quote them." - }, - "review_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "score": { - "description": "Atly score 0–10 — for the requested categories in search", - "type": [ - "number", - "null" - ] - }, - "url": { - "description": "Canonical Atly page. Link it when you cite.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "properties": { + "address": { + "type": [ + "string", + "null" + ] + }, + "blurb": { + "description": "One-line editorial summary.", + "type": [ + "string", + "null" + ] + }, + "category_scores": { + "anyOf": [ + { + "items": { + "additionalProperties": false, + "properties": { + "category_id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "reviews": { + "anyOf": [ + { + "description": "Reviews that mention this category.", + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Reviews that mention this category." + }, + "score": { + "type": [ + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "distance_km": { + "description": "From the search center.", + "type": [ + "number", + "null" + ] + }, + "gluten_free": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Present only for places with a gluten-free identity.", + "properties": { + "dedicated_fryer": { + "type": [ + "string", + "null" + ] + }, + "dedicated_kitchen": { + "type": [ + "string", + "null" + ] + }, + "menu": { + "type": [ + "string", + "null" + ] + }, + "safety": { + "anyOf": [ + { + "enum": [ + "100% dedicated gluten-free", + "celiac friendly (low risk of cross-contamination)", + "accommodating (some risk of cross-contamination)", + "discuss cross-contamination with staff" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "trained_staff": { + "type": [ + "string", + "null" + ] + }, + "verified_by_atly": { + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Present only for places with a gluten-free identity." + }, + "google_rating": { + "type": [ + "number", + "null" + ] + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "last_updated": { + "description": "When Atly last refreshed this place's data from its sources. Absent when unknown; never the date the place was added.", + "type": [ + "string", + "null" + ] + }, + "lat": { + "type": [ + "number", + "null" + ] + }, + "lon": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "place_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "reasons": { + "anyOf": [ + { + "description": "Short first-person statements from real reviews, most useful first. Quote them.", + "items": { + "additionalProperties": false, + "properties": { + "kind": { + "type": [ + "string", + "null" + ] + }, + "sentiment": { + "anyOf": [ + { + "enum": [ + "positive", + "neutral", + "negative" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "text": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "Short first-person statements from real reviews, most useful first. Quote them." + }, + "review_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "score": { + "description": "Atly score 0–10 — for the requested categories in search", + "type": [ + "number", + "null" + ] + }, + "url": { + "description": "Canonical Atly page. Link it when you cite.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +]
3 tool updates
- Changed
list_areas2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum areas to return, at most 200; a larger value returns 200." - removed
Input schema / properties / limit / maximumRemoved value: -200
- Changed
list_categories2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum categories to return."New value: +"Maximum categories to return, at most 2000; a larger value returns 2000." - removed
Input schema / properties / limit / maximumRemoved value: -2000
- Changed
search_places6 fields changed- changed
Input schema / properties / area_id / descriptionPrevious value: -"An id from `list_areas`; the search covers that area's viewport. Give this or lat/lon, not both."New value: +"An id from `list_areas`; the search covers that area's viewport. A city name also works (\"Austin\", \"Boise, ID\"): it resolves to the matching area, or, for a city with no area, to the extent of the places whose address is in it; the response's `area` and doc_notes say what it resolved to. Give this or lat/lon, not both." - added
Input schema / properties / area_id / maxLengthAdded value: +120 - added
Input schema / properties / limit / descriptionAdded value: +"Places to return, at most 25; a larger value returns 25." - removed
Input schema / properties / limit / maximumRemoved value: -25 - changed
Output schema / properties / area / anyOfPrevious value: -[ - { - "additionalProperties": true, - "description": "The resolved search geometry — an area (id, name, level, center, bbox) or a circle (center, radius_km).", - "properties": {}, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": true, + "description": "The resolved search geometry — an area (id, name, level, center, bbox), a city known only from its places (name, level, region, country, center, bbox; no id), or a circle (center, radius_km).", + "properties": {}, + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / area / descriptionPrevious value: -"The resolved search geometry — an area (id, name, level, center, bbox) or a circle (center, radius_km)."New value: +"The resolved search geometry — an area (id, name, level, center, bbox), a city known only from its places (name, level, region, country, center, bbox; no id), or a circle (center, radius_km)."
7 tool updates
- First observed
get_api_key - First observed
get_docs - First observed
get_place - First observed
list_areas - First observed
list_categories - First observed
search_places - First observed
submit_feedback
Related MCP Connectors
Restaurant picks from food creators you trust: ranked guides, reviews and places near you.
Find gluten-free and celiac-friendly restaurants, bakeries and cafés in any city, on a map.
Find restaurants and sourced dietary dish evidence. Free discovery; metered menus need an API key.
Editorial guide to restaurants and bars — hand-picked venues with opinions, not a places database
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables discovery and scoring of independent local businesses by inverting algorithmic rankings that favor chains, using Google Places API with an opinionated independence-scoring engine.5Apache 2.0
- -
- FlicenseNot gradedqualityDmaintenanceTurns open places data into AI-assisted local market intelligence, enabling search of 4.4 million UK places by category, location, and proximity, and saving promising results to a prospecting pipeline.-
- AlicenseNot gradedqualityDmaintenanceSearch Apple Maps for businesses with Apple ratings and aggregated Yelp and TripAdvisor reviews. Useful for lead generation, restaurant research, and competitive analysis.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.