@audiolabtools/mcp-server 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,8 +35,8 @@ Every tool takes **one audio source**: a public `url` **or** a local `path`:
35
35
 
36
36
  - `{ url: "https://…" }`: a public https URL the API fetches server-side.
37
37
  - `{ path: "./mix.wav" }`: a file on the machine running this server. Files up to **4 MB**
38
- are sent inline; larger files (up to **50 MB**) upload over a one-shot signed URL, are
39
- analysed, and are then deleted. *(Local `path` works only in this stdio server, not the
38
+ are sent inline; larger files (up to **150 MB**) upload over a signed URL, are analysed, and
39
+ are swept from storage within the hour. *(Local `path` works only in this stdio server, not the
40
40
  remote `/mcp` endpoint.)*
41
41
 
42
42
  | Tool | Returns |
@@ -45,7 +45,7 @@ Every tool takes **one audio source**: a public `url` **or** a local `path`:
45
45
  | `check_target` | Pass/fail vs a delivery target (`spotify` / `apple-music` / `youtube` / `tidal` / `amazon-music` / `podcast` / `ebu-broadcast` / `atsc-broadcast`, or `target:"custom"` + `lufs`+`tp`), with per-metric deltas and an ffmpeg loudnorm fix command |
46
46
  | `analyze_timeseries` | Short-term LUFS over time + downsampled waveform peaks (`waveformPoints?`) |
47
47
  | `get_spectrum` | FFT magnitude data + 7-band energies |
48
- | `analyze_voice` | Voice QA: speech/silence ratio, speaking rate, SNR, noise floor, room echo, sibilance & clipping risk |
48
+ | `analyze_voice` | Voice QA: speech/silence ratio, speaking rate, SNR, noise floor, pause energy, sibilance & clipping risk |
49
49
  | `get_speech_segments` | Voiced regions with start/end + per-segment RMS (auto-trim, chapters) |
50
50
  | `index_signal` | Content-type guess, tags, clipping/silence regions, brightness & dynamics buckets |
51
51
  | `analyze_profile` | One named question, `voice`, `master`, `provenance`, `dataset`, `environment`, `broadcast` or `loop`, answered with only the lenses it needs. These seven need a paid plan; the free tier gets the `basic` profile, keyed by stable lens id. Add `series:true` for the curves, per-block lanes and per-phrase values. Carries a `note` when the profile’s voice lenses land on non-speech material. Full catalogue: <https://audiolab.tools/lenses> |
@@ -79,7 +79,7 @@ machine, don't use a hosted analyser.
79
79
 
80
80
  ## Limits
81
81
 
82
- - Local files: up to **50 MB** (host bigger ones at a public URL).
82
+ - Local files: up to **150 MB** (host bigger ones at a public URL).
83
83
  - Duration: loudness routes (`analyze_loudness`, `check_target`, `analyze_timeseries`, `get_spectrum`) handle **long files** (podcast episodes, full sets, up to ~3 h) via server-side streaming; voice/signal routes are limited to ~7 minutes.
84
84
  - One file per call (agents loop for many); one-shot (no streaming/realtime).
85
85
  - Rate and monthly limits are enforced by the API, per key.
package/hosted-server.mjs CHANGED
@@ -44,14 +44,14 @@ const PKG_VERSION = (() => {
44
44
  })();
45
45
 
46
46
  // Vercel serverless caps a raw request body at ~4.5 MB, so small files POST directly and
47
- // larger ones go through the signed-URL storage flow. The bucket policy caps at 50 MB.
47
+ // larger ones go through the signed-URL storage flow. The bucket policy caps at 150 MB.
48
48
  const RAW_MAX = 4 * 1024 * 1024;
49
49
  // Dit bestand is het ENIGE dat npm meestuurt, dus het mag niets buiten zijn eigen map
50
50
  // importeren. `MAX_STORAGE_BYTES` uit ../lib/limits.mjs stond hier even, en daarmee
51
51
  // crashte het gepubliceerde pakket bij de eerste import: die map wordt niet meegeleverd.
52
52
  // De waarde staat daarom weer hier, en de zelfcheck hieronder houdt hem tegen limits.mjs aan
53
53
  // zolang die bereikbaar is, dus in de monorepo faalt drift alsnog.
54
- const STORAGE_MAX = 50 * 1024 * 1024;
54
+ const STORAGE_MAX = 150 * 1024 * 1024;
55
55
 
56
56
  // Read env at CALL time (not module load) so the key can be injected by the MCP host
57
57
  // and so the missing-key guard is testable.
@@ -209,7 +209,7 @@ const wrap = (fn) => async (input) => {
209
209
  const sourceShape = (local) => local
210
210
  ? {
211
211
  url: z.string().url().optional().describe('Public https URL to the audio file. Provide exactly one of url or path.'),
212
- path: z.string().optional().describe('Path to a LOCAL audio file on this machine, analysed without hosting it publicly (files up to 4 MB are sent inline; larger ones up to 50 MB upload over a one-shot signed URL). Provide exactly one of url or path.'),
212
+ path: z.string().optional().describe('Path to a LOCAL audio file on this machine, analysed without hosting it publicly (files up to 4 MB are sent inline; larger ones up to 150 MB upload over a signed URL). Provide exactly one of url or path.'),
213
213
  }
214
214
  : { url: z.string().url().describe('Public https URL to the audio file.') };
215
215
 
@@ -246,7 +246,7 @@ export function buildServer({ apiKey, local = false } = {}) {
246
246
 
247
247
  tool('analyze_voice', {
248
248
  title: 'Analyze voice quality (VoiceLab)',
249
- description: 'Speech-quality QA for a voice recording: speech/silence ratio, speaking-rate label, signal-to-noise, noise floor, room-echo label, sibilance risk, clipping severity. Gates a voice take.' + srcDoc,
249
+ description: 'Speech-quality QA for a voice recording: speech/silence ratio, speaking-rate label, signal-to-noise, noise floor, pause energy, sibilance risk, clipping severity. Gates a voice take.' + srcDoc,
250
250
  inputSchema: src,
251
251
  }, wrap((i) => analyzeSource('voicelab/qa', i, {}, apiKey, local)));
252
252
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@audiolabtools/mcp-server",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "mcpName": "tools.audiolab/audiolab",
5
5
  "description": "MCP server for AudioLab, loudness (EBU R128 / BS.1770-4), true-peak, voice-quality, and signal analysis for AI agents (Claude, Cursor, any MCP client), via the AudioLab hosted API. No local audio engine required.",
6
6
  "type": "module",