Skip to main content
Glama

Analyze vocal tone and emotion

oruk_analyze_tone
Read-only

Score how speech sounds without transcribing it: selected emotion (happy, frustrated, worried, …) and speaking-style (sarcastic, confident, hesitant, warm, …) scores per acoustic segment. Runs the Resonance encoder and affect head only — the transcription decoder is never invoked, so nothing is transcribed and it consumes the same subscription audio minutes as unified analysis. Use this when the user asks about mood, delivery, sentiment, sarcasm, or emotional dynamics in audio. Up to 30 MB via audio_url or 8 MiB decoded via audio_base64; up to 60 minutes of English speech. Labels use model-specific thresholds; the highest-scoring emotion is returned if none passes, and styles can be empty. Outputs describe delivery, not probabilities of inner state. Need the words too? Use oruk_analyze_speech.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNooruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default.
detailNocompact (default) returns top label scores and condensed segments; full preserves all returned labels, segments, and word-level timings, subject to response-size limits. It does not expose unreturned label scores.
api_keyNoOnly for temporary keys from oruk_create_trial_key. Permanent keys belong in your MCP client config as an "Authorization: Bearer <key>" header, never in tool arguments.
diarizeNoLabel speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing.
filenameNoOriginal filename including extension (e.g. call.wav). Helps decoding when audio_base64 is used.
audio_urlNoPublicly fetchable audio file URL (wav, flac, mp3, m4a, ogg, webm; up to 30 MB / 60 minutes of English speech).
audio_base64NoBase64-encoded audio bytes for local files (up to 8 MiB decoded). Prefer audio_url for anything larger.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / audio_base64 / description
      Previous value: -"Base64-encoded audio bytes for local files (up to 8 MB decoded). Prefer audio_url for anything larger."New value: +"Base64-encoded audio bytes for local files (up to 8 MiB decoded). Prefer audio_url for anything larger."
    • changedInput schema / properties / detail / description
      Previous value: -"compact (default) returns top label scores and condensed segments; full adds every label score and word-level timings."New value: +"compact (default) returns top label scores and condensed segments; full preserves all returned labels, segments, and word-level timings, subject to response-size limits. It does not expose unreturned label scores."
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing."
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."
  2. Changed4 schema fields changed
    • changedInput schema / properties / audio_base64 / description
      Previous value: -"Base64-encoded audio bytes for local files (up to 8 MiB decoded). Prefer audio_url for anything larger."New value: +"Base64-encoded audio bytes for local files (up to 8 MB decoded). Prefer audio_url for anything larger."
    • changedInput schema / properties / detail / description
      Previous value: -"compact (default) returns top label scores and condensed segments; full preserves all returned labels, segments, and word-level timings, subject to response-size limits. It does not expose unreturned label scores."New value: +"compact (default) returns top label scores and condensed segments; full adds every label score and word-level timings."
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."
  3. Changed2 schema fields changed
    • changedInput schema / properties / audio_base64 / description
      Previous value: -"Base64-encoded audio bytes for local files (up to 8 MB decoded). Prefer audio_url for anything larger."New value: +"Base64-encoded audio bytes for local files (up to 8 MiB decoded). Prefer audio_url for anything larger."
    • changedInput schema / properties / detail / description
      Previous value: -"compact (default) returns top label scores and condensed segments; full adds every label score and word-level timings."New value: +"compact (default) returns top label scores and condensed segments; full preserves all returned labels, segments, and word-level timings, subject to response-size limits. It does not expose unreturned label scores."
  4. Changed2 schema fields changed
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing."
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."
  5. Changed2 schema fields changed
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."
  6. Changed1 schema field changed
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speaker diarization locates turns, then Resonance scores each turn with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in subscription plan minutes. Processing details: https://oruk.ai/security#processing."
  7. Changed1 schema field changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."
  8. Changed2 schema fields changed
    • changedInput schema / properties / diarize / description
      Previous value: -"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Adds $0.0040 per audio minute."New value: +"Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Included in plan minutes; legacy metered accounts retain their agreed rates."
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."
  9. Changed1 schema field changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (parallel transcript and native 15-label emotion, with the shared 16-label style model). Resonance is the default."
  10. Changed3 schema fields changed
    • addedInput schema / properties / diarize
      Added value: +{
      +  "description": "Label speakers (oruk-resonance only; the model is switched to oruk-resonance automatically). Speakers are located with pyannoteAI diarization, then Resonance scores each speaker turn, so every segment carries a speaker field with its own text, emotions, and styles. Use for calls, meetings, and interviews. Adds $0.0040 per audio minute.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (default for transcription/analysis, highest accuracy) or oruk-spectra-1 (default for tone, most efficient)."New value: +"oruk-resonance (full local pipeline: transcription, emotion, style, affect, analysis) or oruk-fourier (transcript plus native 15-label emotion)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "oruk-spectra-1",
      -  "oruk-resonance"
      -]New value: +[
      +  "oruk-resonance",
      +  "oruk-fourier"
      +]
  11. Changed2 schema fields changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-fourier (transcript plus native 15-label emotion), oruk-resonance (full local pipeline), or oruk-spectra-1 (efficient tone analysis)."New value: +"oruk-resonance (default for transcription/analysis, highest accuracy) or oruk-spectra-1 (default for tone, most efficient)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "oruk-spectra-1",
      -  "oruk-resonance",
      -  "oruk-fourier"
      -]New value: +[
      +  "oruk-spectra-1",
      +  "oruk-resonance"
      +]
  12. Changed2 schema fields changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (default for transcription/analysis, highest accuracy) or oruk-spectra-1 (default for tone, most efficient)."New value: +"oruk-fourier (transcript plus native 15-label emotion), oruk-resonance (full local pipeline), or oruk-spectra-1 (efficient tone analysis)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "oruk-spectra-1",
      -  "oruk-resonance"
      -]New value: +[
      +  "oruk-spectra-1",
      +  "oruk-resonance",
      +  "oruk-fourier"
      +]
  13. Changed2 schema fields changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-fourier (transcript plus native 15-label emotion), oruk-resonance (full local pipeline), or oruk-spectra-1 (efficient tone analysis)."New value: +"oruk-resonance (default for transcription/analysis, highest accuracy) or oruk-spectra-1 (default for tone, most efficient)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "oruk-spectra-1",
      -  "oruk-resonance",
      -  "oruk-fourier"
      -]New value: +[
      +  "oruk-spectra-1",
      +  "oruk-resonance"
      +]
  14. Changed2 schema fields changed
    • changedInput schema / properties / model / description
      Previous value: -"oruk-resonance (default for transcription/analysis, highest accuracy) or oruk-spectra-1 (default for tone, most efficient)."New value: +"oruk-fourier (transcript plus native 15-label emotion), oruk-resonance (full local pipeline), or oruk-spectra-1 (efficient tone analysis)."
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "oruk-spectra-1",
      -  "oruk-resonance"
      -]New value: +[
      +  "oruk-spectra-1",
      +  "oruk-resonance",
      +  "oruk-fourier"
      +]
  15. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, and the description builds on this with valuable behavioral details: the transcription decoder is never invoked, nothing is transcribed, it consumes the same subscription minutes as unified analysis, labels use model-specific thresholds, styles can be empty, and outputs describe delivery rather than inner-state probabilities. This goes well beyond the structured fields and contains no contradiction.

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?

The description is front-loaded with the core purpose, then delivers behavioral guarantees, usage triggers, limits, output interpretation, and a sibling pointer in sequence. Every sentence earns its place; there is no filler or redundant restatement of the title.

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?

Even with no output schema, the description covers the essential context: input size/duration limits, language constraint, outcome shape (per-segment emotion/style scores), edge cases (threshold fallback, empty styles), and how to interpret outputs. It also routes to the correct sibling when transcription is also needed, making the tool fully understandable for correct invocation.

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 description coverage is 100%, so the input schema already documents every parameter. The description adds some useful constraints (up to 30 MB via audio_url, 8 MiB via audio_base64, 60 minutes of English speech), but these largely restate schema descriptions rather than introduce new parameter meaning. The baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Score how speech sounds without transcribing it', naming emotion and speaking-style scores per acoustic segment. It clearly marks what the tool is not (transcription) and names the sibling oruk_analyze_speech, so an agent can distinguish it 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 explicitly states when to use the tool: 'Use this when the user asks about mood, delivery, sentiment, sarcasm, or emotional dynamics in audio.' It also gives the complementary alternative with the condition: 'Need the words too? Use oruk_analyze_speech.' No inference is required.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources