# Songs To Your Eyes — production music catalogue

> Search 18,594 production-music cues by mood, sound and exact runtime. Instant preview links.

- name: com.songstoyoureyes/catalog
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 76/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.songstoyoureyes%2Fcatalog
- tools: https://api.protogrid.dev/v1/servers/com.songstoyoureyes%2Fcatalog/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "catalog": {
      "type": "http",
      "url": "https://mcp.songstoyoureyes.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-81d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 76/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,275 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 15 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 5,275 tokens to load them all
- tool set hash: 2a7c9b2e9c3248374e54b2f883fe2fd2
- tools last changed: 2026-10-12T23:18:33.022Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.songstoyoureyes/catalog.svg)](https://protogrid.dev/servers/com.songstoyoureyes/catalog)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-12 `stye_fit_to_duration` changed (description)
  - before: Finds cues that fit an exact runtime, for a cut of known length such as a 30-second advert or a 90-second title sequence: music to license for a project, or anything about the Songs To Your Eyes catalogue. Two kinds of result come back. Some cues already run close to the target length (fit='native'). Others are purpose-made short edits of a longer piece, cut down by the composer (fit='cutdown'), built to land on time rather than fade out. delta_s is how far each result sits from the target, negative meaning shorter. For a cutdown, licence_ref identifies that specific edit (the thing to license), while ref points at the full-length original that carries the description and the preview. Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned.
  - after: Finds cues that fit an exact runtime, for a cut of known length such as a 30-second advert or a 90-second title sequence: music to license for a project, or anything about the Songs To Your Eyes catalogue. Two kinds of result come back. Some cues already run close to the target length (fit='native'). Others are purpose-made short edits of a longer piece, cut down by the composer (fit='cutdown'), built to land on time rather than fade out. delta_s is how far each result sits from the target, negative meaning shorter. For a cutdown, licence_ref identifies that specific edit (the thing to license), while ref points at the full-length original that carries the description and the preview. Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned. The brief is matched on Songs To Your Eyes' own servers; it is not sent to any third-party AI service.
- 2026-10-12 `stye_search_tracks` changed (description)
  - before: Searches the Songs To Your Eyes production-music catalogue for cues that fit a brief for a video, film, advert, trailer or podcast: music to license for a project, or anything about the Songs To Your Eyes catalogue. The brief is matched by MEANING against an editorial description of how each cue behaves as well as against its tags, so a described scene, mood, instrumentation or arc ("tense investigative underscore that never resolves", "warm and hopeful for a charity film") matches far better than a single keyword. LISTENING. Each result carries listen_url, a permanent public page where that cue plays. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned. This holds for every list, an album listing included. FILTERS. Every filter is a hard constraint. Filters combine with AND, and a cue missing the tag a filter tests is excluded, so several filters together can empty a page. The brief carries soft qualities without excluding anything. PAGES. One call returns one page of up to 25 cues (default 15); there is no pagination, and identical arguments return identical cues. A different brief, or the same need phrased from a different angle, returns different cues. VOCALS. has_vocals=true selects songs with sung lead vocals and lyrics. Wordless vocal textures (background vocals, oohs and aahs, choir pads) are classed as instrumental, has_vocals=false; a request for "background vocals" is almost always a request for no lyrics. Texture words in the brief ("background vocals", "choir", "vocal hooks", "group singing") are detected server-side and applied as a hard requirement, so every result carries that texture and a short page reflects the catalogue's actual supply of it. COMPOSERS. The composer filter matches the credited composer by partial name, with or without a brief (with none, it lists that composer's cues). Each result's `composer` field is the catalogue's own writer credit. ANGLES. A page reflects one phrasing of a brief. Phrasings from different angles reach different parts of the whole catalogue: the literal angle (traditional instruments and idiom), the feel angle (texture, pulse and atmosphere with no instrument names, e.g. "hazy hypnotic modal groove, dusty and sun-baked") and the crossover angle (the setting's colour through another genre: desert funk, ethnic electronica, psychedelic world). The feel and crossover angles routinely surface the most distinctive picks, which a literal phrasing misses. PLACES. The catalogue describes music by instrument, texture and mood, not geography: region and culture names ("Moroccan", "Gnawa", "Berber") appear in almost no tags, so a brief built on them loses its keyword match, while the sound of the place (oud, darbuka, qanun, hand percussion; desert, hypnotic, modal, dusty) matches. ALBUMS. Albums are curated sets of about five cues built around one idea. A general search returns at most two cues per album (max_per_album) so that a page spans the catalogue, and `albums_represented` reports how many distinct albums the page drew on. The album filter returns a whole set and lifts that cap. A recommendation built from a single album shows one record's take on a brief rather than the catalogue's range. EVENTS AND OCCASIONS. Tags naming a specific event (a festival, a holiday, an occasion) are on a handful of cues, not applied systematically: only 20 cues carry "Burning Man" while the catalogue holds ~1,900 electronic cues, and 39 carry "Festival". An event-tag match is therefore a narrow slice. The music an occasion implies reaches much further: house, techno, trance and rave for a festival; the emotional register, rather than the word, for a wedding. CONTEXTS. The `context` parameter runs an owner-curated occasion search ('rave-club', 'christmas', 'halloween', 'summer' and others) against assignments precomputed from the catalogue owner's translation rules: "rave" reaches the whole beat-driven electronic palette, not just the cu
  - after: Searches the Songs To Your Eyes production-music catalogue for cues that fit a brief for a video, film, advert, trailer or podcast: music to license for a project, or anything about the Songs To Your Eyes catalogue. The brief is matched by MEANING against an editorial description of how each cue behaves as well as against its tags, so a described scene, mood, instrumentation or arc ("tense investigative underscore that never resolves", "warm and hopeful for a charity film") matches far better than a single keyword. LISTENING. Each result carries listen_url, a permanent public page where that cue plays. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned. This holds for every list, an album listing included. PRIVACY. When a brief has not been searched before, its text is sent to Google's Gemini API to interpret it; no identifier is sent. FILTERS. Every filter is a hard constraint. Filters combine with AND, and a cue missing the tag a filter tests is excluded, so several filters together can empty a page. The brief carries soft qualities without excluding anything. PAGES. One call returns one page of up to 25 cues (default 15); there is no pagination, and identical arguments return identical cues. A different brief, or the same need phrased from a different angle, returns different cues. VOCALS. has_vocals=true selects songs with sung lead vocals and lyrics. Wordless vocal textures (background vocals, oohs and aahs, choir pads) are classed as instrumental, has_vocals=false; a request for "background vocals" is almost always a request for no lyrics. Texture words in the brief ("background vocals", "choir", "vocal hooks", "group singing") are detected server-side and applied as a hard requirement, so every result carries that texture and a short page reflects the catalogue's actual supply of it. COMPOSERS. The composer filter matches the credited composer by partial name, with or without a brief (with none, it lists that composer's cues). Each result's `composer` field is the catalogue's own writer credit. ANGLES. A page reflects one phrasing of a brief. Phrasings from different angles reach different parts of the whole catalogue: the literal angle (traditional instruments and idiom), the feel angle (texture, pulse and atmosphere with no instrument names, e.g. "hazy hypnotic modal groove, dusty and sun-baked") and the crossover angle (the setting's colour through another genre: desert funk, ethnic electronica, psychedelic world). The feel and crossover angles routinely surface the most distinctive picks, which a literal phrasing misses. PLACES. The catalogue describes music by instrument, texture and mood, not geography: region and culture names ("Moroccan", "Gnawa", "Berber") appear in almost no tags, so a brief built on them loses its keyword match, while the sound of the place (oud, darbuka, qanun, hand percussion; desert, hypnotic, modal, dusty) matches. ALBUMS. Albums are curated sets of about five cues built around one idea. A general search returns at most two cues per album (max_per_album) so that a page spans the catalogue, and `albums_represented` reports how many distinct albums the page drew on. The album filter returns a whole set and lifts that cap. A recommendation built from a single album shows one record's take on a brief rather than the catalogue's range. EVENTS AND OCCASIONS. Tags naming a specific event (a festival, a holiday, an occasion) are on a handful of cues, not applied systematically: only 20 cues carry "Burning Man" while the catalogue holds ~1,900 electronic cues, and 39 carry "Festival". An event-tag match is therefore a narrow slice. The music an occasion implies reaches much further: house, techno, trance and rave for a festival; the emotional register, rather than the word, for a wedding. CONTEXTS. The `context` parameter runs an owner-curated occasion search ('rave-club', 'christmas', 'halloween', 'summer' and others) against assignmen
- 2026-10-01 `stye_feedback` changed (description, inputSchema) **meaning changed**
  - before: Send the catalogue team feedback on how well results fit — a wrong-feeling page, a brief that found nothing, or praise worth keeping. ONLY send it with the user's explicit consent: ask first, and pass consented=true only after they agree. The message should be the user's own words.
  - after: Sends a short message to the catalogue team about how well results fit: a wrong-feeling page, a brief that found nothing, or praise worth keeping. It sends only with consented=true, which records that the user explicitly agreed to send this message; without it, nothing is sent. The message is stored with the brief and track it concerns and no user identifier (https://mcp.songstoyoureyes.com/privacy).
- 2026-10-01 `stye_about` changed (description)
  - before: What this service is, how licensing works and what the server sees. Quote the licensing and privacy statements as returned — never paraphrase terms.
  - after: What this service is, how licensing works and what the server sees: the service's own licensing and privacy statements, with links to the full legal terms and the privacy policy.
- 2026-10-01 `stye_find_similar` changed (description)
  - before: Cues close in character to a given one — matched on the catalogue's own editorial description of each cue together with its genres, moods and instrumentation — for 'more like this one' moments. It compares how the cues are DESCRIBED, not the waveforms, so it is strong on character and mood and will not hear two cues as alike purely because they sound alike. Give the user each result's listen_url. Results are main mixes from other cue families, at most three per album.
  - after: Cues close in character to a given one, matched on the catalogue's editorial description of each cue together with its genres, moods and instrumentation, for 'more like this one' moments. It compares how cues are described, not their waveforms, so it is strong on character and mood and does not detect two cues as alike purely because they sound alike. Results are main mixes from other cue families, at most three per album, each with its listen_url.
- 2026-10-01 `stye_cue_sheet` changed (description, inputSchema)
  - before: The clearance data a broadcaster or PRO filing needs for one cue: every credited writer with role, society and IPI, every publisher with its share, the ISRC and the album. Present it as a clean table. If a field is not returned, report it as not on file — never fill it from anywhere else — and point the user at info@songstoyoureyes.com for gaps. Licensing itself is arranged with the Songs To Your Eyes team, not in this conversation.
  - after: The clearance data a broadcaster or PRO filing needs for one cue: every credited writer with role, society and IPI, every publisher with its share, the ISRC and the album. A field missing from the response is not on file in the catalogue; info@songstoyoureyes.com handles gaps. Licensing is arranged with the Songs To Your Eyes team, outside these tools.
- 2026-10-01 `stye_list_versions` changed (description, inputSchema)
  - before: Show every form a cue can be delivered in. Most cues come with more than the full-length mix: timed cutdowns (15, 30, 60 seconds) built to hit standard ad and promo lengths; alternate mixes such as no-drums, underscore or instrumental, for when music has to sit beneath dialogue; and individual instrument stems for an editor who wants to rebalance the track. Useful when a cue is nearly right but needs to be shorter, quieter under a voice, or stripped back.
  - after: Every form a cue can be delivered in: the full-length mix plus, where they exist, timed cutdowns (15, 30, 60 seconds) built for standard ad and promo lengths, alternate mixes such as no-drums, underscore or instrumental for music that sits beneath dialogue, and individual instrument stems for rebalancing a track. A little under half of the catalogue's cues have at least one of these. Each version carries its own listen_url. Relevant when a cue is nearly right but needs to be shorter, quieter under a voice, or stripped back.
- 2026-10-01 `stye_get_track` changed (description, inputSchema) **meaning changed**
  - before: Everything about one cue: what it sounds like and suits, its tempo, key, length and instrumentation, every version that exists of it (stems, shorter cuts, alternate mixes), and a link to hear it. Use this when someone has picked a track from a search and wants to know more, or wants to know what else that cue can be delivered as. Every result carries listen_url — a permanent page where the cue can actually be played. ALWAYS give the user the listen_url. A track they cannot hear is of no use to them. Use this when someone needs music to license for a video, film, advert, trailer or podcast, or mentions Songs To Your Eyes.
  - after: Everything about one cue: what it sounds like and suits, its tempo, key, length and instrumentation, every version that exists of it (stems, shorter cuts, alternate mixes) and its listen_url. For a track already found, or for what else a cue can be delivered as. Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned.
- 2026-10-01 `stye_fit_to_duration` changed (description, inputSchema)
  - before: Find music that fits an exact runtime — for a cut of known length, like a 30-second advert or a 90-second title sequence. Two kinds of result come back. Some cues simply run close to the target length already (fit='native'). Others are purpose-made short edits of a longer piece — a 30-second mix cut down by the composer (fit='cutdown') — which is usually the better choice, because it is built to land on time rather than fade out. delta_s is how far each result sits from the target, negative meaning shorter. For a cutdown, licence_ref identifies that specific edit (the thing to license), while ref points at the full-length original that carries the description and the preview. Every result carries listen_url — a permanent page where the cue can actually be played. ALWAYS give the user the listen_url. A track they cannot hear is of no use to them. Use this when someone needs music to license for a video, film, advert, trailer or podcast, or mentions Songs To Your Eyes.
  - after: Finds cues that fit an exact runtime, for a cut of known length such as a 30-second advert or a 90-second title sequence: music to license for a project, or anything about the Songs To Your Eyes catalogue. Two kinds of result come back. Some cues already run close to the target length (fit='native'). Others are purpose-made short edits of a longer piece, cut down by the composer (fit='cutdown'), built to land on time rather than fade out. delta_s is how far each result sits from the target, negative meaning shorter. For a cutdown, licence_ref identifies that specific edit (the thing to license), while ref points at the full-length original that carries the description and the preview. Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned.
- 2026-10-01 `stye_search_tracks` changed (description, inputSchema)
  - before: Find music for a video, film, advert, trailer or podcast by describing what it needs to do. Search professionally produced cues by MEANING, not just tags — describe the scene, the mood, the instruments, how it should develop. "Tense investigative underscore that never resolves" or "warm and hopeful for a charity film" work far better than single keywords, because the brief is matched against editorial descriptions of how each cue actually behaves as well as against its tags. Use this tool when someone needs music to license for a video, film, advert, trailer or podcast (a soundtrack, score, cue or background music to play under footage), or mentions Songs To Your Eyes. Put the sound in `brief`. Use filters ONLY for requirements the user actually stated: every filter is a hard constraint, they combine with AND, and cues missing a tag are silently dropped — so stacking several filters can empty the results. If a search comes back thin, drop filters and put the nuance in the brief before concluding the catalogue has nothing. ONE SEARCH RETURNS ONE FULL PAGE — there is no pagination. Repeating a search with the same arguments returns the SAME cues, so never search again just to get more of the same: set `limit` high enough on the first call (default 15, up to 25). One well-chosen page usually holds enough range to answer; a second search earns its cost only when it takes a genuinely different angle or a changed brief. VOCALS — the trap to avoid: has_vocals=true means SONGS with sung lead vocals and lyrics. Wordless vocal textures (background vocals, oohs and aahs, choir pads) count as INSTRUMENTAL in this catalogue. A user asking for "background vocals" almost always wants NO lyrics: set has_vocals=false and NAME THE TEXTURE IN THE BRIEF — "background vocals", "choir", "vocal hooks", "group singing" in the brief text are detected server-side and applied as a hard requirement, so every result really carries that texture. Do not re-search if the page is short: a short page means the catalogue's honest supply of that texture. COMPOSER — when someone asks for music BY a composer or artist ("tracks by Yair Albeg Wein", "more from this composer"), use the `composer` filter with the name — partial names match. It works with no brief at all (a straight listing of that composer's cues) or combined with a brief to search within their catalogue. Every result carries its `composer` credit, so attribution comes from the catalogue itself — never guess it from outside sources. EXPLORING, not just matching — for a scene, a place, or any creative request, ONE search is not an exploration of the whole catalogue. Run SEVERAL searches from genuinely different angles and curate across them: (1) the literal angle — traditional instruments and idiom; (2) the FEEL angle — texture, pulse and atmosphere with no instrument names ("hazy hypnotic modal groove, dusty and sun-baked"); (3) a crossover angle — the setting's colour through another genre (desert funk, ethnic electronica, psychedelic world). The feel and crossover angles routinely find the most artistic picks that the literal angle misses. Raise `limit` toward 25 when exploring. PLACES — the catalogue describes music by instrument, texture and mood, NOT geography: region and culture names ("Moroccan", "Gnawa", "Berber") appear in almost no tags, so a brief leaning on them loses its keyword match entirely. Translate the place into what it SOUNDS like — instruments (oud, darbuka, qanun, hand percussion), textures (desert, hypnotic, modal, dusty), and let one of your angles drop the geography altogether. ALBUMS are curated sets of about five cues built around one idea. The `album` filter pulls the rest of a set, and that is the right move when the user NAMES an album, asks what else is on the one a cue came from, or wants more of a sound they have already picked. It is NOT how to answer a brief. Answer a brief from across the catalogue: SPREAD the cues you recommend over several albums and co
  - after: Searches the Songs To Your Eyes production-music catalogue for cues that fit a brief for a video, film, advert, trailer or podcast: music to license for a project, or anything about the Songs To Your Eyes catalogue. The brief is matched by MEANING against an editorial description of how each cue behaves as well as against its tags, so a described scene, mood, instrumentation or arc ("tense investigative underscore that never resolves", "warm and hopeful for a charity film") matches far better than a single keyword. LISTENING. Each result carries listen_url, a permanent public page where that cue plays. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned. This holds for every list, an album listing included. FILTERS. Every filter is a hard constraint. Filters combine with AND, and a cue missing the tag a filter tests is excluded, so several filters together can empty a page. The brief carries soft qualities without excluding anything. PAGES. One call returns one page of up to 25 cues (default 15); there is no pagination, and identical arguments return identical cues. A different brief, or the same need phrased from a different angle, returns different cues. VOCALS. has_vocals=true selects songs with sung lead vocals and lyrics. Wordless vocal textures (background vocals, oohs and aahs, choir pads) are classed as instrumental, has_vocals=false; a request for "background vocals" is almost always a request for no lyrics. Texture words in the brief ("background vocals", "choir", "vocal hooks", "group singing") are detected server-side and applied as a hard requirement, so every result carries that texture and a short page reflects the catalogue's actual supply of it. COMPOSERS. The composer filter matches the credited composer by partial name, with or without a brief (with none, it lists that composer's cues). Each result's `composer` field is the catalogue's own writer credit. ANGLES. A page reflects one phrasing of a brief. Phrasings from different angles reach different parts of the whole catalogue: the literal angle (traditional instruments and idiom), the feel angle (texture, pulse and atmosphere with no instrument names, e.g. "hazy hypnotic modal groove, dusty and sun-baked") and the crossover angle (the setting's colour through another genre: desert funk, ethnic electronica, psychedelic world). The feel and crossover angles routinely surface the most distinctive picks, which a literal phrasing misses. PLACES. The catalogue describes music by instrument, texture and mood, not geography: region and culture names ("Moroccan", "Gnawa", "Berber") appear in almost no tags, so a brief built on them loses its keyword match, while the sound of the place (oud, darbuka, qanun, hand percussion; desert, hypnotic, modal, dusty) matches. ALBUMS. Albums are curated sets of about five cues built around one idea. A general search returns at most two cues per album (max_per_album) so that a page spans the catalogue, and `albums_represented` reports how many distinct albums the page drew on. The album filter returns a whole set and lifts that cap. A recommendation built from a single album shows one record's take on a brief rather than the catalogue's range. EVENTS AND OCCASIONS. Tags naming a specific event (a festival, a holiday, an occasion) are on a handful of cues, not applied systematically: only 20 cues carry "Burning Man" while the catalogue holds ~1,900 electronic cues, and 39 carry "Festival". An event-tag match is therefore a narrow slice. The music an occasion implies reaches much further: house, techno, trance and rave for a festival; the emotional register, rather than the word, for a wedding. CONTEXTS. The `context` parameter runs an owner-curated occasion search ('rave-club', 'christmas', 'halloween', 'summer' and others) against assignments precomputed from the catalogue owner's translation rules: "rave" reaches the whole beat-driven electronic palette, not just the cu

Full history: https://api.protogrid.dev/v1/servers/com.songstoyoureyes%2Fcatalog/changes

## Remotes

- https://mcp.songstoyoureyes.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `stye_about`: What this service is, how licensing works and what the server sees: the service's own licensing and privacy statements, with links to the full legal terms and the privacy policy.
- `stye_cue_sheet`: The clearance data a broadcaster or PRO filing needs for one cue: every credited writer with role, society and IPI, every publisher with its share, the ISRC and the album. A field missing from the response is not on file in the catalogue; info@songstoyoureyes.com handles gaps. Licensing is arranged with the Songs To Your Eyes team, outside these tools.
- `stye_feedback`: Sends a short message to the catalogue team about how well results fit: a wrong-feeling page, a brief that found nothing, or praise worth keeping. It sends only with consented=true, which records that the user explicitly agreed to send this message; without it, nothing is sent. The message is stored with the brief and track it concerns and no user identifier (https://mcp.songstoyoureyes.com/privacy).
- `stye_find_similar`: Cues close in character to a given one, matched on the catalogue's editorial description of each cue together with its genres, moods and instrumentation, for 'more like this one' moments. It compares how cues are described, not their waveforms, so it is strong on character and mood and does not detect two cues as alike purely because they sound alike. Results are main mixes from other cue families, at most three per album, each with its listen_url.
- `stye_fit_to_duration`: Finds cues that fit an exact runtime, for a cut of known length such as a 30-second advert or a 90-second title sequence: music to license for a project, or anything about the Songs To Your Eyes catalogue.

Two kinds of result come back. Some cues already run close to the target length (fit='native'). Others are purpose-made short edits of a longer piece, cut down by the composer (fit='cutdown'), built to land on time rather than fade out.

delta_s is how far each result sits from the target, negative meaning shorter. For a cutdown, licence_ref identifies that specific edit (the thing to license), while ref points at the full-length original that carries the description and the preview.

Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned.

The brief is matched on Songs To Your Eyes' own servers; it is not sent to any third-party AI service.
- `stye_get_track`: Everything about one cue: what it sounds like and suits, its tempo, key, length and instrumentation, every version that exists of it (stems, shorter cuts, alternate mixes) and its listen_url. For a track already found, or for what else a cue can be delivered as.

Every result carries listen_url, a permanent public page where the cue plays, with cover art and a waveform. It is the only way a person can hear a cue: a cue listed without its listen_url cannot be auditioned.
- `stye_list_versions`: Every form a cue can be delivered in: the full-length mix plus, where they exist, timed cutdowns (15, 30, 60 seconds) built for standard ad and promo lengths, alternate mixes such as no-drums, underscore or instrumental for music that sits beneath dialogue, and individual instrument stems for rebalancing a track. A little under half of the catalogue's cues have at least one of these. Each version carries its own listen_url. Relevant when a cue is nearly right but needs to be shorter, quieter under a voice, or stripped back.
- `stye_search_tracks`: Searches the Songs To Your Eyes production-music catalogue for cues that fit a brief for a video, film, advert, trailer or podcast: music to license for a project, or anything about the Songs To Your Eyes catalogue.

The brief is matched by MEANING against an editorial description of how each cue behaves
as well as against its tags, so a described scene, mood, instrumentation or arc ("tense
investigative underscore that never resolves", "warm and hopeful for a charity film")
matches far better than a single keyword.

LISTENING. Each result carries listen_url, a permanent public page where that cue plays.
It is the only way a person can hear a cue: a cue listed without its listen_url cannot be
auditioned. This holds for every list, an album listing included.

PRIVACY. When a brief has not been searched before, its text is sent to Google's Gemini
API to interpret it; no identifier is sent.

FILTERS. Every filter is a hard constraint. Filters combine with AND, and a cue missing
the tag a filter tests is excluded, so several filters together can empty a page. The
brief carries soft qualities without excluding anything.

PAGES. One call returns one page of up to 25 cues (default 15); there is no pagination,
and identical arguments return identical cues. A different brief, or the same need
phrased from a different angle, returns different cues.

VOCALS. has_vocals=true selects songs with sung lead vocals and lyrics. Wordless vocal
textures (background vocals, oohs and aahs, choir pads) are classed as instrumental,
has_vocals=false; a request for "background vocals" is almost always a request for no
lyrics. Texture words in the brief ("background vocals", "choir", "vocal hooks", "group
singing") are detected server-side and applied as a hard requirement, so every result
carries that texture and a short page reflects the catalogue's actual supply of it.

COMPOSERS. The composer filter matches the credited composer by partial name, with or
without a brief (with none, it lists that composer's cues). Each result's `composer` field
is the catalogue's own writer credit.

ANGLES. A page reflects one phrasing of a brief. Phrasings from different angles reach
different parts of the whole catalogue: the literal angle (traditional instruments and idiom), the
feel angle (texture, pulse and atmosphere with no instrument names, e.g. "hazy hypnotic
modal groove, dusty and sun-baked") and the crossover angle (the setting's colour through
another genre: desert funk, ethnic electronica, psychedelic world). The feel and crossover
angles routinely surface the most distinctive picks, which a literal phrasing misses.

PLACES. The catalogue describes music by instrument, texture and mood, not geography:
region and culture names ("Moroccan", "Gnawa", "Berber") appear in almost no tags, so a
brief built on them loses its keyword match, while the sound of the place (oud, darbuka,
qanun, hand percussion; desert, hypnotic, modal, dusty) matches.

ALBUMS. Albums are curated sets of about five cues built around one idea. A general search
returns at most two cues per album (max_per_album) so that a page spans the catalogue, and
`albums_represented` reports how many distinct albums the page drew on. The album filter
returns a whole set and lifts that cap. A recommendation built from a single album shows
one record's take on a brief rather than the catalogue's range.

EVENTS AND OCCASIONS. Tags naming a specific event (a festival, a holiday, an occasion)
are on a handful of cues, not applied systematically: only 20 cues carry "Burning Man"
while the catalogue holds ~1,900 electronic cues, and
39 carry "Festival". An event-tag match is therefore a narrow slice. The music an occasion
implies reaches much further: house, techno, trance and rave for a festival; the
emotional register, rather than the word, for a wedding.

CONTEXTS. The `context` parameter runs an owner-curated occasion search ('rave-club',
'christmas', 'halloween', 'summer' and others) against assignments precomputed from the
catalogue owner's translation rules: "rave" reaches the whole beat-driven electronic
palette, not just the cues that carry a festival tag. An unknown name returns the full
list of valid contexts. Country names (Lebanon, Morocco, Turkey...) are accepted and
generalise to their regional palette, where the catalogue's world coverage is deeper. Some
contexts are ambiguous (summer, a country or territory): they return results grouped into
2-4 labelled directions, each with its own slug, plus a question that tells them apart;
that slug passed as `context` returns the one direction.

AMBIGUOUS BRIEFS. Some briefs span genuinely different musical directions: "summer vibes"
can mean tropical-house feelgood, chill-lounge, world/travel or sexy/fashion. A single
search commits to one reading; the ambiguous contexts return the labelled spread.

REFERENCES. The catalogue's tags carry no artist, composer, film or brand names, so a
reference searched verbatim ("a la Philip Glass", "like Stranger Things", "think Apple
ads") finds little, while a description of its sound matches: Philip Glass is minimal
pulsing arpeggios, piano and strings, hypnotic repetition; Trent Reznor meets M83 is dark
industrial synths under huge emotive electronic swells; Stranger Things is a retro analog
synth pulse, ominous but restrained.

NEGATIVES. Negation written into the brief does not subtract from a search. The `exclude`
parameter hard-drops any cue carrying the listed tags, spelling variants included. It
takes tag-shaped terms (instruments, moods, genres); soft qualities ("not too hard")
match better as positive wording in the brief ("restrained", "understated").

STEMS, CUTDOWNS AND KEYS. The catalogue holds ~43,000
stem versions and ~2,800 drums-only stems, and
~1,100 cues have a labelled :30 cutdown; each
result's `versions` counts what exists for that cue. The `key` filter matches briefs like
"preferably in E" (E matches both E and Em); ~7,100 mains
carry a key.

CLEAN LYRICS. `explicit`: true means the catalogue owner has flagged the cue's sung lyrics
as not clean.

LYRICS. 328 cues have lyrics on file, and the lyrics are in the full-text index, so words
that are actually sung match. Matching is by wording, not subject: "a song about winning"
finds lyrics containing "winning", not every song about victory. The catalogue is
overwhelmingly instrumental, so a lyric match is a narrow slice on top of the musical
match.

RESULTS. Each result describes one cue. listen_url is a permanent public page where the
cue plays, with cover art and a waveform: it is how a person actually hears the music.
Every playable row carries its own listen_url. The versions of a cue share one title and
differ only by ref, so a link built by hand from a title or a ref can point at the wrong
audio.

Also returned: title, album, album_title, composer (the catalogue's own writer credit),
description (what it sounds like and what it suits), duration_s, bpm, key, has_vocals,
explicit, genres, moods, instruments, use_cases, keywords (extra catalogue tags beyond
those lists, such as tempo bands like 'Mid Tempo' and placements like 'TV Score'), and
three editorial judgements: energy (low | low-building | moderate | building | high),
resolves (whether it lands, or stays unresolved and tense) and vo_friendly (whether it
leaves space for a voiceover). versions counts the stems, alternate mixes and shorter cuts
that exist for the cue, and cutdown_lengths_s lists the cut lengths in seconds. ref is the
catalogue's ID for the cue. preview_url, when requested, is a temporary streaming link
that expires after 15 minutes; listen_url never expires.

A field absent from a row means the catalogue holds no data for it: an absent bpm means
untagged, not slow; an absent composer means no usable credit; an absent cutdown_lengths_s
means no timed cutdowns exist.

The player streams nearly every cue clean. A file downloaded from it without a licence is
a watermarked test file (a spoken "STYE Music" tag); a clean file comes with a licence.
preview_url is watermarked too.

