Skip to main content
Glama

Analyze speech (transcript + tone)

oruk_analyze_speech
Read-only

Transcribe English audio AND score how it was said in one call: transcript, tagged transcript, selected scores from 15 emotion and 16 speaking-style labels, and time-local segments. Use this when the user cares about both the words and the delivery — meetings, support calls, interviews, voice notes. Accepts wav/flac/mp3/m4a/ogg/webm. Up to 30 MB via audio_url or 8 MiB decoded via audio_base64; up to 60 minutes of English speech. Returns compact summaries by default. For words only use oruk_transcribe_audio; for tone only use oruk_analyze_tone.

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

A5/5.0
Behavior5/5

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

Annotations already include readOnlyHint: true and destructiveHint: false, and the description adds substantial behavioral detail: model switching (diarize forces oruk-resonance), what compact vs. full returns, the limitation that unreturned label scores are not exposed, and a security/processing link. No contradiction with annotations.

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 dense but every sentence earns its place: purpose, outputs, use cases, format/size limits, model/detail explanation, and sibling differentiation. It is front-loaded with the core purpose and uses a clear, scannable structure. No fluff or repetition.

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?

Despite having no output schema, the description explains output behavior (compact vs. full, diarization results, label-score limitations) and points to a processing-details URL for deeper security info. All relevant usage context—formats, size limits, language, model selection, and when to use alternatives—is covered, making the tool self-sufficient for an agent.

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

Parameters5/5

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

The schema covers 100% of parameters with descriptions, and the tool description adds meaningful context beyond them—e.g., api_key usage is clarified as only for temporary keys from oruk_create_trial_key, diarize is explained as locating turns and scoring each, and audio_base64/audio_url size limits are restated with practical guidance. This enhances the schema without redundancy.

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 clearly states the tool's purpose: transcribe English audio and score how it was said, explicitly listing outputs (transcript, tagged transcript, scores, segments). It differentiates from siblings by naming oruk_transcribe_audio for words-only and oruk_analyze_tone for tone-only, so an agent knows exactly when to pick this tool.

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 says 'Use this when the user cares about both the words and the delivery' and lists example scenarios (meetings, support calls, interviews, voice notes). It also provides explicit exclusion guidance: 'For words only use oruk_transcribe_audio; for tone only use oruk_analyze_tone,' giving clear when-to and when-not-to usage.

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