Vued Public API, SDK, CLI, And MCP
This is the public-library contract for Vued API consumers.Documentation Index
Fetch the local documentation index atdocs/llms.txt.
Use this file to discover all available Vued API pages before exploring further.
For Coding Agents
If you are a coding agent reading this page to help a developer integrate with Vued, readdocs/vued-api-guide-for-coding-agents.md first. It is the copyable, self-contained reference optimized for implementation.
If you need decrypted meetings, transcripts, or file names, use the local desktop API, Python SDK local methods, or local MCP. Do not build against cloud endpoints for plaintext transcript content.
Just want working code? Use docs/vued-api-setup-prompt.md as the ready-to-paste coding-agent prompt, then customize from there.
- Cloud API: encrypted authority for auth, ACL, metadata, mutations, vectors, signed audio, API keys, and webhooks.
- Local API: localhost plaintext boundary exposed by the unlocked desktop app.
- Python SDK: synchronous wrapper over cloud + local APIs.
- MCP: local-first tool bridge over the desktop local API.
Install
Auth
Cloud requests useAuthorization: Bearer <token>.
Accepted token types:
- Supabase JWT: full user session, scopes
*. - Public API key:
vued_live_..., scoped byorg:<org_uuid>plus explicit scopes.
VUED_LOCAL_API_URL+VUED_LOCAL_API_TOKEN.VUED_LOCAL_API_DISCOVERY.- OS app-support
local-api.jsonunderVued Dev,Vued,vued-web, or legacy devElectron.
Common Conventions
Timestamps are ISO UTC strings in public/local responses, for example2026-06-22T22:00:00.000Z. SDK inputs accept ISO strings, epoch seconds, or epoch milliseconds where timestamp filters are supported.
Pagination responses use:
| Field | Type | Meaning |
|---|---|---|
items | array | Current page. |
next_cursor | string | null | Cursor for the next page; null means done. |
type is:
| Value | Meaning |
|---|---|
manual | User-started meeting record. |
automatic | Surfaced ambient candidate. |
| Field | Type | Meaning |
|---|---|---|
diarization_id | string | null | Meeting-local speaker cluster, such as speaker_1. |
profile_id | string | null | Persistent speaker profile UUID. |
name | string | Display label. |
type | diarized | anonymous | named | Speaker identity resolution level. |
is_org_user | boolean | absent | True when the profile is linked to an org user. |
encrypted: true when encrypted fields remain. Unless X-Vued-Allow-Encrypted: true is sent, encrypted JSON responses fail with 424 EncryptedContent. Use the local API/SDK for decrypted names and transcripts.
Cloud Public API
Base URL:https://vued-office-api-dev.onrender.com/v1
Route Map
| Method | Route | SDK | Required scope | Purpose |
|---|---|---|---|---|
GET | /orgs | client.list_orgs() | token auth | List accessible orgs. |
GET | /orgs/{org_id}/semantic_search | client.semantic_search() fallback | transcripts:read + meetings:read or records:read | Return vector chunk refs. |
GET | /orgs/{org_id}/meetings/{meeting_id}/audio | client.get_meeting_audio() | meetings:read or records:read | Signed meeting audio URL. |
GET | /orgs/{org_id}/transcripts/{transcript_id}/audio | client.get_transcript_audio() | transcripts:read | Signed transcript slice URL. |
GET | /orgs/{org_id}/files | client.list_files() through local for plaintext | files:read or records:read | List drive nodes. |
GET | /orgs/{org_id}/files/{file_id} | client.get_file() through local for plaintext | files:read or records:read | Get one drive node. |
POST | /orgs/{org_id}/files | client.create_file() | files:write | Create drive node. |
PATCH | /orgs/{org_id}/files/{file_id} | client.update_file() | files:write | Update drive node. |
GET | /orgs/{org_id}/files/{file_id}/grants | client.list_file_grants() | files:read or records:read | List direct user grants. |
POST | /orgs/{org_id}/files/{file_id}/grants | client.grant_file() | files:write | Grant direct user access. |
DELETE | /orgs/{org_id}/files/{file_id}/grants/{user_id} | client.revoke_file_grant() | files:write | Revoke direct user access. |
GET | /orgs/{org_id}/files/{file_id}/download | client.download_file() | files:read or records:read | Download node export ZIP. |
GET | /orgs/{org_id}/speakers | client.list_speakers() | speakers:read or records:read | List named and anonymous speaker profiles. |
GET | /orgs/{org_id}/speakers/{speaker_id} | client.get_speaker() | speakers:read or records:read | Get one speaker profile. |
GET | /orgs/{org_id}/rooms | client.list_rooms() | rooms:read or records:read | List rooms. |
GET | /orgs/{org_id}/rooms/{room_id} | client.get_room() | rooms:read or records:read | Get one room. |
POST | /orgs/{org_id}/rooms | client.create_room() | rooms:write | Create room. |
PATCH | /orgs/{org_id}/rooms/{room_id} | client.update_room() | rooms:write | Update room and optionally participants. |
GET | /orgs/{org_id}/microphones | client.list_microphones() | rooms:read or records:read | List microphone IDs from rooms. |
GET | /orgs/{org_id}/microphones/{microphone_id} | client.get_microphone() | rooms:read or records:read | Get microphone-room mapping. |
GET | /orgs/{org_id}/users | client.list_users() | users:read or records:read | List org users. |
GET | /orgs/{org_id}/users/{user_id} | client.get_user() | users:read or records:read | Get one org user. |
GET | /orgs/{org_id}/api-keys | client.list_api_keys() | api_keys:read | List public API keys. |
POST | /orgs/{org_id}/api-keys | client.create_api_key() | api_keys:write | Create public API key. |
DELETE | /orgs/{org_id}/api-keys/{key_id} | client.revoke_api_key() | api_keys:write | Revoke public API key. |
GET | /orgs/{org_id}/webhooks | client.list_webhooks() | webhooks:read + admin | List webhooks. |
POST | /orgs/{org_id}/webhooks | client.create_webhook() | webhooks:write + admin | Create webhook; returns secret once. |
PATCH | /orgs/{org_id}/webhooks/{webhook_id} | client.update_webhook() | webhooks:write + admin | Update webhook. |
DELETE | /orgs/{org_id}/webhooks/{webhook_id} | client.delete_webhook() | webhooks:write + admin | Delete webhook. |
Cloud Query And Body Parameters
GET /orgs
| Param | Type | Meaning |
|---|---|---|
limit | integer | Page size, 1-100. Default 50. |
cursor | string | Page cursor. |
GET /orgs/{org_id}/semantic_search
| Param | Type | Meaning |
|---|---|---|
q | string | Natural-language search query. |
type | manual | automatic | null | Meeting source filter. |
limit | integer | Result count, 1-100. Default 5. |
GET /orgs/{org_id}/meetings/{meeting_id}/audio
| Param | Type | Meaning |
|---|---|---|
redirect | boolean | When true, return a 302 to the signed URL. |
GET /orgs/{org_id}/transcripts/{transcript_id}/audio
| Param | Type | Meaning |
|---|---|---|
redirect | boolean | When true, return a 302 to the signed URL. |
GET /orgs/{org_id}/files
| Param | Type | Meaning |
|---|---|---|
type | file | folder | Node type filter. |
q | string | Case-insensitive name substring. |
parent_id | UUID | Parent folder filter. |
root_only | boolean | Only nodes with no parent. |
visibility | org | restricted | ACL mode filter. |
record_id | UUID | Linked record filter. |
created_after | timestamp | Inclusive lower bound. |
created_before | timestamp | Inclusive upper bound. |
updated_after | timestamp | Inclusive lower bound. |
updated_before | timestamp | Inclusive upper bound. |
sort | string | name_asc, name_desc, updated_at_asc, updated_at_desc, created_at_asc, created_at_desc, date_asc, date_desc. |
limit | integer | Page size, 1-100. Default 50. |
cursor | string | Page cursor. |
POST /orgs/{org_id}/files
| Field | Type | Meaning |
|---|---|---|
type | string | Node type. Default folder. |
name | string | Display name, max 240 chars. Default Untitled. |
parent_id | UUID | null | Parent folder. Null creates at root. |
visibility | string | ACL mode. Default org. |
PATCH /orgs/{org_id}/files/{file_id}
| Field | Type | Meaning |
|---|---|---|
name | string | null | New name, max 240 chars. |
parent_id | UUID | null | New parent. Null moves to root. Omit to keep parent. |
visibility | string | null | New ACL mode. |
POST /orgs/{org_id}/files/{file_id}/grants
| Field | Type | Meaning |
|---|---|---|
user_id | UUID | User receiving direct access. |
GET /orgs/{org_id}/speakers, GET /orgs/{org_id}/rooms, GET /orgs/{org_id}/users
| Param | Type | Meaning |
|---|---|---|
q | string | Case-insensitive display-name/email filter where supported. |
limit | integer | Page size, 1-100. Default 50. |
cursor | string | Page cursor. |
POST /orgs/{org_id}/rooms
| Field | Type | Meaning |
|---|---|---|
display_name | string | Room display name, max 160 chars. |
microphone_id | string | Device/microphone ID, max 240 chars. |
PATCH /orgs/{org_id}/rooms/{room_id}
| Field | Type | Meaning |
|---|---|---|
display_name | string | null | New room name. |
microphone_id | string | null | New microphone/device ID. |
is_primary | boolean | null | Whether this room is the primary ambient runner. |
participant_user_ids | UUID[] | null | Replace room participant users. |
POST /orgs/{org_id}/api-keys
| Field | Type | Meaning |
|---|---|---|
name | string | Key label, max 120 chars. Default Public API key. |
expires_at | timestamp | null | Expiration time. Null means no expiration. |
scopes | string[] | Requested scopes. Empty uses read-only defaults. |
POST /orgs/{org_id}/webhooks
| Field | Type | Meaning |
|---|---|---|
name | string | Webhook label, max 120 chars. |
url | string | HTTPS delivery URL, max 1000 chars. |
events | string[] | Event names. Required non-empty. |
payload_fields | string[] | object | null | Flat field list or a default / event / * field mapping. Empty means full payload. |
disabled | boolean | Create disabled when true. Default false. |
PATCH /orgs/{org_id}/webhooks/{webhook_id}
| Field | Type | Meaning |
|---|---|---|
name | string | null | New label. |
url | string | null | New delivery URL. |
events | string[] | null | Replace subscribed events. |
payload_fields | string[] | object | null | Replace field selection. |
disabled | boolean | null | Enable/disable delivery. |
Cloud Response Schemas
Org
| Field | Type | Meaning |
|---|---|---|
id | string | Org UUID. |
name | string | Org display name. |
role | owner | admin | member | Caller role. |
settings | object | Org settings. |
SemanticSearchResult
| Field | Type | Meaning |
|---|---|---|
object | semantic_search_result | Object type. |
score | number | Vector score. |
meeting | object | {id, object, type} meeting ref. |
chunk | object | Chunk ref. |
TranscriptChunk
| Field | Type | Meaning |
|---|---|---|
object | transcript_chunk | Object type. |
index | integer | null | Chunk index. |
event_ids | string[] | Transcript event IDs in the chunk. |
ts_start | number | null | Start offset/time from source event data. |
ts_end | number | null | End offset/time from source event data. |
AudioUrl
| Field | Type | Meaning |
|---|---|---|
available | boolean | True when audio can be downloaded. |
url | string | Signed URL. Present on success. |
expires_at | number | URL expiry epoch seconds. |
retention_days | integer | Audio retention window. |
filename | string | Suggested download filename, usually <slice_id>.m4a. |
mime | string | Audio MIME type, usually audio/mp4 for M4A/AAC. |
offset_secs | object | absent | {start, end} inside slice audio. |
suggested_clip_secs | object | absent | {start, end, margin_secs} clip around the event. |
partial | boolean | absent | True when selected slice does not cover the full requested range. |
File
| Field | Type | Meaning |
|---|---|---|
id | string | Node UUID. |
object | file | Object type. |
encrypted | boolean | True when encrypted fields remain. |
type | file | folder | Node kind. |
name | string | Plaintext name when available. |
name_enc | object | null | {ciphertext, aad} encrypted name. |
parent_id | string | null | Parent folder UUID. |
visibility | string | ACL mode. |
record_type | meeting | null | Linked public record kind. |
record_id | string | null | Linked record UUID. |
share_id | string | null | Public share identifier. |
created_at | string | Created timestamp. |
updated_at | string | Updated timestamp. |
Speaker
| Field | Type | Meaning |
|---|---|---|
id | string | Speaker profile UUID. |
object | speaker | Object type. |
type | anonymous | named | Profile kind. |
display_name | string | Display name. |
sample_count | integer | null | Enrollment sample count. |
status | string | null | Profile status. |
is_org_user | boolean | null | True when linked to an org user. |
created_at | string | null | Created timestamp. |
updated_at | string | null | Updated timestamp. |
Room
| Field | Type | Meaning |
|---|---|---|
id | string | Room UUID. |
object | room | Object type. |
display_name | string | Room label. |
microphone_id | string | Device/microphone ID. |
is_primary | boolean | Primary ambient runner flag. |
participants | array | Room participant users. |
created_at | string | null | Created timestamp. |
updated_at | string | null | Updated timestamp. |
Microphone
| Field | Type | Meaning |
|---|---|---|
id | string | Microphone/device ID. |
object | microphone | Object type. |
room_id | string | Owning room UUID. |
OrgUser
| Field | Type | Meaning |
|---|---|---|
id | string | User UUID. |
object | org_user | Object type. |
email | string | Email. |
display_name | string | null | Display name. |
role | owner | admin | member | Org role. |
created_at | string | null | Created timestamp. |
updated_at | string | null | Updated timestamp. |
PublicApiKey
| Field | Type | Meaning |
|---|---|---|
id | string | Key UUID. |
name | string | Key label. |
keyPrefix | string | Visible secret prefix. |
scopes | string[] | Granted scopes. |
createdAt | number | Created epoch seconds. |
lastUsedAt | number | null | Last use epoch seconds. |
expiresAt | number | null | Expiry epoch seconds. |
revokedAt | number | null | Revocation epoch seconds. |
CreatedPublicApiKey
| Field | Type | Meaning |
|---|---|---|
token | PublicApiKey | Stored key metadata. |
secret | string | Full vued_live_... secret. Shown once. |
Webhook
| Field | Type | Meaning |
|---|---|---|
id | number | Webhook ID. |
object | webhook | Object type. |
name | string | Label. |
org_id | string | Org UUID. |
created_by | string | Creator user UUID. |
url | string | Delivery URL. |
events | string[] | Subscribed events. |
payload_fields | object | Field selection by event/default. |
created_at | string | Created timestamp. |
disabled | boolean | Delivery disabled flag. |
fail_count | integer | Consecutive failure count. |
last_delivery_at | string | null | Last attempt timestamp. |
last_success_at | string | null | Last success timestamp. |
last_failure_at | string | null | Last failure timestamp. |
last_error | string | null | Last failure message. |
secret | string | absent | Signing secret, create response only. |
Cloud Examples
Local Desktop API
Base URL:http://127.0.0.1:<discovered_port>
The desktop app must be open, signed in, and unlocked. Responses contain decrypted local cache data.
Route Map
| Method | Route | SDK | MCP tool | Purpose |
|---|---|---|---|---|
GET | /health | local discovery probe | n/a | Local daemon status. |
GET | /v1/files | client.list_files() | n/a | List decrypted drive nodes. |
GET | /v1/files/{file_id} | client.get_file() | n/a | Get decrypted drive node. |
GET | /v1/meetings | client.list_meetings() | list_meetings | List decrypted meetings. |
GET | /v1/meetings/{meeting_id} | client.get_meeting() | get_meeting | Get meeting + transcript. |
GET | /v1/meetings/{meeting_id}/audio | local audio proxy | n/a | Proxy cloud signed meeting audio URL. |
GET | /v1/transcripts/{transcript_id} | client.get_transcript() | get_transcript | Get transcript event + meeting ref. |
GET | /v1/transcripts/{transcript_id}/audio | local audio proxy | n/a | Proxy cloud signed transcript audio URL. |
POST | /v1/search | client.search() | search | Keyword search decrypted cache. |
POST | /v1/semantic_search | client.semantic_search() | semantic_search | Cloud vector search + local hydration. |
POST | /mcp | vued mcp stdio shim | MCP transport | JSON-RPC MCP endpoint. |
Local Parameters
GET /v1/meetings
| Param | Type | Meaning |
|---|---|---|
org_id | UUID | null | Org filter. Omit when only one org is cached. |
type | manual | automatic | null | Meeting source filter. |
started_after | timestamp | Inclusive lower bound. |
started_before | timestamp | Inclusive upper bound. |
room_id | string | Room filter. |
microphone_id | string | Microphone/device filter. |
file_id | string | Drive node filter. |
limit | integer | Page size, 1-1000. Default 100. |
cursor | string | Page cursor. |
GET /v1/files uses the same filters as cloud GET /orgs/{org_id}/files, plus decrypted names.
POST /v1/search
| Field | Type | Meaning |
|---|---|---|
org_id | UUID | null | Org filter. |
q | string | Keyword query. Alias: query. |
type | manual | automatic | null | Meeting source filter. |
include_transcript | boolean | Search transcript lines when true. Default true. |
limit | integer | Result count, 1-200. Default 20. |
POST /v1/semantic_search
| Field | Type | Meaning |
|---|---|---|
org_id | UUID | null | Org filter; required when multiple orgs are cached. |
q | string | Natural-language query. Alias: query. |
type | manual | automatic | null | Meeting source filter. |
limit | integer | Result count, 1-50. Default 5. |
Local Response Schemas
Meeting
| Field | Type | Meaning |
|---|---|---|
id | string | Record UUID. |
object | meeting | Object type. |
type | manual | automatic | Meeting source. |
title | string | Decrypted title. |
summary | string | Decrypted summary. |
status | string | Record status. |
started_at | string | null | Start timestamp. |
ended_at | string | null | End timestamp. |
room | object | null | {id, display_name}. |
microphone_id | string | null | Device/microphone ID. |
participants | SpeakerRef[] | Named/anonymous speakers only. |
diarized_speaker_count | integer | Diarized speaker cluster count. |
recognized_speaker_count | integer | Resolved speaker count. |
audio.available | boolean | Whether retained audio is known. |
transcript_event_count | integer | Transcript event count. |
TranscriptEvent
| Field | Type | Meaning |
|---|---|---|
id | string | Transcript event UUID. |
index | integer | null | Line index. |
start | string | null | Event start timestamp. |
end | string | null | Event end timestamp. |
speaker | SpeakerRef | Normalized speaker. |
text | string | Decrypted text. |
GetMeetingResponse
| Field | Type | Meaning |
|---|---|---|
meeting | Meeting | Meeting metadata. |
transcript.text | string | Plain transcript text. |
transcript.events | TranscriptEvent[] | Transcript line events. |
GetTranscriptResponse
| Field | Type | Meaning |
|---|---|---|
event | TranscriptEvent | null | Transcript event. |
meeting | object | null | {id, type, title, started_at} parent ref. |
SearchResult
| Field | Type | Meaning |
|---|---|---|
meeting | Meeting | Matching meeting. |
matches | array | Transcript matches. Empty when transcript search disabled. |
SearchMatch
| Field | Type | Meaning |
|---|---|---|
event | TranscriptEvent | Matching transcript event. |
snippet | string | Search-only snippet. |
HydratedSemanticSearchResult
| Field | Type | Meaning |
|---|---|---|
object | semantic_search_result | Object type. |
score | number | Vector score. |
meeting | Meeting | object | Hydrated meeting or {id,type} fallback. |
chunk.index | integer | null | Chunk index. |
chunk.event_ids | string[] | Event IDs. |
chunk.events | TranscriptEvent[] | Hydrated events. |
chunk.text | string | Hydrated chunk text. |
chunk.ts_start | number | null | Chunk start. |
chunk.ts_end | number | null | Chunk end. |
hydrated | boolean | True when local plaintext was found. |
Local Examples
Python SDK
Constructor
| Param | Type | Meaning |
|---|---|---|
api_key | string | Supabase JWT or vued_live_... key. |
org_id | string | null | Default org for org-scoped calls. Required for most methods. |
base_url | string | Cloud /v1 base URL. |
timeout | float | HTTP timeout seconds. |
Method Map
| SDK call | HTTP route | Returns |
|---|---|---|
list_orgs(**filters) | GET /v1/orgs | page of Org. |
search(q, type=None, include_transcript=True, limit=20) | local POST /v1/search | page of SearchResult. |
semantic_search(q, type=None, limit=5) | local POST /v1/semantic_search; cloud fallback | page of semantic results. |
list_meetings(...) | local GET /v1/meetings | page of Meeting. |
get_meeting(meeting_id) | local GET /v1/meetings/{meeting_id} | GetMeetingResponse. |
get_transcript(transcript_id) | local GET /v1/transcripts/{transcript_id} | GetTranscriptResponse. |
get_meeting_audio(meeting_id) | cloud GET /v1/orgs/{org_id}/meetings/{meeting_id}/audio | AudioUrl. |
get_transcript_audio(transcript_id) | cloud GET /v1/orgs/{org_id}/transcripts/{transcript_id}/audio | AudioUrl. |
list_files(...) | local GET /v1/files | page of File. |
get_file(file_id) | local GET /v1/files/{file_id} | File. |
create_file(...) | cloud POST /v1/orgs/{org_id}/files | File. |
update_file(...) | cloud PATCH /v1/orgs/{org_id}/files/{file_id} | File. |
list_file_grants(file_id, limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/files/{file_id}/grants | page of grants. |
grant_file(file_id, user_id) | cloud POST /v1/orgs/{org_id}/files/{file_id}/grants | grant object. |
revoke_file_grant(file_id, user_id) | cloud DELETE /v1/orgs/{org_id}/files/{file_id}/grants/{user_id} | {deleted}. |
download_file(file_id) | cloud GET /v1/orgs/{org_id}/files/{file_id}/download | ZIP bytes. |
list_speakers(q=None, limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/speakers | page of Speaker. |
get_speaker(speaker_id) | cloud GET /v1/orgs/{org_id}/speakers/{speaker_id} | Speaker. |
list_rooms(q=None, limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/rooms | page of Room. |
get_room(room_id) | cloud GET /v1/orgs/{org_id}/rooms/{room_id} | Room. |
create_room(display_name, microphone_id) | cloud POST /v1/orgs/{org_id}/rooms | Room. |
update_room(...) | cloud PATCH /v1/orgs/{org_id}/rooms/{room_id} | Room. |
list_microphones(limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/microphones | page of Microphone. |
get_microphone(microphone_id) | cloud GET /v1/orgs/{org_id}/microphones/{microphone_id} | Microphone. |
list_users(q=None, limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/users | page of OrgUser. |
get_user(user_id) | cloud GET /v1/orgs/{org_id}/users/{user_id} | OrgUser. |
list_api_keys(limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/api-keys | page of PublicApiKey. |
create_api_key(...) | cloud POST /v1/orgs/{org_id}/api-keys | CreatedPublicApiKey. |
revoke_api_key(key_id) | cloud DELETE /v1/orgs/{org_id}/api-keys/{key_id} | {deleted}. |
list_webhooks(limit=50, cursor=None) | cloud GET /v1/orgs/{org_id}/webhooks | page of Webhook. |
create_webhook(...) | cloud POST /v1/orgs/{org_id}/webhooks | Webhook with secret. |
update_webhook(...) | cloud PATCH /v1/orgs/{org_id}/webhooks/{webhook_id} | Webhook. |
delete_webhook(webhook_id) | cloud DELETE /v1/orgs/{org_id}/webhooks/{webhook_id} | {deleted}. |
SDK Examples
CLI
The package installs one command:vued mcp reads MCP JSON-RPC messages from stdio, forwards request/response messages to local POST /mcp, and exits when stdin closes. It has no other subcommands.
MCP
Local MCP
Local MCP is the supported decrypted-content path. Transport:| Env var | Meaning |
|---|---|
VUED_LOCAL_API_URL | Explicit local API base URL. |
VUED_LOCAL_API_TOKEN | Explicit local API bearer token. |
VUED_LOCAL_API_DISCOVERY | Explicit discovery file. |
VUED_MCP_WAKE_TIMEOUT_MS | Desktop wake wait, default 8000. |
VUED_MCP_NO_WAKE=1 | Disable desktop auto-wake. |
VUED_MCP_TRACE | JSONL trace file path. |
| Method | Result |
|---|---|
initialize | Protocol version, tools capability, server {name:"vued-local", version:"1"}. |
ping | Empty success. |
tools/list | Tool definitions below. |
tools/call | Tool result as JSON text content. |
resources/list | Empty list. |
prompts/list | Empty list. |
| Tool | Args | Returns |
|---|---|---|
search | query required; org_id, type, include_transcript, limit optional | Local SearchResult page. |
semantic_search | query required; org_id, type, limit optional | Hydrated semantic page. |
list_meetings | org_id, type, started_after, started_before, room_id, microphone_id, file_id, cursor, limit optional | Local meeting page. |
get_meeting | meeting_id required; org_id, type optional | GetMeetingResponse. |
get_transcript | transcript_id required | GetTranscriptResponse. |
| Arg | Limit |
|---|---|
search.limit | 1-200, default 20. |
semantic_search.limit | 1-50, default 5. |
list_meetings.limit | 1-1000, default 100. |
MCP Install Syntax
Local desktop installer writes client config for supported apps. Manual local config:/api/v1/mcp/tokens. The settings UI currently shows these install snippets for a remote /mcp endpoint:
/mcp route. Treat local MCP as canonical until remote MCP is implemented.
Webhooks
Supported event types:| Event | Meaning |
|---|---|
meeting.started | Meeting started. |
meeting.ended | Meeting ended. |
meeting.transcription.completed | Transcription completed. |
meeting.speaker_id.completed | Speaker identification completed. |
meeting.finalized | Meeting finalized. |
meeting.automatic.surfaced | Automatic meeting surfaced. |
| Field | Meaning |
|---|---|
meeting | Meeting identity and metadata. |
timestamps | Start/end timing. |
room | Room metadata. |
participants | Meeting participant list. |
speakers | Speaker list. |
audio_metadata | Audio availability/metadata. |
transcript_text | Full transcript text. |
transcript_events | Transcript event list. |
summary | Meeting summary. |
topics | Topic list. |
title | Meeting title. |
| Field | Type | Meaning |
|---|---|---|
id | string | Event ID, evt_.... |
object | event | Object type. |
type | string | Event type. |
created_at | string | Event creation timestamp. |
org_id | string | Org UUID. |
data.object | meeting | Data object type. |
data.id | string | Meeting UUID. |
data.* | mixed | Selected payload fields. |
| Header | Meaning |
|---|---|
Vued-Webhook-Timestamp | Unix timestamp used in signature. |
Vued-Signature | t=<timestamp>,v1=<hex_hmac_sha256>. |
Scope Reference
| Scope | Grants |
|---|---|
records:read | Read fallback for meetings, transcripts, files, speakers, rooms, users. |
meetings:read | Meeting audio and semantic meeting refs. |
transcripts:read | Semantic search and transcript audio. |
files:read | File/folder reads, grants, downloads. |
files:write | File/folder create/update/grant/revoke. |
speakers:read | Speaker profile reads. |
rooms:read | Room and microphone reads. |
rooms:write | Room create/update. |
users:read | Org user reads. |
webhooks:read | Webhook reads. |
webhooks:write | Webhook create/update/delete. |
api_keys:read | Public API key reads. |
api_keys:write | Public API key create/revoke. |
org:<org_uuid> | Restricts key to one org. |
* | Supabase JWT full-session scope. |