rootvine-mcp
Neutral commerce resolution for AI agents — music live, ranked by trust, never by commission.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (2)
- MEDIUMen resolve_game
- MEDIUMen find_product
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"rootvine-mcp": {
"command": "npx",
"args": [
"rootvine-mcp"
]
}
}
}Paquetes ejecutables
1.4.0stdioPuntos de conexión remotos
https://mcp.rootvine.ai/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (5)
🟢resolve_music(query, slug)
Live stream, buy and collect links for a song or album — streaming services, digital stores, vinyl and CD — ranked by trust, price and availability, never by commission. Call it rather than recall: links and prices change; a guessed link 404s. Pass the user's words as `query` ("galway girl by ed sheeran"); never build slugs. On a miss, `did_you_mean` lists close matches, each with a `query` to pass back; when `resolved_as.corrected` is true, tell the user which recording is shown. RootVine never fabricates. Every link existed at resolved_at. Limits: UK-focused stores, prices in GBP; music only today — games are not live yet. On partial, say which sources didn't answer; on no_results, tell the user plainly — never fall back to guessing a link.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"description": "What to look up, in the user's own words: 'galway girl by ed sheeran', 'Abbey Road vinyl'. Also takes a BeatsVine page address or a `query` value from an earlier answer. Do not build slugs.",
"type": "string",
"maxLength": 500
},
"slug": {
"description": "Deprecated alias for `query`, kept for older clients. Send exactly one of `query` or `slug`.",
"type": "string",
"maxLength": 500
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"success",
"partial",
"no_results"
]
},
"artist": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"kind": {
"anyOf": [
{
"type": "string",
"enum": [
"track",
"album"
]
},
{
"type": "null"
}
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"merchant": {
"type": "string"
},
"merchant_id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"purchase",
"stream",
"subscription"
]
},
"trust_tier": {
"type": "string",
"enum": [
"authoritative",
"verified",
"listed"
]
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"preorder",
"available",
"unknown"
]
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "null when no price is listed — never zero, never free"
},
"click_url": {
"type": "string",
"description": "The link to give the user"
},
"url": {
"type": "string"
},
"ranking_reason": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"code",
"summary"
],
"additionalProperties": {}
},
"price_freshness": {
"type": "string"
},
"edition": {
"type": "string"
}
},
"required": [
"rank",
"merchant",
"merchant_id",
"type",
"trust_tier",
"availability",
"price",
"click_url",
"url",
"ranking_reason"
],
"additionalProperties": {}
}
},
"partial_sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sources that did not answer: say so when not empty"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"resolved_as": {
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"via": {
"anyOf": [
{
"type": "string",
"enum": [
"direct",
"catalogue_search",
"live_lookup"
]
},
{
"type": "null"
}
]
},
"corrected": {
"type": "boolean",
"description": "The answer is for different words than asked: tell the user what is shown"
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"query",
"via",
"corrected",
"note"
],
"additionalProperties": {}
},
"did_you_mean": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"artist": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"track",
"album",
"artist"
]
},
"query": {
"type": "string",
"description": "Pass back as `query` to open exactly this"
},
"page_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"artist",
"kind",
"query",
"page_url"
],
"additionalProperties": {}
}
},
"page_url": {
"description": "The BeatsVine page, only when it is confirmed to exist",
"type": [
"string",
"null"
]
},
"cover_art": {
"type": [
"string",
"null"
]
},
"response_id": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string",
"description": "Every link existed at this time"
},
"ttl_seconds": {
"type": [
"number",
"null"
]
}
},
"required": [
"status",
"artist",
"title",
"kind",
"results",
"partial_sources",
"warnings",
"resolved_as",
"did_you_mean",
"page_url",
"cover_art",
"response_id",
"resolved_at",
"ttl_seconds"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢resolve_game(query, slug)
Where to buy a video game. Not live yet: every call returns an explicit "coming soon" — no links, no prices — and contacts no store. Tell the user plainly that games aren't supported yet; never guess a store link or a price. For music, use resolve_music. RootVine never fabricates. Every link existed at resolved_at. Limits: UK-focused stores, prices in GBP; music only today — games are not live yet. On partial, say which sources didn't answer; on no_results, tell the user plainly — never fall back to guessing a link.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"description": "The game's name in plain words: 'Elden Ring'.",
"type": "string",
"maxLength": 500
},
"slug": {
"description": "Deprecated alias for `query`, kept for older clients. Send exactly one of `query` or `slug`.",
"type": "string",
"maxLength": 500
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"coming_soon",
"success",
"partial",
"no_results"
]
},
"live": {
"type": "boolean",
"description": "false: games are not live yet — there are no links or prices to give"
},
"query": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"merchant": {
"type": "string"
},
"merchant_id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"purchase",
"stream",
"subscription"
]
},
"trust_tier": {
"type": "string",
"enum": [
"authoritative",
"verified",
"listed"
]
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"preorder",
"available",
"unknown"
]
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "null when no price is listed — never zero, never free"
},
"click_url": {
"type": "string",
"description": "The link to give the user"
},
"url": {
"type": "string"
},
"ranking_reason": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"code",
"summary"
],
"additionalProperties": {}
},
"price_freshness": {
"type": "string"
},
"edition": {
"type": "string"
}
},
"required": [
"rank",
"merchant",
"merchant_id",
"type",
"trust_tier",
"availability",
"price",
"click_url",
"url",
"ranking_reason"
],
"additionalProperties": {}
}
},
"response_id": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string"
}
},
"required": [
"status",
"live",
"query",
"message",
"results",
"response_id",
"resolved_at"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢find_product(query, category)
Start here when the category is unclear. Pass the user's words as `query`; RootVine reads music or games from them (keyword-based — set `category` when you know it) and answers in that tool's shape. Music is live; games answer "coming soon" for now. RootVine never fabricates. Every link existed at resolved_at. Limits: UK-focused stores, prices in GBP; music only today — games are not live yet. On partial, say which sources didn't answer; on no_results, tell the user plainly — never fall back to guessing a link.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"description": "The user's words: 'where can I stream Bad Guy by Billie Eilish', 'Mario Kart on Switch'."
},
"category": {
"description": "Set it when you know it; 'auto' (the default) reads it from the words.",
"type": "string",
"enum": [
"music",
"game",
"auto"
]
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"music",
"game"
]
},
"detected": {
"type": "boolean",
"description": "true: the category was read from the words — set `category` if it is wrong"
},
"music": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"success",
"partial",
"no_results"
]
},
"artist": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"kind": {
"anyOf": [
{
"type": "string",
"enum": [
"track",
"album"
]
},
{
"type": "null"
}
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"merchant": {
"type": "string"
},
"merchant_id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"purchase",
"stream",
"subscription"
]
},
"trust_tier": {
"type": "string",
"enum": [
"authoritative",
"verified",
"listed"
]
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"preorder",
"available",
"unknown"
]
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "null when no price is listed — never zero, never free"
},
"click_url": {
"type": "string",
"description": "The link to give the user"
},
"url": {
"type": "string"
},
"ranking_reason": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"code",
"summary"
],
"additionalProperties": {}
},
"price_freshness": {
"type": "string"
},
"edition": {
"type": "string"
}
},
"required": [
"rank",
"merchant",
"merchant_id",
"type",
"trust_tier",
"availability",
"price",
"click_url",
"url",
"ranking_reason"
],
"additionalProperties": {}
}
},
"partial_sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sources that did not answer: say so when not empty"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"resolved_as": {
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"via": {
"anyOf": [
{
"type": "string",
"enum": [
"direct",
"catalogue_search",
"live_lookup"
]
},
{
"type": "null"
}
]
},
"corrected": {
"type": "boolean",
"description": "The answer is for different words than asked: tell the user what is shown"
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"query",
"via",
"corrected",
"note"
],
"additionalProperties": {}
},
"did_you_mean": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"artist": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"track",
"album",
"artist"
]
},
"query": {
"type": "string",
"description": "Pass back as `query` to open exactly this"
},
"page_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"artist",
"kind",
"query",
"page_url"
],
"additionalProperties": {}
}
},
"page_url": {
"description": "The BeatsVine page, only when it is confirmed to exist",
"type": [
"string",
"null"
]
},
"cover_art": {
"type": [
"string",
"null"
]
},
"response_id": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string",
"description": "Every link existed at this time"
},
"ttl_seconds": {
"type": [
"number",
"null"
]
}
},
"required": [
"status",
"artist",
"title",
"kind",
"results",
"partial_sources",
"warnings",
"resolved_as",
"did_you_mean",
"page_url",
"cover_art",
"response_id",
"resolved_at",
"ttl_seconds"
],
"additionalProperties": {}
},
"game": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"coming_soon",
"success",
"partial",
"no_results"
]
},
"live": {
"type": "boolean",
"description": "false: games are not live yet — there are no links or prices to give"
},
"query": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"merchant": {
"type": "string"
},
"merchant_id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"purchase",
"stream",
"subscription"
]
},
"trust_tier": {
"type": "string",
"enum": [
"authoritative",
"verified",
"listed"
]
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"preorder",
"available",
"unknown"
]
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "null when no price is listed — never zero, never free"
},
"click_url": {
"type": "string",
"description": "The link to give the user"
},
"url": {
"type": "string"
},
"ranking_reason": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"code",
"summary"
],
"additionalProperties": {}
},
"price_freshness": {
"type": "string"
},
"edition": {
"type": "string"
}
},
"required": [
"rank",
"merchant",
"merchant_id",
"type",
"trust_tier",
"availability",
"price",
"click_url",
"url",
"ranking_reason"
],
"additionalProperties": {}
}
},
"response_id": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string"
}
},
"required": [
"status",
"live",
"query",
"message",
"results",
"response_id",
"resolved_at"
],
"additionalProperties": {}
}
},
"required": [
"category",
"detected"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢resolve_artist(query, slug)
An artist's live profile and discography from BeatsVine, for "what else has X made" or "X's albums". Each release has a `query` to pass to resolve_music for its links; vinyl, CD and collector editions are album-level, so this is the route to them. Pass the artist's name as `query`. `discography_complete: false` means not yet indexed — unknown, not empty. RootVine never fabricates. Every link existed at resolved_at. Limits: UK-focused stores, prices in GBP; music only today — games are not live yet. On partial, say which sources didn't answer; on no_results, tell the user plainly — never fall back to guessing a link.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"description": "The artist's name in plain words: 'Stromae', 'Billie Eilish'. Also takes a BeatsVine artist address or an `artist/…` query from an earlier answer.",
"type": "string",
"maxLength": 500
},
"slug": {
"description": "Deprecated alias for `query`, kept for older clients. Send exactly one of `query` or `slug`.",
"type": "string",
"maxLength": 500
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"success",
"no_results"
]
},
"artist": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"query": {
"type": "string",
"description": "Pass back to resolve_artist to open this artist"
},
"page_url": {
"type": "string"
},
"genres": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"query",
"page_url",
"genres"
],
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"discography_complete": {
"description": "false: BeatsVine has not indexed this artist yet — an empty list means unknown, not none",
"type": [
"boolean",
"null"
]
},
"release_count": {
"type": [
"number",
"null"
]
},
"releases": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"year": {
"type": [
"number",
"null"
]
},
"query": {
"type": "string",
"description": "Pass to resolve_music for this release's links"
},
"page_url": {
"type": [
"string",
"null"
]
},
"cover_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"type",
"year",
"query",
"page_url",
"cover_url"
],
"additionalProperties": {}
}
},
"resolved_as": {
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"via": {
"anyOf": [
{
"type": "string",
"enum": [
"direct",
"catalogue_search",
"live_lookup"
]
},
{
"type": "null"
}
]
},
"corrected": {
"type": "boolean",
"description": "The answer is for different words than asked: tell the user what is shown"
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"query",
"via",
"corrected",
"note"
],
"additionalProperties": {}
},
"did_you_mean": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"artist": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"track",
"album",
"artist"
]
},
"query": {
"type": "string",
"description": "Pass back as `query` to open exactly this"
},
"page_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"artist",
"kind",
"query",
"page_url"
],
"additionalProperties": {}
}
},
"resolved_at": {
"type": "string"
}
},
"required": [
"status",
"artist",
"discography_complete",
"release_count",
"releases",
"resolved_as",
"did_you_mean",
"resolved_at"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢discover_music(chamber, wall, year, limit, resolve)
Browse live charts, genre and mood walls, editorial playlists, artist spotlights, and chart snapshots back to 1946 — "what's trending", "number one in 1994". Charts move weekly: call rather than recall. No arguments gives the chambers and featured walls; `year` gives that year's snapshots; `wall` gives its entries, each with a `query` for resolve_music. Add `resolve: true` with `wall` to get number one's links in the same call. RootVine never fabricates. Every link existed at resolved_at. Limits: UK-focused stores, prices in GBP; music only today — games are not live yet. On partial, say which sources didn't answer; on no_results, tell the user plainly — never fall back to guessing a link.
Esquema de entrada
{
"type": "object",
"properties": {
"chamber": {
"description": "Chamber to browse; omit for an overview of all chambers and featured walls. 'by-genre' = genre corridors. 'for-this-moment' = moods and activities. 'charts' = live streaming charts. 'by-era' = decades. 'spotlights' = artist features.",
"type": "string",
"enum": [
"by-genre",
"for-this-moment",
"charts",
"by-era",
"spotlights"
]
},
"wall": {
"description": "A wall or chart-snapshot slug from an earlier answer (a BeatsVine wall address also works). Lists its entries; position 1 is number one. Takes priority over `chamber` and `year`.",
"type": "string",
"maxLength": 500
},
"year": {
"description": "Chart snapshots from this year (1946 to now), for questions about the past — 'number one in 1994'. Pass a snapshot's slug back as `wall` for its entries. Takes priority over `chamber`.",
"type": "integer",
"minimum": 1946,
"maximum": 2100
},
"limit": {
"description": "Max walls, entries or snapshots to return: 10 by default, 30 at most.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 30
},
"resolve": {
"description": "With `wall`: also fetch number one's stream and buy links, in the same call.",
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"foyer",
"chamber",
"wall",
"archives"
]
},
"source_url": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string"
},
"total": {
"type": [
"number",
"null"
]
},
"chambers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"wall_count": {
"type": "number"
}
},
"required": [
"slug",
"name",
"tagline",
"wall_count"
],
"additionalProperties": {}
}
},
"chamber": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
}
},
"required": [
"slug",
"name",
"tagline"
],
"additionalProperties": {}
},
"walls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Pass as `wall` to list its entries"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"entry_count": {
"type": "number"
},
"attribution": {
"type": [
"string",
"null"
]
},
"page_url": {
"type": "string"
}
},
"required": [
"slug",
"name",
"description",
"entry_count",
"attribution",
"page_url"
],
"additionalProperties": {}
}
},
"wall": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"entity_type": {
"type": [
"string",
"null"
]
},
"attribution": {
"type": [
"string",
"null"
]
},
"page_url": {
"type": "string"
}
},
"required": [
"slug",
"name",
"description",
"entity_type",
"attribution",
"page_url"
],
"additionalProperties": {}
},
"entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"position": {
"type": "number"
},
"title": {
"type": [
"string",
"null"
]
},
"artist": {
"type": [
"string",
"null"
]
},
"kind": {
"anyOf": [
{
"type": "string",
"enum": [
"track",
"album",
"artist"
]
},
{
"type": "null"
}
]
},
"query": {
"description": "Pass to resolve_music (resolve_artist for an artist) for links; null: no BeatsVine page yet",
"type": [
"string",
"null"
]
},
"page_url": {
"type": [
"string",
"null"
]
},
"cover_url": {
"type": [
"string",
"null"
]
},
"preview_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"title",
"artist",
"kind",
"query",
"page_url",
"cover_url",
"preview_url"
],
"additionalProperties": {}
}
},
"year": {
"type": [
"number",
"null"
]
},
"years": {
"type": "array",
"items": {
"type": "number"
}
},
"snapshots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Pass as `wall`, with resolve: true for number one's links"
},
"name": {
"type": "string"
},
"week": {
"type": [
"string",
"null"
]
},
"entry_count": {
"type": "number"
},
"page_url": {
"type": "string"
}
},
"required": [
"slug",
"name",
"week",
"entry_count",
"page_url"
],
"additionalProperties": {}
}
},
"top": {
"description": "Number one's links, when resolve was asked for",
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"success",
"partial",
"no_results"
]
},
"artist": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"kind": {
"anyOf": [
{
"type": "string",
"enum": [
"track",
"album"
]
},
{
"type": "null"
}
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": "number"
},
"merchant": {
"type": "string"
},
"merchant_id": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"purchase",
"stream",
"subscription"
]
},
"trust_tier": {
"type": "string",
"enum": [
"authoritative",
"verified",
"listed"
]
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"preorder",
"available",
"unknown"
]
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "null when no price is listed — never zero, never free"
},
"click_url": {
"type": "string",
"description": "The link to give the user"
},
"url": {
"type": "string"
},
"ranking_reason": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"code",
"summary"
],
"additionalProperties": {}
},
"price_freshness": {
"type": "string"
},
"edition": {
"type": "string"
}
},
"required": [
"rank",
"merchant",
"merchant_id",
"type",
"trust_tier",
"availability",
"price",
"click_url",
"url",
"ranking_reason"
],
"additionalProperties": {}
}
},
"partial_sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sources that did not answer: say so when not empty"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"resolved_as": {
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"via": {
"anyOf": [
{
"type": "string",
"enum": [
"direct",
"catalogue_search",
"live_lookup"
]
},
{
"type": "null"
}
]
},
"corrected": {
"type": "boolean",
"description": "The answer is for different words than asked: tell the user what is shown"
},
"note": {
"type": [
"string",
"null"
]
}
},
"required": [
"query",
"via",
"corrected",
"note"
],
"additionalProperties": {}
},
"did_you_mean": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"artist": {
"type": [
"string",
"null"
]
},
"kind": {
"type": "string",
"enum": [
"track",
"album",
"artist"
]
},
"query": {
"type": "string",
"description": "Pass back as `query` to open exactly this"
},
"page_url": {
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"artist",
"kind",
"query",
"page_url"
],
"additionalProperties": {}
}
},
"page_url": {
"description": "The BeatsVine page, only when it is confirmed to exist",
"type": [
"string",
"null"
]
},
"cover_art": {
"type": [
"string",
"null"
]
},
"response_id": {
"type": [
"string",
"null"
]
},
"resolved_at": {
"type": "string",
"description": "Every link existed at this time"
},
"ttl_seconds": {
"type": [
"number",
"null"
]
}
},
"required": [
"status",
"artist",
"title",
"kind",
"results",
"partial_sources",
"warnings",
"resolved_as",
"did_you_mean",
"page_url",
"cover_art",
"response_id",
"resolved_at",
"ttl_seconds"
],
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"top_note": {
"type": [
"string",
"null"
]
}
},
"required": [
"mode",
"source_url",
"resolved_at",
"total"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}Comunidad
Evidencia