Skip to main content
Glama

Songs To Your Eyes — production music catalogue

Find music for a scene or brief

stye_search_tracks
Read-onlyIdempotent

Find music for a video, film, advert, trailer or podcast by describing what it needs to do.

Search 17,245 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 whenever someone asks for music, a soundtrack, a score, a cue, background music, a track for a video, or anything to play under footage — and whenever they mention 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.

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, describe the texture in the brief, and optionally add 'Background Vocals' or 'Choir' to the instruments filter.

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 a 17,245-cue 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 composers unless the user asked to stay in one place. Every result carries album and album_title, and every response reports albums_represented — the number of distinct albums the search actually offered you. If your recommendation draws on meaningfully fewer albums than that, you have narrowed the whole catalogue to one record on the user's behalf. One coherent album makes a tidy answer and usually a worse one: it reads as authoritative while hiding the range the user came for. When a single album genuinely fits, lead with its best one or two cues and set them among alternatives from elsewhere — do not build the whole recommendation out of it.

EVENTS AND OCCASIONS — a trap worth knowing. Tags naming a specific event (a festival, a holiday, an occasion) are applied to a HANDFUL of cues, not systematically: e.g. only 20 cues carry "Burning Man" while the catalogue holds ~2,900 electronic cues, and 39 carry "Festival". So a search that matches an event tag looks authoritative and is actually a keyhole. NEVER stop there. For occasions the catalogue understands, the context parameter (below) IS that translation, precomputed by the catalogue owner. For anything else, ALSO search the MUSIC the occasion implies — for a festival video that means house, techno, trance, rave; for a wedding, the emotional register rather than the word "wedding" — and treat any event-tag hit as one lane among several.

CONTEXTS — owner-curated occasion searches. The context parameter takes a named context (e.g. 'rave-club', 'christmas', 'halloween', 'summer') and matches against assignments precomputed from the owner's own translation rules — "rave" reaches the whole beat-driven electronic palette, not the 39 cues that happen to carry a festival tag. Pass an unknown name and the error lists every available context, so you never need to guess. Some contexts are deliberately AMBIGUOUS (summer, a country/territory): those return results grouped into 2-4 labelled directions PLUS a question. Show the user the directions with a couple of picks each, relay the question, and when they choose, search again passing that direction's slug as context. Country names (Lebanon, Morocco, Turkey...) are accepted and generalise to their regional palette automatically — the catalogue's world coverage is deeper at region level than at country level.

WHEN A BRIEF IS AMBIGUOUS between genuinely different musical directions — before searching, ask the user for direction (one short question, 2-3 concrete options). "Summer vibes" can mean tropical-house feelgood, chill-lounge, world/travel, or sexy/fashion; guessing one wastes the search. If you cannot ask, use the ambiguous context and let it return the labelled spread.

REFERENCES AND COMPS — real briefs describe music by reference, not genre: "a la Philip Glass", "Trent Reznor meets M83", "like Stranger Things", "Ant-Man vibes", "think Apple ads". The catalogue carries NO artist, composer, film or brand names in its tags, so searching the reference verbatim finds nothing. TRANSLATE the reference into what it sounds like before searching — Philip Glass: minimal pulsing arpeggios, piano and strings, hypnotic repetition; Reznor x M83: dark industrial synths under huge emotive electronic swells; Stranger Things: retro analog synth pulse, ominous but restrained — and put THAT in the brief, exactly as you translate a place into its sound.

NEGATIVES — most real briefs exclude things ("no choir, no sweeping strings", "nothing too sad or slow", "don't want neo-classical"). Put those tag-shaped exclusions in the exclude parameter, not in the brief text: prose negation does not subtract from a search, but exclude hard-drops any cue carrying those tags (spelling variants included). Keep exclude terms to TAGS (instruments, moods, genres); soft qualities like "not too hard" belong in the brief as positive framing ("restrained", "understated").

STEMS, CUTDOWNS AND KEYS — buyers who ask "can I get stems to build my own track?" can be told yes: the catalogue holds ~43,000 stem versions and ~1,300 drums-only mixes, reachable per track via stye_list_versions; ~1,100 cues have labelled ~:30 cutdowns (stye_fit_to_duration finds natural fits too), and the key filter matches briefs like "preferably in E" (matches both E and Em; ~7,500 mains carry a key).

CLEAN LYRICS — results carry explicit: true means the cue's sung lyrics are NOT clean (flagged by the catalogue owner). For "fully clean lyrics only" briefs, drop any result with explicit=true. Vocal cues also have their LYRICS indexed for search, so a brief about lyric SUBJECT ("a song about winning / do-or-die") can put those words in the brief and match what is actually sung.

Each result describes one cue. listen_url is the important one — a permanent page where the track can be played, with cover art and a waveform. Give it to the user every time; it is how they actually hear the music. ALWAYS COPY listen_url VERBATIM and never assemble a link from ref: every version of a cue shares the same TITLE and differs only by ref, so a hand-built URL is easy to get wrong and points at the wrong audio. Every row that can be played carries its own listen_url — use that one.

Also returned: title, album, composer (the credited artist — null only where the catalogue carries no usable credit; trust THIS field for attribution, never outside sources), description (what it sounds like and what it suits), duration_s, bpm (null means simply untagged, not slow), key, has_vocals, genres, moods, instruments, use_cases, and three editorial judgements worth quoting back — energy (low | low-building | moderate | building | high), resolves (does it land, or stay unresolved and tense), and vo_friendly (does it leave space for a voiceover). versions counts the stems, alternate mixes and shorter cuts that exist for it, and cutdown_lengths_s lists those cut lengths in seconds. ref identifies the cue for the other tools. preview_url, when present, is a temporary streaming link that expires after 15 minutes — prefer listen_url, which never expires.

Audio may carry a spoken "STYE Music" watermark. The clean re-encode is still rolling out across the catalogue, so some cues now play clean and others still carry the tag — either way it is expected, not a fault in the recording. Downloads stay watermarked regardless; a clean file comes with a licence, not with a preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoMusical key, e.g. 'E', 'Em', 'Bb', 'F# minor'. A bare major key also matches its minor ('E' matches E and Em) — briefs saying 'in E' usually accept both. About 7,500 mains carry key data; the filter skips the rest, so use only when the brief asks.
albumNoOnly tracks from this album — by name ('Desert Funk') or catalogue code ('STYE1204'); partial names match. Use it whenever someone names an album or asks what else is on the one a track came from. Works with no brief (lists the album) or with one (search inside it). Setting it disables the per-album cap, so the whole set comes back — which is why it is for a user who ASKED about an album, not a way to answer a brief. Answering a brief out of one album narrows the catalogue to one record; spread the picks instead.
briefNoWhat the music should sound like and what it is for — the mood, the scene, the instruments, vocal textures, how it should build. E.g. 'tense investigative underscore that never resolves'. Tempo and length belong in the filters below; vocal TEXTURE (wordless backing vocals, choir pads) belongs HERE, in the brief.
limitNoMax results.
moodsNoMatch ANY of these moods, e.g. ['Tension','Mysterious'].
energyNoOne of: low, low-building, moderate, building, high.
genresNoMatch ANY of these genres, e.g. ['Trailer','Orchestral'].
bpm_maxNoMaximum BPM.
bpm_minNoMinimum BPM. Use sparingly: around 54% of the catalogue has no tempo tag, and any BPM filter excludes all of those cues — good matches included. Prefer describing the pace in the brief.
contextNoOwner-curated occasion/context search — see CONTEXTS in the tool description. A context name ('rave-club', 'christmas', 'halloween', 'summer') or a country name (generalises to its regional palette). Unknown names return the full list of valid contexts. Ambiguous contexts return results grouped into labelled directions plus a question to relay to the user.
excludeNoHard-drop any cue carrying ANY of these tags — for a brief's exclusions ('no choir', 'avoid sweeping strings', 'not neo-classical'). Spelling variants and plurals are folded, so 'neo-classical' also drops 'Neoclassical'. Tag-shaped terms only; soft qualities belong in the brief.
composerNoOnly tracks credited to this composer/artist. Partial names match ('Albeg' finds 'Yair Albeg Wein'), case-insensitive. Works alone — 'music by <name>' needs no brief — or combined with a brief to search within one composer's catalogue. Every result carries its `composer` credit either way.
has_vocalsNotrue = SONGS with sung lead vocals and lyrics. false = everything else, INCLUDING cues with wordless vocal textures (background vocals, oohs/aahs, choir pads) — those count as instrumental here. 'Background vocals' in a request almost always means NO lyrics: use false and put the texture in the brief. Omit = both.
instrumentsNoMatch ANY of these instruments, e.g. ['Piano','Strings'].
vo_friendlyNotrue = only tracks that leave space for voiceover.
max_per_albumNoCap how many cues from any ONE album appear, so results spread across the catalogue instead of returning a block from one record. Defaults to 2 for a general search. Raise it, or set it high, when you deliberately want depth from one album — and it is ignored automatically when you filter by album or composer.
duration_max_sNoMaximum runtime in seconds.
duration_min_sNoMinimum runtime in seconds.
include_previewsNoAttach a streaming preview link to each result (slower; links expire in 15 minutes).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool read-only, idempotent, and non-destructive, so the description's job is to add behaviors beyond that. It does extensively: filters combine with AND and silently drop untested cues, album and composer filters disable the per-album cap, prose negation does not subtract but exclude hard-drops, ambiguous contexts return grouped directions plus a question, preview links expire in 15 minutes, and previews may carry a watermark. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with clear headings and front-loads the purpose and when-to-use. It is long, but the tool has 19 params and no output schema, so most sections earn their place. It loses one point for being dense/verbose and somewhat repetitive about composer attribution and album-spreading, but overall it is well structured for its complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return values, and it does: every important result field (title, album, composer, description, duration_s, bpm with null semantics, key, has_vocals, genres, moods, instruments, use_cases, energy, resolves, vo_friendly, versions, cutdown_lengths_s, ref, preview_url, listen_url) is covered. It also addresses edge cases like clean lyrics, watermarks, ambiguous briefs, events, and places. For a high-complexity curation tool, nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds actionable strategy beyond the schema, such as how to translate places/references into sound descriptions, how to use has_vocals=false for wordless textures, how to treat event tags as keyholes, and how to use context as an owner-curated translation. Since the schema already documents each parameter well, the description's added value is more strategic than semantic, but it still lifts above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise, specific purpose: 'Find music for a video, film, advert, trailer or podcast by describing what it needs to do.' It clearly frames the tool as a semantic search over 17,245 professionally produced cues, distinguishing it from the sibling tools (get_track, list_versions, fit_to_duration) by being the search entry point. The scope is unambiguous and the verb-resource pairing is strong.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'USE THIS TOOL whenever someone asks for music...' It also gives alternatives where relevant (stye_list_versions for stems, stye_fit_to_duration for cutdowns) and warns when NOT to use certain features, e.g. 'It is NOT how to answer a brief' for the album filter. It even advises asking the user before searching when a brief is ambiguous. This is exemplary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

Each tool has a clear primary purpose: search, inspect, list versions, and fit to duration. However, get_track already 'returns every version that exists' of a cue, which partially overlaps with list_versions, creating potential ambiguity about which to use.

Naming Consistency5/5

All tools follow a consistent 'stye_' prefix with verb_noun pattern: fit_to_duration, get_track, list_versions, search_tracks. This is perfectly uniform and predictable.

Tool Count5/5

Four tools is well-scoped for a catalogue lookup server: search, detail, versions, and duration-specific search. Each tool earns its place without unnecessary bloat or missing essentials.

Completeness5/5

The core discovery workflow is covered: search by description, retrieve full details, inspect available versions, and find tracks by exact duration. There is no obvious dead end for typical catalogue use cases.

Resources