ktalk-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KTALK_BASE_URL | Yes | Base URL of your KTalk instance (e.g., https://your-domain.ktalk.ru) | |
| KTALK_SESSION_TOKEN | Yes | Session token for KTalk API authorization |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ktalk_list_recordingsA | List available KTalk conference recordings. Args: query: Search by title, room name, or author start_from: Start date filter (ISO 8601, e.g. 2026-03-01) start_to: End date filter (ISO 8601) top: Number of recordings per page (1-100, default 30). The API rejects values above 100 with HTTP 400. order: Sort order (byTimeNewFirst, byTimeOldFirst, byTitle, bySizeBigFirst, bySizeSmallFirst) page_token: Pagination token from previous response format: Output format — "raw" (JSON) or "markdown" (human-readable table) |
| ktalk_get_recordingA | Get details of a specific KTalk recording. Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (human-readable) |
| ktalk_get_transcriptA | Get transcript of a KTalk recording (speech-to-text by speakers). Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (dialogue with timecodes) chunk: Chunk number. 0 = auto (returns full text if small, first chunk if large). 1+ = specific chunk number for paged reading. chunk_size: Max characters per chunk (~7500 tokens at 30000). Soft limit — chunks split at utterance boundaries, never mid-utterance. |
| ktalk_get_summaryA | Get full summary of a KTalk recording (short summary + protocol + transcription). Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" (structured summary) |
| ktalk_get_summary_by_typeA | Get a specific type of summary for a KTalk recording. Args: recording_key: Recording key/identifier (required) summary_type: Type of summary — "shortSummary" or "protocol" (required) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_get_participantsA | Get the full participant list of a KTalk recording (FR-8). Unlike the list/details response (capped by Args: recording_key: Recording key/identifier (required) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_download_recordingA | Download a KTalk recording video file to disk, streamed (FR-7). Args: recording_key: Recording key/identifier (required) target_path: Filesystem path to write the file to (required). Parent directories are created; an existing file is not overwritten. quality: Requested video quality (e.g. "900p"). None picks a sensible default from the record's available qualities. format: Output format for the returned metadata — "raw" (JSON) or "markdown" |
| ktalk_list_archiveA | List archived meetings within a date window (FR-9, personal API key only). Reads the whole window client-side across all pages — unlike
Args: from_date: Window start date (ISO 8601) to_date: Window end date (ISO 8601) room_names: Optional filter by room name(s) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_get_chat_messagesA | Get chat messages of a meeting (FR-10). Either Args: recording_key: Recording key/identifier (resolves the meeting bridge) conference_key: Meeting/conference key (used directly if given) channel: Chat channel name (e.g. "general"); auto-resolved if omitted format: Output format — "raw" (JSON) or "markdown" |
| ktalk_list_calendarA | List scheduled meetings visible to the active authorization (FR-18). Reports meetings this session/key can see — not necessarily a personal calendar. Window is segmented server-side into <=7-day chunks transparently; segments hitting the 100-item cap are flagged. Args: start: Window start date (ISO 8601), required, inclusive end: Window end date (ISO 8601), required, inclusive (FR-39/ADR-017) room_name: Optional filter by room name format: Output format — "raw" (JSON) or "markdown" |
| ktalk_get_roomA | Get room details (FR-17, session mode only — no confirmed API-key profile). WARNING — SIDE EFFECT (ADR-006): the server returns 200 for any room name, including one never seen before, with an identically shaped response (never a 404). Calling this with a name not yet read in this contour CREATES the room object as a side effect of reading; this is irreversible — the project has no delete operation. Do NOT use this tool to check whether a name is available/occupied — the check itself creates the occupancy. Args: room_name: Room name (path-quoted before the request) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_preview_meetingA | Preview a single meeting to be created (FR-13) — zero network calls. Does not create anything, ever: there is no MCP tool that does. To
actually create the meeting, run Args: subject: Meeting subject (required) start: Local ISO 8601 start time with offset (required) — converted to UTC internally (ADR-009) end: Local ISO 8601 end time with offset (required) — converted to UTC internally (ADR-009) timezone: Timezone (required — no silent default, NFR-9) room_name: Room name (required) required_attendee_keys: Numeric attendee ids as strings (not logins, ADR-009); explicit empty list is valid description: Optional description (only field with a silent default) enable_auto_recording: Whether the meeting is recorded (required, no silent default) pin_code: Room PIN code pin_code_explicit_none: True means "explicitly no PIN" (JSON null); without either signal, pin_code is required allow_anonymous: Whether unauthenticated participants may join (required) anonymous_access_expiration: Required only if allow_anonymous is True (ADR-009 §3 — no computed default) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_search_contactsA | Search the KTalk contacts directory to resolve a numeric attendee
Never auto-selects a candidate: 0 matches is a refusal, 1 match is
shown explicitly (not applied anywhere), >1 matches are listed in
full without ranking. The resolved Args: query: Free-text name/surname (not a login — unverified, ADR-010 §4) format: Output format — "raw" (JSON) or "markdown" |
| ktalk_preview_cancel_meetingA | Preview cancellation of a single meeting (ADR-011) — zero network calls. Does not cancel anything, ever: there is no MCP tool that does. To
actually cancel the meeting, run Args:
id: Base64 meeting id (from |
| ktalk_auth_statusA | Diagnose the active authorization mechanism (FR-11). Reports whether the personal API key or session token is alive, and — for the API key — its scopes and expiration, when available. Args: format: Output format — "raw" (JSON) or "markdown" |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mdemyanov/ktalk-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server