# get_audio_features

Get audio features for ONE track — BPM, musical key (name + Camelot + Open Key), energy, danceability, valence, acousticness, instrumentalness, liveness, speechiness, loudness, mood, mood_vector, genre, time signature, duration and more. This is the drop-in replacement for Spotify's deprecated /audio-features endpoint. Provide AT LEAST ONE identifier — if you know several, send them all rather than choosing; they resolve by precedence (track > isrc > mbid > spotify_id) and the rest are ignored: - track (optionally with artist) — e.g. track="Blinding Lights", artist="The Weeknd". - isrc — e.g. "USUM71900001". - mbid — a MusicBrainz recording UUID. - spotify_id — a Spotify track ID, URI, or URL (resolves only the <1% of the catalog already mapped to a Spotify ID; prefer track/isrc for full coverage). Returns a JSON object of features. Some feature fields may be null for tracks resolved via the fallback catalogs (only audio-derived values are present for fully analysed tracks). If a track name is not yet in the catalog, the API holds the request during the on-demand ingest and usually returns the fully analysed track inline in this same call; only if the ingest runs long does it fall back to a queued response you can re-poll shortly (~15s). If the track turns out not to be on any streaming source we can analyse, you get a definitive not-found instead — that verdict is terminal for ~7 days, so don't retry it. If you only have a fuzzy or partial name, call search_catalog first to find the exact track.

Agent View of the PolicyLayer registry record for `get_audio_features`. HTML page: https://policylayer.com/tools/com-freqblog-music-metadata/get-audio-features

## Facts

- Tool: `get_audio_features`
- Server: FreqBlog Music Metadata (`https://mcp.freqblog.com/mcp`) — https://policylayer.com/tools/com-freqblog-music-metadata.md
- Homepage: https://github.com/https://mcp.freqblog.com/mcp
- Risk category: Read (Low risk)
- Registry record: grade D, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 5
- Recommended policy verdict: Allowed

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `isrc` | object | no | ISRC, e.g. 'USUM71900001'. |
| `mbid` | object | no | MusicBrainz recording ID (UUID). The precise key when there is no ISRC, e.g. pre-1986 recordings. |
| `track` | object | no | Track title. Use with `artist` when known. Supply AT LEAST ONE of track/isrc/mbid/spotify_id. Sending several is fine — they resolve by precedence (track > isrc |
| `artist` | object | no | Artist name. Only used with `track`; required when the title is <=2 characters. |
| `spotify_id` | object | no | Spotify track ID, 'spotify:track:...' URI, or open.spotify.com URL. Resolves ONLY tracks already mapped to a Spotify ID (<1% of the catalog) — prefer track (+ar |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_audio_features",
    "arguments": {}
  }
}
```

## Why get_audio_features is rated Low

Even though get_audio_features only reads data, uncontrolled read access leaks sensitive information and racks up API costs: an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.

## Use case

AI agents call get_audio_features to retrieve information from FreqBlog Music Metadata without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches FreqBlog Music Metadata:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "get_audio_features": {}
  }
}
```

## Other tools on FreqBlog Music Metadata (11)

- `build_setlist` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/build-setlist.md
- `find_compatible_keys` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/find-compatible-keys.md
- `find_tracks_by_bpm` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/find-tracks-by-bpm.md
- `find_tracks_by_key` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/find-tracks-by-key.md
- `get_audio_features_batch` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/get-audio-features-batch.md
- `get_recommendations` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/get-recommendations.md
- `get_related_artists` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/get-related-artists.md
- `score_transition` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/score-transition.md
- `search_catalog` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/search-catalog.md
- `suggest_next_track` — Read — https://policylayer.com/tools/com-freqblog-music-metadata/suggest-next-track.md
- `tag_track` — Write — https://policylayer.com/tools/com-freqblog-music-metadata/tag-track.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-freqblog-music-metadata · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-freqblog-music-metadata
