Skip to main content
Glama

Server Details

Music superpowers for your AI agent. Curated licensed music and AI tools that do the rest. Right where you already work.

Ownership verified
Status
Healthy
Uptime
99.7% over 70 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

The set has several discovery tools (search_music, find_soundtrack, search_by_reference, find_similar), but their descriptions clearly distinguish inputs and intent: written brief, known video length, external reference track, or existing AINSOF cue. Other tools map cleanly to distinct actions such as analysis, scoring, delivery, upload, track details, and feedback.

Naming Consistency4/5

Most names follow a readable snake_case verb-object pattern (analyze_video, deliver_score, get_track, search_music). A few are noun-only or preposition-led (cue_sheet, feedback, listen_link, about_ainsof), but the deviations are minor and do not create confusion.

Tool Count5/5

Fourteen tools is well-scoped for a production-music and video-scoring service, covering search, reference matching, track details, length fitting, video analysis, scoring, upload, delivery, feedback, and service information. Each tool appears to earn its place without excessive fragmentation.

Completeness4/5

The surface covers the core lifecycle from music discovery through track inspection, fitting, video scoring, and delivery, with auxiliary upload and feedback tools. There are minor possible gaps around explicit licensing/purchase or broader catalog browsing, but agents can work around them through search and cue-sheet tools.

Available Tools

14 tools
about_ainsofAInspect

Get information supplied by AINSOF about its production-music catalog, composers, technology, licensing, operational data collection, privacy, deletion requests, and official profiles. Use when the user asks about AINSOF or how its service works. Returns service information, not a music search.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

The annotations carry the safety profile (destructiveHint=false, openWorldHint=false), and the description usefully clarifies the nature of the return content as informational rather than a search result set. However, readOnlyHint=false and idempotentHint=false are unusual for a pure informational getter and the description never reconciles or explains that mismatch, so a gap remains.

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?

Two sentences with no filler, and the disambiguating 'not a music search' clause is placed last as a natural guard against misrouting. The first sentence is a long enumeration, but each listed topic is a legitimate coverage claim rather than padding.

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

Completeness4/5

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

With no parameters and no output schema, the description has to carry the return-content burden, and it does so by listing the categories of information returned plus the explicit non-search disclaimer. Nothing further is needed for an agent to call a zero-argument informational tool correctly.

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?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies no input is required to retrieve the service information.

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?

States a specific verb and resource ('Get information supplied by AINSOF') and enumerates the exact subject matter covered (catalog, composers, technology, licensing, privacy, deletion requests, official profiles). The closing clause 'Returns service information, not a music search' cleanly distinguishes it from the many music-retrieval siblings like search_music and find_soundtrack.

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

Usage Guidelines4/5

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

'Use when the user asks about AINSOF or how its service works' gives a clear triggering condition, and the negative 'not a music search' implicitly routes music queries to the search/listen siblings. It does not name an explicit alternative tool, so it stops short of full when/when-not routing.

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

analyze_videoA
Destructive
Inspect

Before AINSOF works with a video the person signs in once on ainsof.io (Google or email): without a sign_in_code this returns sign_in_required with a link to show them; after they sign in, call again with the same arguments plus that sign_in_code. Analyze a downloadable video, up to 15 minutes, for soundtrack planning without editing or scoring it. Fetches the linked file, creates or reuses an analysis job, stores analysis results and records operational activity. Returns film: what kind of video it is, the story it tells, how its feeling moves, its atmosphere and energy, whether it already has music, and the music that fits it (style, moods, instruments, tempo, and music.search, a description ready for find_soundtrack). Reading the film takes up to a minute; a still_running reply means call again with the same video_url. Also returns measured duration, frame rate, resolution, audio-stream presence, detected cut timestamps and edit-pace metrics. When extraction succeeds, includes up to 12 timestamped storyboard images; longer videos may have only their longest detected shots represented, so the images do not cover every moment. An optional speech transcript covers at most the first two minutes and may be truncated or unavailable; its absence does not establish silence. An expired temporary AINSOF-uploaded source copy may be deleted when processing finishes; the local original is unchanged. AINSOF keeps the storyboard images, transcript, optional user_request and a reduced-resolution review copy for 30 days, then deletes them.

NameRequiredDescriptionDefault
video_urlYeslink to the video
music_intentNooptional — the music the user wants, in at most 8 English words, no names (e.g. 'tense build, minimal, no vocals'). Kept as anonymous usage statistics.
project_typeNooptional — what kind of project the video is. Kept as anonymous usage statistics.
sign_in_codeNothe sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.
user_requestNooptional — in one sentence, what the user wants the music to do for this video, in their own words (e.g. 'tense build to the reveal at the end'). Kept by AINSOF for 30 days to review how well the music fit, then deleted.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations say destructiveHint=true and share almost nothing else, yet the description discloses the concrete side effect (an expired temporary AINSOF-uploaded source copy may be deleted; the local original is unchanged), the 30-day retention of storyboard images, transcript, user_request and review copy, and the fetch of an external file (openWorldHint). It also reconciles the non-readOnly flag by explicitly denying any edit or scoring of the video.

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?

Front-loaded with the mandatory auth step, which is the right priority, and most sentences carry distinct information about returns, timing and retention. It is dense to the point of being a wall of text, and 'creates or reuses an analysis job, stores analysis results and records operational activity' is implementation boilerplate that could be cut.

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 and destructive/openWorld annotations, the description carries the full burden and does: it enumerates the returned fields (film classification, music fit including music.search, duration, frame rate, resolution, audio presence, cut timestamps, pace metrics), the up-to-12 storyboard limits, and transcript truncation caveats. An agent can invoke and interpret this without opening anything else.

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, but the description adds workflow meaning beyond the schema: sign_in_code is a per-conversation credential to pass to every video tool and is the key to clearing sign_in_required, and user_request is the phrasing that gets retained for 30 days. It does not add syntax or constraints for music_intent/project_type.

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?

States a specific verb and resource ('Analyze a downloadable video'), bounds it ('up to 15 minutes'), and carves out scope explicitly ('for soundtrack planning without editing or scoring it'), which separates it from scoring/edit siblings. It also names the artifact it produces ('film').

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

Usage Guidelines4/5

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

Gives clear operational guidance: sign in once, expect sign_in_required without a code, re-call with the same arguments plus sign_in_code, and re-call on still_running. It implies the alternative (scoring/editing tools) via the exclusion but never names a sibling tool such as score_my_video or cue_sheet.

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

cue_sheetAInspect

Get the CUE SHEET for a track — album, catalog number, ISRC, tempo, key, publisher, and every writer with their IPI, society and performance share. Hand this over when the user needs delivery paperwork, rights information, or asks who wrote it. AINSOF controls master and publishing, so these are stated facts, not estimates.

NameRequiredDescriptionDefault
track_idYesa track_id, or the track's title

TDQS

A3.6/5.0
Behavior1/5

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

The description frames a pure retrieval ("Get the CUE SHEET", "Hand this over"), yet the annotations declare readOnlyHint=false and idempotentHint=false, i.e. a state-changing, non-repeatable operation. That directly contradicts the read-only nature the description asserts. The provenance sentence ("AINSOF controls master and publishing, so these are stated facts, not estimates") is genuinely useful context, but the annotation mismatch is a hard rule violation.

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

Conciseness5/5

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

Three sentences, front-loaded with the payload contents, then the usage trigger, then the provenance caveat. Every sentence earns its place and nothing is repeated from the schema or annotations.

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

Completeness4/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 usefully enumerates the returned fields and their authority, which is exactly what the agent needs to decide whether this tool answers the user's question. It omits failure behaviour (e.g. unknown track) and any note about the identifier form, keeping it just short of complete.

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

Parameters3/5

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

There is only one parameter and the schema describes it fully ("a track_id, or the track's title"), so the baseline is 3. The description adds nothing about the accepted identifier forms, so it neither compensates nor detracts.

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 gives a specific verb and resource ("Get the CUE SHEET for a track") and then enumerates exactly what the sheet contains — album, catalog number, ISRC, tempo, key, publisher, writers with IPI/society/share. That is far more specific than the neighbouring get_track/search_music, so an agent can distinguish it without opening any schema.

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

Usage Guidelines4/5

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

"Hand this over when the user needs delivery paperwork, rights information, or asks who wrote it" is an explicit when-to-use trigger tied to user intent. It stops short of naming a when-not condition or an alternative sibling, so it is clear context rather than full routing guidance.

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

deliver_scoreAInspect

Before AINSOF works with a video the person signs in once on ainsof.io (Google or email): without a sign_in_code this returns sign_in_required with a link to show them; after they sign in, call again with the same arguments plus that sign_in_code. Hand over the finished score as files, once the user is happy with it. Returns a zip holding the scored video, every section of music as a separate MP3 (192k) trimmed exactly as it was used and named with the timecode it starts at, and a cue sheet. An editor drops each file at the timecode in its name and has the render back on their own timeline. Call this with THE SAME arguments you passed to score_my_video — that is how it finds the right render. It never re-cuts anything. Downloading the zip needs a signed-in AINSOF account with download access (sign in on ainsof.io with Google or email).

NameRequiredDescriptionDefault
briefNothe same brief you scored with
versionNo
sectionsNo
silencesNo
track_idNo
video_urlYesthe same link you scored
sign_in_codeNothe sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.
music_offset_dbNothe same value you scored with, if you set one

TDQS

A4.2/5.0
Behavior4/5

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

The description carries real behavioral context beyond the annotations: the sign-in_required flow, the fact that a signed-in account with download access is needed to fetch the zip, and the guarantee that it never re-cuts anything (so the render is reused deterministically). It adds no rate-limit or failure-mode detail, and its read-only-sounding delivery behavior sits somewhat awkwardly beside readOnlyHint=false, but nothing is affirmatively contradicted.

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

Conciseness3/5

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

The sign-in instructions are stated twice ('signs in once on ainsof.io (Google or email)' and the closing 'sign in on ainsof.io with Google or email'), which is pure redundancy. The most important fact - the return payload - is placed after the auth preamble rather than front-loaded, hurting scanability.

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 fully specifies the return value (zip with scored video, per-section MP3s at 192k named by timecode, plus a cue sheet) and the workflow around it. For a delivery tool with auth gating, nothing an agent needs to invoke it correctly 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 coverage is only 50%, so the description must compensate, and it does: it explains that video_url/brief/version/music_offset_db must mirror the score_my_video call (that is how the right render is found) and describes the sign_in_code round-trip semantics. It still leaves some params (sections, silences, track_id) unexplored in prose.

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

Purpose4/5

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

The description names a concrete verb+resource (hands over the finished score as files) and enumerates exactly what the delivered zip contains, which distinguishes it from siblings like cue_sheet and score_my_video. However the purpose is buried behind two sentences of sign-in preamble, so the agent must read a while before learning what the tool actually does.

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?

It states explicitly when to call (once the user is happy with the score), how to call (with THE SAME arguments passed to score_my_video), and the exact auth loop (call, get sign_in_required plus a link, retry with the same arguments plus sign_in_code). The alternative/precondition is spelled out rather than inferred.

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

feedbackA
Destructive
Inspect

Send AINSOF what the user thought of an answer — "none of these fit", "the music doesn't land on my cut", "that second one is perfect". ASK THEM FIRST, every time, in one short question: their words would be sent to AINSOF to improve the catalog, is that alright. Send only if they say yes, and set consented to true when they do. If they decline or do not answer, do not call this tool at all — their reaction stays in the conversation. Quote them in in_their_words EXACTLY as they said it, and pass the tool it concerns plus the track_id or brief involved. Never invent a complaint, and never send feedback the user did not give.

NameRequiredDescriptionDefault
aboutYesthe tool this is about, e.g. 'search_music' or 'score_my_video'
briefNothe brief or query that produced it, if any
verdictYeshow it landed
expectedNowhat they wanted instead, if they said
track_idNothe cue it concerns, if any
consentedYestrue ONLY if you asked the user whether their feedback may be sent to AINSOF and they agreed. Never set this without having asked.
in_their_wordsNothe user's own sentence, verbatim, not paraphrased

TDQS

A4.8/5.0
Behavior5/5

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

Although annotations already flag this as destructive, open-world, and non-idempotent, the description adds meaningful behavioral context beyond them: a mandatory user-consent gate, the fact that un-consented reactions stay in the conversation, and the prohibition on inventing complaints or sending feedback the user never gave. This is substantial disclosure that the structured fields cannot carry.

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 consent requirement is front-loaded and the prose is largely action-oriented, but there is mild redundancy ('ASK THEM FIRST, every time' reinforced later by 'send only if they say yes'), and one sentence could be trimmed without loss.

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?

For a consent-gated fire-and-forget feedback tool with no output schema, the description covers the full calling contract: preconditions, the consent field value, exact quoting, and the no-fabrication rule. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic guidance beyond the schema: set consented only after asking, quote the user EXACTLY in in_their_words, and pass the concerning tool plus track_id or brief. It clarifies intent for several parameters rather than restating their definitions.

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 states a specific verb+resource ('Send AINSOF what the user thought of an answer') with concrete examples of the feedback content, and it is clearly distinguishable from siblings like search_music or score_my_video, which it references. An agent knows exactly what this tool does without opening the schema.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-NOT-to-use guidance: ask the user first every time, send only if they consent, and if they decline or don't answer, do not call the tool at all. The consent protocol sets consented to true is spelled out, leaving nothing to inference.

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

find_similarAInspect

Find AINSOF cues that sound like an AINSOF cue — the whole cue, or a passage of it marked with from and to (seconds, 5–60 s long), e.g. the hook or the bar before the drop. Each result names the matching passage inside it. Takes a track_id or the cue's title. For a song by another artist (a YouTube, Spotify, Apple Music or Deezer link) use search_by_reference instead.

NameRequiredDescriptionDefault
toNoEnd of the marked passage, in seconds (5–60 s after from).
fromNoStart of the marked passage, in seconds. Omit for the whole cue.
top_kNo
track_idYese.g. 'AIN-CAT 030_001' or 'Along The River'

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description does not contradict them. It adds one useful piece of return context — "Each result names the matching passage inside it" — which matters since there is no output schema. However it says nothing about result count, top_k behavior, or why a lookup is flagged non-read-only, leaving the behavioral picture thin.

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?

Three sentences, front-loaded with the core purpose and ending with the routing exclusion where an agent needs it. The "cues that sound like an AINSOF cue" construction is slightly circular and the 5–60 s range duplicates the schema, but there is no filler.

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

Completeness4/5

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

For a read-style similarity search with no output schema, the description covers input framing (whole cue vs passage), the identifier source (track_id or title), a concrete example, and the shape of results. The only gap is result-volume behavior (top_k default 8, max 25), which is a minor omission.

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

Parameters3/5

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

Schema coverage is 75% and the schema already explains from/to seconds, the whole-cue default when from is omitted, and that track_id accepts a title. The description largely restates the 5–60 s passage constraint and the track_id-or-title option rather than adding new semantics, and top_k is never mentioned in either place.

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?

States a concrete verb and resource ("Find AINSOF cues that sound like an AINSOF cue") and immediately scopes it to whole-cue or sub-passage queries. It explicitly distinguishes itself from search_by_reference, so an agent can route without opening either schema.

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?

Gives explicit when-to-use (whole cue, or a passage marked with from/to, e.g. the hook or the bar before the drop) and a when-not-to-use with the named alternative ("For a song by another artist ... use search_by_reference instead"). Both the positive and negative routing conditions are stated.

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

find_soundtrackAInspect

Use this when the user wants music for a specific video and its length is known. If the length is unknown, use search_music instead. Find music for a video. Given the video's length and a description of it, returns eight cues from the AINSOF catalog when suitable cues are available, preferring playable versions that fit the requested duration. When an exact-length cut is unavailable, for_your_video explains the required edit. Every result comes with its composer, publisher and a preview to listen to. Use this when someone asks for music or a soundtrack for a video and its exact duration is available. Each call is self-contained: for a refinement, describe the current musical requirements including the latest change. Send only the video description and musical requirements, never chat transcripts, assistant replies or unrelated personal information. Pass the customer's musical request in their original language, preserving their words, exclusions and durations. Do not add instruments, genres, mood, energy or vocal restrictions that they did not ask for. For a refinement, combine only the customer's established requirements and latest change, not suggestions from an assistant. One search returns evaluated matches or alternatives; present that result before proposing another direction. An unavailable search is a technical failure, not an empty catalog: explain it and do not automatically repeat or broaden the request. A user-requested retry remains possible.

NameRequiredDescriptionDefault
scopeNoOptional library restriction; omit to let the request select the library.
productNo
descriptionYesDescribe the video, mood or music wanted, in the user's language. Required; duration alone is insufficient.
cuts_per_minNoedit pace, if known
duration_secYesthe video's length in seconds
has_narrationNotrue if anyone speaks over it

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations it discloses result count (eight cues), selection preference (playable versions fitting duration), what happens on a near miss ('for_your_video explains the required edit'), payload contents (composer, publisher, preview), and that calls are self-contained so refinements must restate requirements. It also defines failure semantics ('an unavailable search is a technical failure, not an empty catalog'), though it omits rate limits or auth expectations.

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

Conciseness3/5

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

Front-loaded with the routing condition, which is good, but the description repeats itself: the when-to-use condition appears twice ('when the user wants music for a specific video and its length is known' and 'when someone asks for music or a soundtrack for a video and its exact duration is available'), and 'Find music for a video' duplicates the title. Several sentences could be merged without losing content.

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

Completeness4/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 takes on the return-value burden and does it well (cue count, metadata per result, preview, edit explanation on length mismatch), and it covers refinements and failure cases. Minor gaps remain around the optional scope/product/cuts_per_min parameters and what an 'evaluated match' versus an 'alternative' looks like.

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 coverage is 83%, so the schema already carries the baseline, but the description adds real meaning the schema does not: pass the user's request in their original language, preserve exclusions and durations, and do not invent instruments, genres, moods, energy, or vocal restrictions. It also excludes chat transcripts and assistant replies from the description field, which is guidance the schema's 'Describe the video...' text does not convey.

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 states a specific verb and resource ('Find music for a video', returns cues from the AINSOF catalog) and explicitly distinguishes itself from the sibling search_music by the known-vs-unknown duration condition. An agent can route between find_soundtrack and search_music without opening either schema.

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?

It names the alternative (search_music) and the exact condition that selects it (length unknown), then adds a full refinement protocol ('for a refinement, describe the current musical requirements including the latest change'), rules for what NOT to include, and an explicit retry policy for unavailable searches. When-to-use, when-not-to-use, and alternatives are all present.

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

fit_to_lengthAInspect

Use this when the user has chosen an AINSOF cue and needs it at a specific length — a 15-second ad, a 6-second bumper, a loop. It edits the composer's own recording; it does not generate new music. Cut one catalog cue to the length you need — for an ad, a reel, a sting or a video — the way an editor would: the song's opening, a jump of whole bars, and the song's REAL ending ringing out. Never stretched, never faded in the middle. kind='length' returns the nearest MUSICAL length (ask for 5 and you may get 6-8 seconds, so the ending still lands); kind='video' returns exactly seconds with the final hit before the last frame; kind='loop' returns a seamless loop of whole bars close to seconds. hit_at puts the song's arrival (its climax) on that second — use it for a reveal or a logo. stems=true also cuts every stem at the same points. Returns a listen link and a zip (MP3 192k mix + stems), kept 7 days. Identify the cue by the track_id or title search_music returned. For an ordinary request such as 'an 11-second version', use kind='length' and report the returned musical duration. Use kind='video' only when the user supplies a video's duration or explicitly asks for an exact duration. Do not carry a previous test's exact-length setting into a new request. When the user asks you to create, shorten or adapt a selected cue to a duration, call fit_to_length with that cue and the requested seconds. This works for arbitrary durations from 1 to 300 seconds, not just stock 15/30/40/60-second cuts or clips below 15 seconds. Preserve their chosen source version (for example NO_VOCALS); never silently use MAIN instead. If no cue has been chosen, search using their musical brief and help them choose first; a search result is not a newly generated edit. When status is processing, continue the same returned retry arguments without asking the user to repeat their request. Do not claim the edit is ready until status is ready and the returned edit links exist. Reply in the user's language, naming the cue, requested duration and actual duration. Show the supplied player and a clearly labeled download link; never show the source track's audio as the generated edit.

NameRequiredDescriptionDefault
kindNoFor an ordinary request such as 'an 11-second version', use kind='length' and report the returned musical duration. Use kind='video' only when the user supplies a video's duration or explicitly asks for an exact duration. Do not carry a previous test's exact-length setting into a new request. Use loop for an explicitly requested loop.
stemsNoalso cut every stem the same way
hit_atNooptional: the second where the song's arrival should land
secondsYesthe length you need (for kind='video', the video's length)
versionNooptional: cut from this version instead of MAIN
track_idYese.g. 'AIN-CAT 038_007', or the cue's title

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false but say nothing operational. The description fills that gap: results expire after 7 days, returns a listen link plus MP3 192k mix and stems zip, processing status must reach 'ready' before claiming success, and retry arguments should be reused. This is substantially more than the annotations provide.

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

Conciseness3/5

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

The core purpose is front-loaded in the first sentence, but the body is a long policy wall with loops of instruction, some of which duplicates the enum descriptions already in the schema. Much of it earns its place as workflow guidance, yet it is denser and longer than needed for selection and invocation.

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?

There is no output schema, so the description carries the return contract itself and does so fully: listen link, downloadable zip, audio format, retention window, and async status handling. An agent has everything required to call it and report back correctly.

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 coverage is already 100%, so the baseline is 3, but the description adds outcome-level meaning the schema lacks: the musical-quantization behavior ('ask for 5 and you may get 6-8 seconds'), the final-hit-before-last-frame behavior for kind='video', hit_at placing the climax on a given second, and the directive to preserve the chosen version (e.g. NO_VOCALS) rather than defaulting to MAIN.

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 names a specific verb and resource ('Cut one catalog cue to the length you need') and immediately scopes it against the nearest misconception: 'It edits the composer's own recording; it does not generate new music.' It is easily distinguished from siblings like search_music or deliver_score.

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?

It gives explicit routing rules: kind='length' for ordinary requests, kind='video' only when a video duration is supplied or exactness is demanded, kind='loop' for loops, and it names the fallback (search first if no cue is chosen). It also states an anti-pattern ('Do not carry a previous test's exact-length setting into a new request') and what to do during async processing.

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

get_trackBInspect

One cue in full: album, catalog number, composer with IPI, publisher, tempo, key, description, and every version and stem. Takes a track_id OR the track's title — call it by name when the user names a cue.

NameRequiredDescriptionDefault
track_idYese.g. 'AIN-CAT 031_002' or 'Shine On Today'

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the safety profile (destructiveHint=false, openWorldHint=false), and the description adds valuable return-shape context, which matters because there is no output schema. However, the annotations oddly declare readOnlyHint=false and idempotentHint=false for what reads as a pure fetch, and the description never explains what side effects or state changes a 'get' could cause — a meaningful gap given that inconsistency.

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?

Two compact sentences with the returned-field inventory front-loaded and the argument note second. The long enumeration of fields is dense but each item earns its place by telling the agent what the call yields in the absence of an output schema.

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

Completeness3/5

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

For a one-parameter retrieval tool with no output schema, listing returned fields plus the title-as-identifier option covers the essentials. It still leaves unexplained why the operation is flagged non-read-only/non-idempotent, and says nothing about result size or behavior for ambiguous titles.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter already carries an example ('AIN-CAT 031_002' or 'Shine On Today'), so the baseline is 3. The description restates that a title is acceptable as the identifier and adds the 'call it by name' tip, which is mildly useful but largely duplicates what the schema example already demonstrates.

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

Purpose4/5

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

The description gives a specific verb (retrieves one cue in full) and enumerates the returned facets — album, catalog number, composer IPI, publisher, tempo, key, versions/stems — which is far more informative than the bare name. It implies distinction from bulk siblings like search_music or cue_sheet by emphasizing 'one cue in full', but it never names those siblings to make the boundary explicit.

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

Usage Guidelines3/5

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

'call it by name when the user names a cue' is genuine invocation guidance, but it only covers argument form, not when to choose this tool over search_music, find_soundtrack, or cue_sheet. No exclusions or prerequisite context are given, so usage is only implied.

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

score_my_videoA
Destructive
Inspect

Before AINSOF works with a video the person signs in once on ainsof.io (Google or email): without a sign_in_code this returns sign_in_required with a link to show them; after they sign in, call again with the same arguments plus that sign_in_code. Create a music-scored MP4 from a supported video URL and an English music brief, an explicit catalog track, or timed sections. Measures video duration and edit pace, selects or uses the specified music, and mixes it with the source audio. Sections support separate cues, versions or stems; silences specify music-free intervals. Section and silence boundaries are adjusted to measured shot boundaries. Returns video download/watch links, chosen cues, mix details, duration and shot-count summary. Watching is free; downloading the file needs a signed-in AINSOF account with download access (sign in on ainsof.io with Google or email). Detailed cut timestamps, storyboard frames and transcripts are provided by analyze_video, not this tool. Completed delivery packages are retrieved with deliver_score using the scoring arguments. Supports direct video files and supported Dropbox/Google Drive shares; stream-only YouTube, Vimeo, Dailymotion and Twitch pages are unsupported. Creates private processing jobs and stored outputs. After verified output storage, the temporary AINSOF-uploaded source copy is deleted or queued for deletion retry; the local original is unchanged. Processing may return still_running; recent identical requests reuse existing work. Terminal failures return a reason.

NameRequiredDescriptionDefault
briefNothe music you want, IN ENGLISH. Leave it out and AINSOF watches the film first and chooses the music for what it is and how it feels (returned as `film`).
versionNoforce a version — MAIN, CUT_30, CUT_60…
sectionsNoTimed sections with separate music briefs or specified cues. Boundaries are adjusted to measured shot boundaries. This tool does not support per-section volume automation.
silencesNoMusic-free intervals, in seconds. Boundaries are adjusted to measured shot boundaries. analyze_video provides the cut list.
track_idNouse this exact cue instead, e.g. 'AIN-CAT 006_004'
video_urlYeslink to the video
music_intentNooptional — the music the user wants, in at most 8 English words, no names (e.g. 'tense build, minimal, no vocals'). Kept as anonymous usage statistics.
project_typeNooptional — what kind of project the video is. Kept as anonymous usage statistics.
sign_in_codeNothe sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.
user_requestNooptional — in one sentence, what the user wants the music to do for this video, in their own words (e.g. 'tense build to the reveal at the end'). Kept by AINSOF for 30 days to review how well the music fit, then deleted.
music_offset_dbNohow far under the video's own audio the music sits, in dB. Negative is quieter; 0 is level with it. Leave unset for the default.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=false), the description discloses a lot of behavior an agent cannot infer: the sign-in/auth flow, private job creation with stored outputs, deletion of the temporary uploaded source copy after verified storage, asynchronous 'still_running' returns, reuse of recent identical work, and terminal failures returning a reason. The deletion of the temporary copy is consistent with destructiveHint=true. The statement that recent identical requests reuse existing work sits in mild tension with idempotentHint=false, but it describes caching rather than true idempotency, so it is not a contradiction.

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?

Dense but nearly every sentence carries operational information: auth flow, output shape, source restrictions, cleanup, async behavior, error mode. The one structural weakness is front-loading the sign-in precondition ahead of the core purpose statement, which pushes 'Create a music-scored MP4...' into the middle of a long opening paragraph.

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?

No output schema exists, but the description compensates by describing the return payload (video download/watch links, chosen cues, mix details, duration and shot-count summary). Combined with source restrictions, auth requirements, async semantics, cleanup behavior and failure reporting, an agent has everything needed to call it correctly and interpret results.

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 schema already documents all 11 parameters and the baseline is 3. The description adds value by framing the three mutually alternative ways to specify music (brief vs. explicit track_id vs. timed sections), how sections/silences map to cues and stems, and an explicit negative constraint ('does not support per-section volume automation'). It does not add syntax or format detail for individual scalars like music_offset_db.

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?

States a specific verb and resource — 'Create a music-scored MP4 from a supported video URL and an English music brief, an explicit catalog track, or timed sections' — and names the three input modes up front. It explicitly distinguishes itself from analyze_video ('Detailed cut timestamps, storyboard frames and transcripts are provided by analyze_video, not this tool') and from deliver_score, so an agent can separate it from siblings without reading any schema.

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?

Gives explicit when-to-use routing: analyze_video for cut timestamps/frames/transcripts, deliver_score for completed delivery packages. It also states prerequisites (sign-in on ainsof.io, sign_in_code passed to every video tool), the retry protocol after signing in, and unsupported sources (stream-only YouTube, Vimeo, Dailymotion, Twitch). Nothing is left to inference.

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

search_by_referenceAInspect

Use this when the user wants licensable music that sounds like a song they name or link. Do not use it to identify, play or download the reference recording itself. Find AINSOF music that SOUNDS LIKE a reference. Accepts a YouTube, Spotify, Apple Music or Deezer link, or 'artist - title'. SoundCloud is not supported because it exposes no permitted preview clip; TikTok is not supported because its published metadata identifies the post caption, not the recording. Ask for the artist and title instead. Use it when the user asks for AINSOF music similar to that reference: it matches the reference against the AINSOF catalog using available audio or metadata. Supply musical_description with concrete style, groove and instruments when supported by the user's description or reliable knowledge of the reference; omit it if uncertain. This adds a separate catalog-context search. Returned candidates are not verified sound-alikes; musical suitability requires listening. Records by other artists cannot be licensed from AINSOF, so this returns our cues rather than a reading list. The first reply is often still_running because it resolves the reference through public or authorized metadata and compares a permitted preview clip by sound — call it again with the same link and it picks up the search already running.

NameRequiredDescriptionDefault
linkYes
top_kNoNumber of candidates requested. Values below eight are normalized to eight.
musical_stylesNoKnown English genre labels from the user's request or reliable knowledge of the reference, e.g. disco, funk. Omit if uncertain. Matches catalog genre tags (including single words) and may return fewer cues. Multiple styles are alternatives, not proof of their combination. Never invent a genre to fill this field.
musical_descriptionNoKnown musical style, groove and instrumentation, preferably in English. Include the user's constraints. Do not invent traits or treat the artist/title as a musical description.

TDQS

A4.4/5.0
Behavior5/5

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

Discloses behavior the annotations cannot convey: the first reply is often 'still_running' because the reference is resolved through metadata and compared by preview clip, and re-calling with the same link resumes the running search. It also warns that candidates are unverified sound-alikes and that other artists' records cannot be licensed, which is high-value operational context.

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

Conciseness3/5

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

Front-loaded with the when-to-use condition, which is good, but the middle repeats the purpose twice ('Find AINSOF music that SOUNDS LIKE a reference' then 'Use it when the user asks for AINSOF music similar to that reference'), and the SoundCloud/TikTok rationale is longer than the decision it supports.

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?

For a non-idempotent, open-world search with no output schema, the description covers everything an agent needs: input formats, unsupported sources, optional refinement fields, the asynchronous still_running polling pattern, and the caveat that results are not verified sound-alikes. No material gap remains.

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?

The schema describes three of four parameters (75% coverage), and the description adds what the schema lacks: accepted link sources (YouTube, Spotify, Apple Music, Deezer) and the guidance to supply musical_description only when supported and to omit it when uncertain. top_k is left entirely to the schema, which is acceptable given its inline description.

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

Purpose4/5

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

States a specific verb and resource — 'Find AINSOF music that SOUNDS LIKE a reference' — and explicitly scopes out identification, playback and download of the reference recording. It does not name or contrast the close siblings (find_similar, search_music, find_soundtrack), so the agent must infer the distinction from the reference-vs-catalog framing.

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?

Gives explicit when-to-use ('user wants licensable music that sounds like a song they name or link'), when-not ('not to identify, play or download the reference'), and a concrete fallback for unsupported sources (SoundCloud/TikTok → ask for artist and title instead). The conditions that select this tool are fully spelled out.

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

search_musicAInspect

Use this when the user needs existing, licensable music or sound effects for a project — background music, production music, music for an ad, trailer, YouTube video, podcast, game or film — described in words (mood, scene, genre, instruments, energy). Do not use it to generate new music, write lyrics, identify a song, or play commercial releases by other artists. Find AINSOF music from a written brief — mood, scene, genre, energy, instruments. Example: 'lo-fi hip hop underscore, warm, no vocals'. Send the user's original language and musical intent, including durations and exclusions. Each call is self-contained. For a refinement, combine the current musical requirements and the latest change into brief; do not send only the clarification question. Send only musical requirements, never chat transcripts, assistant replies or unrelated personal information. Pass the customer's musical request in their original language, preserving their words, exclusions and durations. Do not add instruments, genres, mood, energy or vocal restrictions that they did not ask for. For a refinement, combine only the customer's established requirements and latest change, not suggestions from an assistant. One search returns evaluated matches or alternatives; present that result before proposing another direction. An unavailable search is a technical failure, not an empty catalog: explain it and do not automatically repeat or broaden the request. A user-requested retry remains possible. Use the returned understanding, followups and selected preview version when presenting the answer. A NAME also works, and is answered exactly: pass a track title ('Shine On Today'), an album ('Shining Ahead'), a catalog number ('AIN-CAT 031') or a COMPOSER ('Alon Peretz') as the brief and you get that cue, that album in full, or everything that writer wrote. A composer named inside an ordinary brief puts their cues first without narrowing it. NEVER tell a user we do not have a track until you have passed its name here.

NameRequiredDescriptionDefault
briefYesWhat the music should be — or the exact name of a track, album or catalog number.
scopeNoOptional library restriction; omit to let the request select the library.
top_kNoNumber of candidates requested. Discovery searches normalize values below eight to eight.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important operating behavior: calls are self-contained, refinements must combine prior requirements with the latest change, unavailable searches are technical failures rather than empty catalogs, and automatic repetition or broadening is discouraged. These are substantial behavioral details not conveyed by the structured hints.

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

Conciseness3/5

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

The description is front-loaded with purpose and exclusions, but it is long and repetitive, especially around refinements and preserving the user's original wording. Several sentences could be merged without losing guidance.

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?

For a complex search tool with no output schema, the description covers brief construction, name lookup, failure handling, refinement behavior, and how to use returned understanding/followups/previews. It is complete enough for an agent to invoke and present results correctly.

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 coverage is 100%, so the baseline is 3. The description meaningfully enriches the brief parameter by specifying that the user's original language and musical intent must be preserved, that exclusions and durations should be included, and that exact names, album titles, catalog numbers, and composers are valid inputs.

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

Purpose4/5

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

The description states a specific verb and resource: find/search AINSOF music and sound effects from a written brief, including exact track/album/composer lookup. It clearly excludes generation, lyric writing, song identification, and playing commercial releases, though it does not explicitly distinguish itself from sibling search tools such as search_by_reference or find_similar.

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?

It gives explicit when-to-use guidance, when-not-to-use exclusions, and examples of acceptable briefs. It also specifies how to handle refinements, retries, and technical failures versus empty results, leaving little to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedfind_similar1 field changed
      • changedInput schema / properties / top_k / default
        Previous value: -10New value: +8
    • Changedsearch_by_reference4 fields changed
      • changedInput schema / properties / top_k / default
        Previous value: -10New value: +8
      • addedInput schema / properties / top_k / description
        Added value: +"Number of candidates requested. Values below eight are normalized to eight."
      • addedInput schema / properties / top_k / maximum
        Added value: +25
      • addedInput schema / properties / top_k / minimum
        Added value: +1
    • Changedsearch_music2 fields changed
      • changedInput schema / properties / top_k / default
        Previous value: -10New value: +8
      • addedInput schema / properties / top_k / description
        Added value: +"Number of candidates requested. Discovery searches normalize values below eight to eight."
  2. 2 tool updates
    • Changedscore_my_video1 field changed
      • changedInput schema / properties / sections / items / properties / stems / description
        Previous value: -"Or build this act from individual instruments of that cue — [\"STRINGS\"], or [\"BRASS\",\"BASS\"]. Every stem is the same length as the full mix and perfectly in sync with it, so any combination stays together. Use it when a moment needs one colour rather than a whole arrangement. Needs track_id."New value: +"Or build this act from individual instruments of that cue — [\"STRINGS\"], or [\"BRASS\",\"BASS\"]. Every stem is the same length as the full mix and perfectly in sync with it, so any combination stays together. Use it when a moment needs one color rather than a whole arrangement. Needs track_id."
    • Changedsearch_by_reference1 field changed
      • changedInput schema / properties / musical_styles / description
        Previous value: -"Known English genre labels from the user's request or reliable knowledge of the reference, e.g. disco, funk. Omit if uncertain. Matches catalogue genre tags (including single words) and may return fewer cues. Multiple styles are alternatives, not proof of their combination. Never invent a genre to fill this field."New value: +"Known English genre labels from the user's request or reliable knowledge of the reference, e.g. disco, funk. Omit if uncertain. Matches catalog genre tags (including single words) and may return fewer cues. Multiple styles are alternatives, not proof of their combination. Never invent a genre to fill this field."
  3. 1 tool update
    • Changedsearch_music1 field changed
      • changedInput schema / properties / brief / description
        Previous value: -"What the music should be — or the exact name of a track, album or catalogue number."New value: +"What the music should be — or the exact name of a track, album or catalog number."
  4. 2 tool updates
    • Changedfind_soundtrack3 fields changed
      • removedInput schema / properties / clarification
        Removed value: -{
        -  "maxLength": 500,
        -  "type": "string"
        -}
      • removedInput schema / properties / continue_previous
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedInput schema / properties / history
        Removed value: -{
        -  "description": "Only the current search conversation, in order. Include the original user brief; mark its first user turn contextStart=true. Exclude older topics.",
        -  "items": {
        -    "properties": {
        -      "answerTo": {
        -        "maxLength": 500,
        -        "type": "string"
        -      },
        -      "contextStart": {
        -        "description": "True on the first user turn of the active search topic.",
        -        "type": "boolean"
        -      },
        -      "role": {
        -        "enum": [
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      },
        -      "text": {
        -        "maxLength": 600,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "text"
        -    ],
        -    "type": "object"
        -  },
        -  "maxItems": 8,
        -  "type": "array"
        -}
    • Changedsearch_music3 fields changed
      • removedInput schema / properties / clarification
        Removed value: -{
        -  "maxLength": 500,
        -  "type": "string"
        -}
      • removedInput schema / properties / continue_previous
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedInput schema / properties / history
        Removed value: -{
        -  "description": "Only the current search conversation, in order. Include the original user brief; mark its first user turn contextStart=true. Exclude older topics.",
        -  "items": {
        -    "properties": {
        -      "answerTo": {
        -        "maxLength": 500,
        -        "type": "string"
        -      },
        -      "contextStart": {
        -        "description": "True on the first user turn of the active search topic.",
        -        "type": "boolean"
        -      },
        -      "role": {
        -        "enum": [
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      },
        -      "text": {
        -        "maxLength": 600,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "text"
        -    ],
        -    "type": "object"
        -  },
        -  "maxItems": 8,
        -  "type": "array"
        -}
  5. 2 tool updates
    • Changedfind_soundtrack7 fields changed
      • addedInput schema / properties / clarification
        Added value: +{
        +  "maxLength": 500,
        +  "type": "string"
        +}
      • addedInput schema / properties / continue_previous
        Added value: +{
        +  "type": "boolean"
        +}
      • changedInput schema / properties / description / description
        Previous value: -"what the video shows, in musical terms"New value: +"Describe the video, mood or music wanted, in the user's language. Required; duration alone is insufficient."
      • addedInput schema / properties / description / minLength
        Added value: +1
      • addedInput schema / properties / history
        Added value: +{
        +  "description": "Only the current search conversation, in order. Include the original user brief; mark its first user turn contextStart=true. Exclude older topics.",
        +  "items": {
        +    "properties": {
        +      "answerTo": {
        +        "maxLength": 500,
        +        "type": "string"
        +      },
        +      "contextStart": {
        +        "description": "True on the first user turn of the active search topic.",
        +        "type": "boolean"
        +      },
        +      "role": {
        +        "enum": [
        +          "user",
        +          "assistant"
        +        ],
        +        "type": "string"
        +      },
        +      "text": {
        +        "maxLength": 600,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "role",
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Optional library restriction; omit to let the request select the library.",
        +  "enum": [
        +    "music",
        +    "sfx"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "duration_sec"
        -]New value: +[
        +  "duration_sec",
        +  "description"
        +]
    • Changedsearch_music6 fields changed
      • addedInput schema / properties / clarification
        Added value: +{
        +  "maxLength": 500,
        +  "type": "string"
        +}
      • addedInput schema / properties / continue_previous
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / history
        Added value: +{
        +  "description": "Only the current search conversation, in order. Include the original user brief; mark its first user turn contextStart=true. Exclude older topics.",
        +  "items": {
        +    "properties": {
        +      "answerTo": {
        +        "maxLength": 500,
        +        "type": "string"
        +      },
        +      "contextStart": {
        +        "description": "True on the first user turn of the active search topic.",
        +        "type": "boolean"
        +      },
        +      "role": {
        +        "enum": [
        +          "user",
        +          "assistant"
        +        ],
        +        "type": "string"
        +      },
        +      "text": {
        +        "maxLength": 600,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "role",
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "type": "array"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Optional library restriction; omit to let the request select the library.",
        +  "enum": [
        +    "music",
        +    "sfx"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / top_k / maximum
        Added value: +40
      • addedInput schema / properties / top_k / minimum
        Added value: +1
  6. 5 tool updates
    • Changedanalyze_video1 field changed
      • addedInput schema / properties / sign_in_code
        Added value: +{
        +  "description": "the sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.",
        +  "type": "string"
        +}
    • Changeddeliver_score1 field changed
      • addedInput schema / properties / sign_in_code
        Added value: +{
        +  "description": "the sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.",
        +  "type": "string"
        +}
    • Addedfind_similar
    • Changedfit_to_length1 field changed
      • changedInput schema / properties / kind / description
        Previous value: -"length (default) · video (exact length) · loop"New value: +"For an ordinary request such as 'an 11-second version', use kind='length' and report the returned musical duration. Use kind='video' only when the user supplies a video's duration or explicitly asks for an exact duration. Do not carry a previous test's exact-length setting into a new request. Use loop for an explicitly requested loop."
    • Changedscore_my_video2 fields changed
      • changedInput schema / properties / brief / description
        Previous value: -"the music you want, IN ENGLISH"New value: +"the music you want, IN ENGLISH. Leave it out and AINSOF watches the film first and chooses the music for what it is and how it feels (returned as `film`)."
      • addedInput schema / properties / sign_in_code
        Added value: +{
        +  "description": "the sign_in_code AINSOF returned with its sign-in link, once the person has signed in. Pass it to every video tool in this conversation.",
        +  "type": "string"
        +}
  7. 2 tool updates
    • Changedanalyze_video3 fields changed
      • addedInput schema / properties / music_intent
        Added value: +{
        +  "description": "optional — the music the user wants, in at most 8 English words, no names (e.g. 'tense build, minimal, no vocals'). Kept as anonymous usage statistics.",
        +  "type": "string"
        +}
      • addedInput schema / properties / project_type
        Added value: +{
        +  "description": "optional — what kind of project the video is. Kept as anonymous usage statistics.",
        +  "enum": [
        +    "ad",
        +    "social",
        +    "documentary",
        +    "film",
        +    "trailer",
        +    "game",
        +    "corporate",
        +    "event",
        +    "podcast",
        +    "music_video",
        +    "other"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / user_request
        Added value: +{
        +  "description": "optional — in one sentence, what the user wants the music to do for this video, in their own words (e.g. 'tense build to the reveal at the end'). Kept by AINSOF for 30 days to review how well the music fit, then deleted.",
        +  "type": "string"
        +}
    • Changedscore_my_video3 fields changed
      • addedInput schema / properties / music_intent
        Added value: +{
        +  "description": "optional — the music the user wants, in at most 8 English words, no names (e.g. 'tense build, minimal, no vocals'). Kept as anonymous usage statistics.",
        +  "type": "string"
        +}
      • addedInput schema / properties / project_type
        Added value: +{
        +  "description": "optional — what kind of project the video is. Kept as anonymous usage statistics.",
        +  "enum": [
        +    "ad",
        +    "social",
        +    "documentary",
        +    "film",
        +    "trailer",
        +    "game",
        +    "corporate",
        +    "event",
        +    "podcast",
        +    "music_video",
        +    "other"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / user_request
        Added value: +{
        +  "description": "optional — in one sentence, what the user wants the music to do for this video, in their own words (e.g. 'tense build to the reveal at the end'). Kept by AINSOF for 30 days to review how well the music fit, then deleted.",
        +  "type": "string"
        +}
  8. 1 tool update
    • Addedfit_to_length
  9. 1 tool update
    • Changedsearch_by_reference1 field changed
      • addedInput schema / properties / musical_styles
        Added value: +{
        +  "description": "Known English genre labels from the user's request or reliable knowledge of the reference, e.g. disco, funk. Omit if uncertain. Matches catalogue genre tags (including single words) and may return fewer cues. Multiple styles are alternatives, not proof of their combination. Never invent a genre to fill this field.",
        +  "items": {
        +    "maxLength": 80,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "type": "array"
        +}
  10. 1 tool update
    • Changedsearch_by_reference1 field changed
      • addedInput schema / properties / musical_description
        Added value: +{
        +  "description": "Known musical style, groove and instrumentation, preferably in English. Include the user's constraints. Do not invent traits or treat the artist/title as a musical description.",
        +  "maxLength": 1000,
        +  "type": "string"
        +}

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources