Server definition
- Hash
- sha256:2d4e988c76f487b13c71c908b97fd200182ce2169a8f8581a737dd57b17aaddb
- What it is
- What a remote MCP server returned when asked what it offers: 21 tools
The blob, as servednamed by its sha256
{
"instructions": "Yenta directory: find published venues, cities and destinations and act on them BY NAME — no reconnect. Every result is partner-approved and versioned with a `source` freshness reference. search_venues / search_destinations find one; the venue_* / destination_* tools then read a named venue or destination directly (pass a slug if ambiguous). Live results also carry an `mcp_endpoint` (under venues.dev.yentaknows.ai); connect there only to transact, e.g. booking. Read-only; no auth. Powered by Yenta.",
"tools": [
{
"description": "Find a named destination's events overlapping a date window (default from today; a recurring event's span is not a single date — read its recurrence; the destination's own host calls this search_events).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"area": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Area slug from destination_facets."
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Category slug from destination_facets."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"from_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date; defaults to today."
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"to_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date; open-ended if omitted."
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_events",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "List a named destination's valid area, category and tag filter values (the destination's own host calls this list_facets).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"kind": {
"anyOf": [
{
"enum": [
"area",
"category",
"tag"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Return only this facet family; omit for all three."
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_facets",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search a named destination's FAQs, optionally filtered by text (the destination's own host calls this get_faq).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match in question/answer."
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_faq",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Read a named destination's editorial guides such as weather, getting here and safety (the destination's own host calls this get_guide).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match in guide title/body."
},
"topic": {
"anyOf": [
{
"enum": [
"weather",
"getting_here",
"transportation",
"entry_requirements",
"emergencies",
"safety",
"culture",
"packing",
"sustainability"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Guide topic; omit for all."
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_guide",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get one listing's full detail by its id, including a live linked venue's mcp_endpoint and linked_venue_slug to read or book it via the venue_* tools (the destination's own host calls this get_listing).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"listing_id": {
"description": "The listing's id, as returned by destination_listings.",
"type": "string"
}
},
"required": [
"destination",
"listing_id"
],
"type": "object"
},
"name": "destination_listing",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search a named destination's listings by text, category, area and tags (slugs from destination_facets); optionally near another listing, and the destination's own host calls this search_listings.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"area": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Area slug from destination_facets."
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Category slug from destination_facets."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Language code (e.g. 'en', 'es'); defaults to the destination's."
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"near_listing_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A listing id; returns listings within radius_km, nearest first."
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match listing names/descriptions."
},
"radius_km": {
"anyOf": [
{
"maximum": 50,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Search radius in km around near_listing_id; a larger value is reduced to the server maximum."
},
"tags": {
"description": "Tag slugs; only listings carrying ALL are returned.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_listings",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get a named destination's summary: counts by category, currency, timezone — if it reports the destination is not available, fall back to get_destination with the slug from search_destinations (the destination's own host calls this get_overview).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"destination": {
"description": "Destination name or slug; call search_destinations to discover one.",
"type": "string"
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "destination_overview",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "The closed VENUE facet vocabulary (vibe, cuisine, dietary, and more) plus today's live cuisine, price_band and neighbourhood values across published venues, the exact values search_venues' matching filters accept — for a destination's areas, categories and tags call destination_facets instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "facet_vocabulary",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get one published destination's summary and live mcp_endpoint by its slug — always available for any published destination, so use this if destination_overview reports it is not available.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"destination_slug": {
"description": "The destination's slug, as returned by search_destinations.",
"type": "string"
}
},
"required": [
"destination_slug"
],
"type": "object"
},
"name": "get_destination",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get one published venue's summary, capabilities and live mcp_endpoint by its slug — always available for any published venue, so use this if venue_profile reports the venue is not available.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"venue_slug": {
"description": "The venue's slug, as returned by search_venues.",
"type": "string"
}
},
"required": [
"venue_slug"
],
"type": "object"
},
"name": "get_venue",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get several published venues' summaries in ONE call by their slugs — the batch counterpart to get_venue, so a shortlist from search_venues needs no per-slug round-trip; the base view (identity, essentials, capabilities, booking, mcp_endpoint) is always returned, while include opts into heavier per-venue reads — hours, dietary (dietary-tag/allergen vocabulary), attributes (facets) and menu_summary — with items coming back in the requested order (a repeated slug resolves once) and not_found listing any requested slug that did not resolve to a published venue.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"include": {
"description": "Optional add-ons, any of: attributes, dietary, hours, menu_summary. Omit for the lean base view; an unknown value is a 422.",
"items": {
"enum": [
"attributes",
"dietary",
"hours",
"menu_summary"
],
"type": "string"
},
"maxItems": 4,
"type": "array"
},
"slugs": {
"description": "The venues' slugs, as returned by search_venues; duplicates resolve once. Either one slug per list entry, or comma-separated within an entry (a,b) — both work and mix; the cap applies to the total slug count.",
"items": {
"type": "string"
},
"maxItems": 20,
"type": "array"
}
},
"required": [
"slugs"
],
"type": "object"
},
"name": "get_venues",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "List the cities that have at least one published venue.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "list_cities",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search published venues and destinations together in one call, each result tagged with its kind (venue or destination); pass kind to scope to one type, query to match names and venue descriptions, and city to narrow venues, then use search_venues or search_destinations for type-specific filters such as cuisine, hours or area.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Narrow VENUES to this city (case-insensitive); destinations have no city and are not narrowed by it. Call list_cities for the exact values."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"kind": {
"anyOf": [
{
"enum": [
"venue",
"destination"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Scope to 'venue' or 'destination'; omit to return both, each tagged kind."
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Match venue names/descriptions and destination names; omit for all."
}
},
"type": "object"
},
"name": "search",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search published travel destinations by name; omit the query to list all, and connect to each result's mcp_endpoint for its listings, events and guides.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match against destination names; omit to list all."
}
},
"type": "object"
},
"name": "search_destinations",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search menu items across all published venues by text, city, required dietary tags and allergens to avoid, each result tagged with its venue so an agent can rank venues in one call.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"allergens": {
"description": "Exclude items that declare any of these allergens (spelling-insensitive).",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return items from venues in this city (case-insensitive); call list_cities for the exact values."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"dietary_tags": {
"description": "Require ALL of these dietary tags (case- and separator-insensitive).",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match against menu item names and descriptions."
}
},
"type": "object"
},
"name": "search_menus",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search published venues by name or description, optionally filtered by city, cuisine, price band, neighbourhood, whether the venue takes reservations, proximity (near a lat/long within a radius, nearest first) and opening hours (open on a given day/time, or open now) — all HARD filters that exclude on a miss, plus a HARD experiential-facet filter (facets, '<facet_type>:<value>' tokens from facet_vocabulary) — with prefer_cuisine, prefer_neighbourhood, avoid and prefer_facets as SOFT preferences that only rank a venue up or down and never drop it; each result carries the venue's capabilities and, when it is live, its mcp_endpoint.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accepts_reservations": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by whether the venue takes reservations (has a live booking tool or a booking link); omit for both."
},
"at": {
"anyOf": [
{
"format": "time",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A 24-hour HH:MM time; with open_on, require the venue be open then."
},
"avoid": {
"description": "Soft preference: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues in this city (case-insensitive); call list_cities for the exact values this directory knows."
},
"cuisine": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues with this cuisine (case-insensitive exact match)."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"facets": {
"description": "HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'). A venue must match every facet_type given (values OR within a type, types AND across); a miss EXCLUDES it. Call facet_vocabulary for the legal types and values.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"near": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded.",
"examples": [
"19.0413,-98.2062"
]
},
"neighbourhood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues in this neighbourhood (case-insensitive exact match)."
},
"open_now": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues open (true) or closed (false) at their own local time now; venues with no timezone or hours are excluded."
},
"open_on": {
"anyOf": [
{
"enum": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues open on this weekday (optionally at 'at'); venues with no published hours are excluded."
},
"prefer_cuisine": {
"description": "Soft preference: venues of these cuisines rank higher; non-matches are NOT dropped.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"prefer_facets": {
"description": "SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped. Call facet_vocabulary for the legal types and values.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"prefer_neighbourhood": {
"description": "Soft preference: venues in these neighbourhoods rank higher; non-matches are NOT dropped.",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"price_band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return venues in this price band, e.g. '$$' (case-insensitive)."
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match against venue names and descriptions; omit to list all."
},
"radius_km": {
"anyOf": [
{
"maximum": 50,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Search radius in km around 'near' (default applied when omitted)."
}
},
"type": "object"
},
"name": "search_venues",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "List a named venue's declared dietary tags and allergens — the exact spellings venue_menu_search matches literally (the venue's own host calls this get_dietary_options).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Disambiguate a name by city (call list_cities); ignored for a slug."
},
"venue": {
"description": "Venue name or slug; call search_venues to discover one.",
"type": "string"
}
},
"required": [
"venue"
],
"type": "object"
},
"name": "venue_dietary_options",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search a named venue's published FAQs, optionally filtered by text (the venue's own host calls this get_venue_faq).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Disambiguate a name by city (call list_cities); ignored for a slug."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match against questions and answers."
},
"venue": {
"description": "Venue name or slug; call search_venues to discover one.",
"type": "string"
}
},
"required": [
"venue"
],
"type": "object"
},
"name": "venue_faq",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get a named venue's published booking and other links (connect to its mcp_endpoint to actually book; the venue's own host calls this get_venue_links).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Disambiguate a name by city (call list_cities); ignored for a slug."
},
"venue": {
"description": "Venue name or slug; call search_venues to discover one.",
"type": "string"
}
},
"required": [
"venue"
],
"type": "object"
},
"name": "venue_links",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Search a named venue's menu by text, required dietary tags and allergens to avoid; call venue_dietary_options first for the exact spellings (the venue's own host calls this search_menu).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"allergens": {
"description": "Exclude items declaring any of these allergens (exact spelling).",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Disambiguate a name by city (call list_cities); ignored for a slug."
},
"cursor": {
"default": 0,
"description": "Number of items to skip; pass `next_cursor` from the previous page.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"dietary_tags": {
"description": "Require ALL of these tags (exact spelling from venue_dietary_options).",
"items": {
"type": "string"
},
"maxItems": 8,
"type": "array"
},
"limit": {
"default": 20,
"description": "Maximum number of items to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"anyOf": [
{
"maxLength": 256,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Text to match against item names and descriptions."
},
"venue": {
"description": "Venue name or slug; call search_venues to discover one.",
"type": "string"
}
},
"required": [
"venue"
],
"type": "object"
},
"name": "venue_menu_search",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
},
{
"description": "Get a named venue's published profile summary — give its name (and city) or slug; not every venue enables this richer profile, so if it reports the venue is not available, fall back to get_venue with the slug from search_venues (the venue's own host calls this get_venue_profile).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Disambiguate a name by city (call list_cities); ignored for a slug."
},
"venue": {
"description": "Venue name or slug; call search_venues to discover one.",
"type": "string"
}
},
"required": [
"venue"
],
"type": "object"
},
"name": "venue_profile",
"outputSchema": {
"additionalProperties": false,
"description": "The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.",
"properties": {
"item": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Item"
},
"items": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Items"
},
"pagination": {
"anyOf": [
{
"additionalProperties": false,
"description": "The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.",
"properties": {
"cursor": {
"title": "Cursor",
"type": "integer"
},
"limit": {
"title": "Limit",
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Cursor"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"limit",
"cursor",
"total"
],
"title": "Pagination",
"type": "object"
},
{
"type": "null"
}
],
"default": null
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reason"
},
"sample": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample"
},
"source": {
"additionalProperties": false,
"description": "FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.",
"properties": {
"approved_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approved At"
},
"content_version": {
"title": "Content Version",
"type": "integer"
},
"powered_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Powered By"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"content_version",
"source"
],
"title": "SourceReference",
"type": "object"
},
"status": {
"enum": [
"ok",
"not_available",
"validation_error"
],
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "PublicResponse",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:2d4e988c76f487b13c71c908b97fd200182ce2169a8f8581a737dd57b17aaddb | sha256sum