Skip to content

Live Demo: Music

Let’s continue the Live Demo with a case from the music industry. There, an agent bought a license to read one article. Here, an agent buys a license to use a music track in a video.

Today, licensing music for a video is manual work: every library has its own tiers and terms, and it is easy to buy the wrong one. An agent can do this work only if it can read and compare the terms before it pays.

The scenario we recorded: an AI agent is editing a short video clip and needs background music. It searches the Harmonia Records catalog through FORA, reads the three licenses offered for the track it picks, buys one and places the audio on the timeline. Then we give it the same task again, but with a different customer and a different use. The first video is for the creator’s own YouTube channel, the second for a broadcaster’s program. Same track, same agent, same catalog — and the agent buys a different license, because the one that fits a personal channel does not cover broadcast.

In short: for the personal YouTube video, the agent buys Online Creator for €29, and the license asks it to record the video URL for Content ID. For the broadcast program, it buys Broadcast for €450, and the license asks for a cue sheet. See the full comparison at the end of the page.

Each step shows the screen and the protocol call under it, so you can see which part of the protocol does the work.

Agent-ready licensing without custom development

Section titled “Agent-ready licensing without custom development”

Harmonia Records (the fictional music publisher in this demo) wrote no code. It described its catalog in one file, called a feed, and pushed that file to the Exchange. See the example feed at the end of the page.

After a one-time setup of its domain and CDN, FORA gives the catalog everything the agent uses on this page:

  • Search. Agents find tracks by genre, mood, tempo and other music fields.
  • Terms an agent can read. Each license becomes a signed offer with the price and the main terms. The full license text is at a public URL, so an agent can read it before it pays.
  • Payment. The Exchange checks the offer, charges the agent’s account and records the transaction.
  • Delivery. The agent gets a short-lived signed download link. The CDN checks the link before it serves the file.
  • Evidence. Each purchase leaves signed records that anyone can check later.

The catalog owner publishes one feed, and FORA handles discovery, purchase and delivery for compatible AI agents. Here’s how the pieces fit together:

For this demo, we used Claude Desktop with two MCP servers connected:

  • The FORA demo MCP server, with an agent identity that is already registered with the Exchange. This is the same setup as in the Live Demo: add the server, get an identity and register with the Exchange. We do not repeat those steps here.
  • DaVinci Resolve (the free version) with the davinci-resolve-mcp bridge, so the agent can work in the editing project: import the audio, place it on the timeline and add markers.

The editing project holds a 40-second clip from Tears of Steel: two people talk on a bridge. The music goes under their conversation.

Harmonia’s catalog is on demo.fora-protocol.org. It lists instrumental background tracks with the fields people search music by: genre, mood, tempo, energy, vocals, instruments and what the track suits. The catalog shows no prices, because a price belongs to a license, not to a track.

Harmonia Records catalog page: a table of Kevin MacLeod tracks under CC BY 4.0, with columns for genre, mood, bpm, energy, vocals, use, instrument and length in seconds.

To keep the demo simple, every track is offered under the same three licenses, at the same prices:

  • Online Creator — for an individual’s own online channel. €29.
  • Broadcast — for broadcasters and commercial clients, including TV. €450.
  • Advertising — for paid advertising. €1,200.

For the same reason, one plain-language license document describes all three, one section per license. This is the text a music supervisor would read, and it is the same text the agent reads.

The Harmonia license document open in a browser at demo.fora-protocol.org/licensing/harmonia/music-v0.1.txt. Its opening lines say it contains three alternative licenses: EUR 29 Online Creator, EUR 450 Broadcast, EUR 1200 Advertising.

The creator asks the agent for music:

I’m making a sci-fi video for my own personal YouTube channel. It starts with a scene featuring a conversation. I’m an individual creator, not a company.

Find calm background music in the FORA demo catalog, with mysterious mood, no vocals, for this video. I will trim the track to fit the clip. Show me the license options for the best track, compare them for my use, pick the one that fits, and explain why the others do not fit.

The agent does not know the catalog or the track names. It describes what it needs, and the FORA search service finds the tracks that match. The search returned a few tracks, and the best match is Ancient Rite by Kevin MacLeod: calm, low energy and a slow tempo that stays under a conversation.

Claude Desktop reply: two matching tracks, Ancient Rite and Mesmerizing Galaxy, compared by mood, energy, tempo, instruments and length. The agent picks Ancient Rite and shows a table of its three license options: Online Creator EUR 29, Broadcast EUR 450, Advertising EUR 1200.

The same answer carries the track’s three offers, one per license. This is where the prices first reach the agent: they come from the signed offers, not from the catalog page. The agent turns the offers into the table above: the price, who can buy, the allowed uses, the scope and what is not allowed.

The agent now has three offers for the same track and has to pick one. It compares each license with what it was told: a personal video for the creator’s own YouTube channel.

Claude Desktop reply: why Online Creator fits (the only option for an individual, one personal YouTube video, the cheapest), what the license requires (attribution, record the published video URL, no sponsorship or paid promotion), why Broadcast (EUR 450) and Advertising (EUR 1200) do not fit, and a caveat that the offers are fictional while the track itself is CC BY 4.0.

The license document gives a clear answer for each offer:

  • Online Creator fits. It is for an individual making their own production, and it covers one YouTube video streamed online.
  • Broadcast does not fit. It is for a broadcaster or a commercial company making a television program. The customer here is an individual, and the video is not going to TV.
  • Advertising does not fit. It is for one paid advertisement for a named advertiser. The document says directly that it is “not an upgrade covering every use”, and that it does not cover a personal YouTube video. It is also the most expensive offer.

This is the grant the agent buys, section 2 of the Online Creator license in the license document:

For EUR 29 in demo funds, the offer models a non-exclusive, worldwide, perpetual right to synchronize the identified sound recording and its musical composition into one personal YouTube video and stream that completed video online. Necessary production copies, trimming, fades and mixing under dialogue are included. Platform ad-revenue monetization of the personal video is allowed. The fee is charged once for the one production, not per view, stream or download.

The rest of the section covers what a music licensing professional checks next. The grant covers both the recording rights and the composition rights, for the use it names. It does not cover performance royalties paid through collecting societies. It excludes client work, sponsorship, paid promotion and AI training. The licensee must credit the track’s real creator, and record the published video URL for Content ID clearance.

The Exchange does not check who the customer is. The agent picks the license from what it was told about the customer and the use, and the person who gave the task is responsible for that statement being true. In the second run, the customer and the use change, and nothing else.

The agent buys the Online Creator offer. The Exchange confirms the purchase and returns a transaction ID, a billing ID and a signed link to the audio file. The link is valid for five minutes. The agent downloads the MP3 through that link and checks that it is exactly the file the offer describes.

Claude Desktop reply: the signed delivery URL, which expires at 13:58:16 UTC, about five minutes after the purchase, and a table with the track, the Online Creator license, the EUR 29 cost, the transaction ID and the billing ID. The agent notes it fetched a new offer before buying, because the search offers had expired.

The €29 comes from the agent’s test balance. The agent reads its balance with the Fora status tool, which asks the Exchange.

Before the purchase:

Claude Desktop reply: the FORA account on exchange.demo.fora-protocol.org is active, with a spendable balance of 1000 EUR, checked at 13:48 UTC.

After the purchase:

Claude Desktop reply: the spendable balance is 971 EUR at 13:58:48 UTC, exactly 1000 minus 29, so the Online Creator purchase was charged once.

In the Live Demo, the agent filed a usage report after it read the article. This purchase requires no usage report: the Exchange’s answer contains no reporting obligation. The license’s credit and Content ID obligations still apply, but they are between the licensee and the publisher, not part of the protocol.

With the MP3 downloaded, the agent switches to DaVinci Resolve. Through the Resolve MCP bridge, it makes four edits:

  1. Imports the track and places it on an audio track under the dialogue.
  2. Trims it to the length of the clip.
  3. Fades it out over the last 2–3 seconds.
  4. Lowers its level so the voice stays clear.
DaVinci Resolve project Personal YouTube Channel: the Tears of Steel clip on Video 1 with its dialogue on Audio 1, and ancient-rite.mp3 on a separate Music track under it, trimmed to the 40-second clip, with a fade-out at the end and a low level.

This step has nothing to do with FORA. It is here because it shows that the download worked: the file delivered through the signed link is the file that plays in the project.

The agent does not keep a receipt on its own. We asked it to, and it wrote the receipt in two places: as a note on a timeline marker in the Resolve project, and as license-receipt.json next to the project. The receipt holds everything that identifies the purchase: the transaction and billing IDs, the track, the offer, the license name with a fingerprint of its document, the price, the time, and the Exchange’s signature over the offer. The second run shows the marker in the timeline.

license-receipt.json from the first run

This is the receipt, shortened:

{
"transaction_id": "0341e443-9a12-4443-9d3a-2bfaba64631e",
"billing_id": "8f208fbbb8b3e627f1e39085ba51c286",
"track": {
"title": "Ancient Rite",
"artist": "Kevin MacLeod",
"isrc": "USUAN1900048",
"resource_uri": "https://demo.fora-protocol.org/tracks/ancient-rite.mp3",
"content_hash": "sha256:9bbb23e094e851e0…",
"downloaded_file_sha256_verified": true
},
"offer_id": "b74f68b2-ed5a-41c6-bc5f-71ff82522482",
"license": {
"name": "Harmonia illustrative music alternatives (Online Creator / Broadcast / Advertising)",
"section": "Online Creator",
"id": "harmonia-music-demo-v0.1",
"uri": "https://demo.fora-protocol.org/licensing/harmonia/music-v0.1.txt",
"uri_digest": "sha256:e27dce2aea538b1e…"
},
"price": { "amount": "29", "currency": "EUR" },
"exchange": "exchange.demo.fora-protocol.org",
"execute_request_id": "457f0ca2-b684-416b-9531-f2377cd1dd78",
"timestamp": "2026-09-28T13:53:16Z",
"timestamp_note": "Approximate purchase time: the delivery URL expired 13:58:16Z and FORA delivery URLs live about 5 minutes after purchase. fora_execute returned no explicit purchase timestamp.",
"signed_offer": {
"offer_id": "b74f68b2-ed5a-41c6-bc5f-71ff82522482",
"expires_at": "2026-09-28T13:58:01.851253005Z",
"pricing": { "model": "PRICING_MODEL_FLAT", "rate": "29", "currency": "EUR", "metering": "PRICING_METERING_NONE" },
"signature": "a54f191bb8fbef7f…",
"signature_algorithm": "EdDSA"
// … the rest of the signed offer, unchanged
}
}

The time in the receipt is the agent’s estimate, and the receipt says so. The Exchange’s own records carry the real time.

The agent wrote this file itself, so the file alone proves nothing. It is useful because each value in it can be checked against a record the agent does not control:

  • The offer signature proves which terms and price the Exchange offered. Anyone can verify it with the Exchange’s public key. The license digest ties those terms to the exact license text.
  • The agent’s signed acceptance proves that this agent accepted this exact offer. The agent signs it with its own key when it buys, and the Exchange keeps it with the transaction.
  • The Broker’s record shows, from a second party, that the Broker sent this offer to this agent in its search results.
  • The Exchange’s transaction record proves that the purchase happened and which signed link the Exchange issued for it.
  • The edge delivery log proves that the edge verified that same link and released the request for the file. It does not prove that the download finished — the audio in the timeline shows that.

None of this proves that Harmonia owns the rights, that Content ID was cleared, or that any real money was paid.

The transaction ID is the key to all of these records. With it, the demo operator collects the evidence from every party in the purchase — the Exchange, the Broker and the delivery edge — and checks that the records agree with each other. For the first purchase, all seven checks pass.

The evidence for the first purchase

This is the demo operator’s report. The tenant line and the correlator column are left out, and long values are shortened:

FORA evidence chain
transaction 0341e443-9a12-4443-9d3a-2bfaba64631e
PARTY STEP EVENT CRYPTO
Exchange 1. offer signed issued and signed offer b74f68b2-ed5a-41c6-bc5f-71ff82522482 EdDSA a54f191bb8fbef7fb2…
Broker 2. offer routed offered b74f68b2-… among 3 candidates for …/tracks/ancient-rite.mp3 unsigned audit row
Agent 3. offer accepted signed an acceptance as requester agent-gpqyy3en.mcp.demo.fora-… EdDSA 4e5d49fbdd76bb4d0d…
Exchange 4. URL minted minted a signed retrieval URL, expiring 2026-09-28T13:58:16Z sha256 25f46a406377b4ea3…
Edge 5. URL verified verified the signature on GET /tracks/ancient-rite.mp3 and authorized sha256 25f46a406377b4ea3…
delivery, served from eu-central-1
Edge 6. origin fetch released released the request to the CDN for the origin fetch (cdn-origin- —
fetch); no origin response was observed by this witness
Exchange 7. reporting — no reporting obligation was minted for this transaction
ASSERTIONS
[v] Exchange offer signature re-verifies offline
ed25519.Verify accepted 2725 canonical bytes against the stored Exchange key
[v] Agent acceptance signature re-verifies offline
ed25519.Verify accepted 342 canonical bytes against the stored agent key
[v] Acceptance binds this exact agreement (all 4 signed members)
offer_sig, requester_id, requester_domain and idempotency_key inside the signed bytes all match the row
[v] Transaction-log key derives from the signed request key
"ancient-rite-online-creator-2026-09-28-b74f68b2:b74f68b2-ed5a-41c6-bc5f-71ff82522482" = signed key + ":" + offer id
[v] Broker independently recorded offering this offer
selection sel-1b695d6c-dd3b-4e66-b905-367161934d64 recorded at 2026-09-28T13:53:01Z lists offer b74f68b2-ed5a-41c6-bc5f-71ff82522482 among its candidates
[v] Broker's agent and the signing agent are the same identity
Exchange and Broker both name "agent-gpqyy3en.mcp.demo.fora-protocol.org"
[v] Delivered URL is the URL the Exchange minted
sha256 25f46a406377b4ea35e9dfb3f5ce941effdfec32e64062e62280dbd26662b31d on both sides
7 of 7 checked assertions hold.

The evidence does not include billing: the €29 charge is shown by the balance before and after the purchase.

We start again with the same project and the same agent. This time the editor says the video is for a broadcaster’s television program:

This is a separate job. I’m an editor at Northwind Television, a broadcaster. We are preparing a 60-second documentary segment that starts with a scene featuring a conversation, for a non-advertising TV programme on our channel. The same segment will run in the programme’s online version. Northwind Television is the licensee, and I’m acting for the company.

Find calm background music, no vocals, for this segment. I will trim the track to fit the clip. Show me the license options for the best track, compare them for this use, pick the one that fits, and explain why the others do not fit.

The prompt says 60 seconds, but the project holds the same 40-second clip as in the first run, and the agent trims the track to it. The search returns a few calm tracks with no vocals. The best match for a documentary is again Ancient Rite, and the Exchange returns the same three offers at the same prices. Nothing in the catalog has changed.

Claude Desktop reply for the broadcast run: Ancient Rite by Kevin MacLeod again. A table compares the three license options, the agent picks Broadcast (EUR 450), lists the cue sheet, credit and performance royalty duties, and explains why Online Creator and Advertising do not fit.

The same license document now gives a different answer:

  • Online Creator does not fit any more. It is only for an individual’s own production. It excludes client work and television broadcast.
  • Broadcast fits. It is for a broadcaster or a commercial company making a non-advertising TV program. It covers the broadcast, repeat transmissions of the same program, and its online version, including catch-up.
  • Advertising still does not fit. The program is not an advertisement, and the document says the Advertising license does not cover “a non-advertising editorial television programme”.

The Broadcast section also says who is responsible for the customer’s statement: “The producer must state the represented customer and authority accurately; the Exchange does not verify that representation.” The agent chose Broadcast because it was told the customer is a broadcaster. FORA did not check that.

The rest of the run repeats the first one. The agent buys the Broadcast offer, and €450 comes from the test balance. It places the track on the timeline with the same four edits, and writes a second receipt. The second receipt goes to a separate project folder, so it does not overwrite the first one.

Before the purchase:

Claude Desktop reply: the spendable balance is 971 EUR at 13:58:48 UTC, after the Online Creator purchase.

After the purchase:

Claude Desktop reply: the spendable balance is 521 EUR at 14:09:16 UTC. A table lists the start of the session at 1000 EUR, the Online Creator purchase at minus 29 and the Broadcast purchase at minus 450. DaVinci Resolve timeline marker with the note Music license receipt: Ancient Rite by Kevin MacLeod, Harmonia Broadcast, EUR 450, with the transaction ID, billing ID, offer ID, purchase time, the verified file SHA-256, the scope for Northwind Television, the obligations, and a note that the demo offer grants no real rights.
license-receipt.json from the second run

This is the second receipt, shortened to the fields that differ from the first one:

{
"transaction_id": "9a5746de-08ce-425a-aee6-3c4b8ace0bfb",
"billing_id": "64da27582351aa9bd7132ebf5a97d74e",
"offer_id": "866f22b3-aa6f-48f9-b560-4677776cdfb1",
"license": {
"section": "Broadcast"
// … name, uri and uri_digest: the same license document as in the first receipt
},
"price": { "amount": "450", "currency": "EUR" },
"execute_request_id": "ee858324-8c1b-4286-8c7e-7df75e845815",
"intended_licensee": "Northwind Television (broadcaster)",
"licensee_note": "Demo test purchase. Bought on the demo account (billing ref eac7b30b-cd3c-4a14-ab6c-f8ed6eca39a6), which also bought an individual-only Online Creator license; the licensee on record is that account's owner, not necessarily Northwind.",
"timestamp": "2026-09-28T14:08:38Z",
"signed_offer": {
"offer_id": "866f22b3-aa6f-48f9-b560-4677776cdfb1",
"expires_at": "2026-09-28T14:13:10.128627608Z",
"pricing": { "model": "PRICING_MODEL_FLAT", "rate": "450", "currency": "EUR", "metering": "PRICING_METERING_NONE" },
"signature": "87f2d89f5a5b295e…",
"signature_algorithm": "EdDSA"
// … the rest of the signed offer, unchanged
}
// track: the same as in the first receipt
}

The agent added licensee_note on its own. The same demo account bought both licenses, first as an individual and then for Northwind Television. The agent points out that the licensee on record is the account’s owner, and that the Exchange did not check who the account acts for. This is the limit described in the previous step, and the receipt records it.

The Broadcast license adds an obligation that the Online Creator license does not have: a cue sheet. A cue sheet lists the music used in a program — the track, its composer and publisher, where the cue starts, how long it plays and how it is used. Broadcasters pay collecting societies for the right to broadcast music, and the cue sheet tells the society whose music was used, so it can pay the right writers and publishers.

The license is clear that the €450 does not include those royalties. The sync fee pays for putting the music into the program. Performance royalties are a separate payment, made through the broadcaster’s arrangement with the collecting societies.

This demo does not create a cue sheet. There is no real program and no broadcaster to send it to. In a real production, the cue sheet is prepared when the edit is final and delivered to the broadcaster. Like the credit in the first run, it is an obligation of the license, not of FORA. Neither purchase asks for a usage report.

Same track, same agent, same catalog, same three offers. The only thing that changed between the runs is what the agent was told about the customer and the intended use.

Personal YouTube videoBroadcast program
License boughtOnline CreatorBroadcast
Price€29€450
Key termsIndividual’s own production; one YouTube video, streamed onlineBroadcaster or commercial company; one TV program, repeats and online version
ObligationsRecord the video URL for Content IDCue sheet; performance royalties not included
Rejected
  • Broadcast: the customer is an individual
  • Advertising: not an ad
  • Online Creator: individuals only, no broadcast
  • Advertising: not an ad

All three licenses share the same base: one production, worldwide and perpetual; the recording and the composition in one grant; a credit to the track’s real creator; no AI training; a one-time flat fee with no usage reports.

Nothing in this demo is specific to Harmonia. Each line of its feed describes the audio file, the search fields, the license document, and the licenses the publisher sells with their prices. This is the line for one of the tracks, shortened:

{
"domain": "demo.fora-protocol.org",
"path": "/tracks/ancient-rite.mp3",
"title": "Ancient Rite — Kevin MacLeod (illustrative Harmonia offers)",
"content_hash": "sha256:9bbb23e0…",
"ext": {
"music.genre": "soundtrack", "music.mood": ["calm", "mysterious", "somber"], "music.bpm": 70,
"music.energy": "low", "music.vocals": false, "music.instruments": ["choir", "percussion", "bass"],
"music.duration_seconds": 60.03, "music.suitable_for": ["documentary", "meditation"]
},
"license": {
"name": "Harmonia illustrative music alternatives (Online Creator / Broadcast / Advertising)",
"uri": "https://demo.fora-protocol.org/licensing/harmonia/music-v0.1.txt",
"uri_digest": "sha256:e27dce2a…"
},
"terms": [
{ "user_types": ["individual"], "pricing": { "model": "flat", "rate": "29", "currency": "EUR", "metering": "none" } /* … */ },
{ "user_types": ["broadcaster", "commercial_entity"], "pricing": { "model": "flat", "rate": "450", "currency": "EUR", "metering": "none" } /* … */ },
{ "user_types": ["commercial_entity"], "pricing": { "model": "flat", "rate": "1200", "currency": "EUR", "metering": "none" } /* … */ }
]
}

The publisher, or a catalog contributor it authorizes, pushes the feed to an Exchange. The Exchange turns each term into a signed offer, and the Broker builds its search index from the music.* fields in ext of the same feed. These fields follow the fora-music-v1 profile, which defines each field and the search filters an agent can send.

The Exchange can be run for you by an operator, or you can run your own. See Deployment Models for the options, Publisher Onboarding for what a publisher sets up to push its own feed, and JSONL Ingestion for the feed format.

The video and the music are real works under Creative Commons licenses. The Online Creator and Broadcast licenses bought in this demo are fictional Harmonia examples, paid with test money. They do not license Tears of Steel or the music. The Blender Foundation does not endorse FORA.