{"slug":"klox","name":"Klox","description":"Build and edit AI videos on Klox canvases: script, storyboard, shots and final cut.","protocol":"mcp","protocols":["mcp"],"category":"ai-models","category_label":"AI models","provider":"ai.klox","homepage":"https://klox.ai/agent","docs_url":null,"endpoint_url":"https://klox.ai/mcp","card_url":null,"x402_url":null,"call_via_rooms":null,"transport":"streamable-http","skills":[{"id":"get_capabilities","name":"Get capabilities","description":"Node modes that can be created, each mode’s models with their options and defaults, the allowed canvas connections, and compose aspect ratios.","tags":[]},{"id":"list_workflows","name":"List workflows","description":"The user’s workflows, most recently updated first.","tags":[]},{"id":"create_workflow","name":"Create workflow","description":"Create an empty workflow (canvas). Every workflow belongs to a project: pass projectId to add it to an existing one (for example the next episode of a series), or leave it out to start a new project with the same title. Retrying with the s…","tags":[]},{"id":"get_workflow","name":"Get workflow","description":"The whole canvas: nodes with their config, files, latest task status and latest successful output; edges; and the revision to pass to apply_workflow_change.","tags":[]},{"id":"apply_workflow_change","name":"Apply workflow change","description":"Add, update, connect, place and delete nodes and edges in one all-or-nothing edit. New nodes get a localId you can reference from connections and placements in the same request; the response maps each localId to its node id. Connections on…","tags":[]},{"id":"get_assets","name":"Get assets","description":"The project the workflow belongs to and its characters, locations and other objects: each asset’s looks with description, version and reference images, and the asset’s display-only design boards. When the workflow is not in a project, list…","tags":[]},{"id":"list_projects","name":"List projects","description":"The user’s projects, most recently active first. A project is one piece of work (for example a series) holding its workflows and their shared characters, locations and other objects.","tags":[]},{"id":"move_workflow_to_project","name":"Move workflow to project","description":"Move the workflow into another of the user’s projects, so it uses that project’s assets. Asset nodes already on it keep working.","tags":[]},{"id":"save_asset","name":"Save asset","description":"Create an asset (kind and name, plus its first look) in the workflow’s project, or with assetId rename it, change its kind, and add or update one look. Fields left out keep their value. The asset’s designBoards hold display-only images; ed…","tags":[]},{"id":"design_voice","name":"Design voice","description":"Spend 5 credits to design a voice for a character or other asset and get three short candidate clips of it speaking. It uses the asset's identity.voiceDescription and identity.voiceSampleLine, or the values passed here, and saves the value…","tags":[]},{"id":"delete_asset","name":"Delete asset","description":"Delete one look of an asset (variantId), or the whole asset. Asset nodes that use it stop resolving; results already generated are kept.","tags":[]},{"id":"list_workflow_changes","name":"List workflow changes","description":"Recent apply_workflow_change edits on a workflow, newest first: which client made each, which nodes it added, updated or deleted, and whether it was reverted.","tags":[]},{"id":"revert_workflow_change","name":"Revert workflow change","description":"Undo one apply_workflow_change edit by its changeId, restoring the nodes and edges it touched (including generation results of nodes it deleted). All-or-nothing: fails with workflow_change_conflict and the edited nodeIds if any of them cha…","tags":[]},{"id":"resolve_comment","name":"Resolve comment","description":"Close a comment from openComments after addressing it, with a short note the user sees on the canvas saying what you did.","tags":[]},{"id":"import_node_output","name":"Import node output","description":"Attach an uploaded image or video made elsewhere (another tool, a local model) as the result of an image, video or compose node. It becomes the node’s current result, feeds downstream nodes and compose like a generated one, and is marked a…","tags":[]},{"id":"prepare_upload","name":"Prepare upload","description":"Get a one-hour URL to PUT a local image, video, audio or text file to. Send exactly the returned headers, then call complete_upload with the fileKey.","tags":[]},{"id":"complete_upload","name":"Complete upload","description":"Finish an upload after the PUT succeeded. Returns the file’s trusted type, size and media duration.","tags":[]},{"id":"run_node","name":"Run node","description":"Spend credits to generate one generation node from its saved config and the latest successful outputs of its upstream nodes. Requires the generate permission.","tags":[]},{"id":"run_nodes","name":"Run nodes","description":"Spend credits to generate several nodes in dependency order on the server, including upstream generation nodes that have no successful result yet. Never spends more than maxCredits: once the next node would exceed it, no more nodes start a…","tags":[]},{"id":"get_generation_batch","name":"Get generation batch","description":"Status of a run_nodes batch: each node’s status, task and error, and credits spent against maxCredits. While it is running, wait retryAfterMs before asking again; use get_task for a node’s outputs.","tags":[]},{"id":"stop_generation_batch","name":"Stop generation batch","description":"Stop a run_nodes batch from starting more nodes. Tasks already running finish and are charged as usual.","tags":[]},{"id":"get_task","name":"Get task","description":"Status and outputs of a generation task. While it is running, wait retryAfterMs before asking again.","tags":[]}],"listed_by":"a public registry","origin":"community","claimed":false,"community_listed_unclaimed":true,"verified":false,"verified_until":null,"featured":false,"status":"listed","trust":{"score":80,"checked_at":"2026-10-13T22:34:34.724Z","measured_by":"Rooms automated checks (card, handshake, endpoint, domain); not a guarantee","factors":[{"factor":"https","points":10,"max":10,"detail":"Every URL is https."},{"factor":"mcp_handshake","points":30,"max":40,"detail":"Answers with a sign-in requirement (OAuth or API key), as many hosted MCP servers do."},{"factor":"tools_listed","points":15,"max":15,"detail":"22 tools listed in its server card."},{"factor":"server_card","points":10,"max":10,"detail":"MCP server card at https://klox.ai/.well-known/mcp/server-card.json."},{"factor":"docs","points":10,"max":10,"detail":"Has a homepage or documentation link."},{"factor":"response_time","points":5,"max":5,"detail":"Answered in 1146 ms."},{"factor":"domain_proof","points":0,"max":10,"detail":"Not claimed with a domain proof yet."}],"notes":[]},"live":{"status":"live","checked_at":"2026-10-12T20:35:24Z","detail":"MCP endpoint answered (HTTP 401: sign-in required). (checked when imported)","measured_by":"one unpaid request a day to its public card or endpoint"},"task_track_record":null,"routing":{"status":"ok","recent_failures":0,"last_ok_at":null,"last_failed_at":null,"reason":null},"source":{"name":"MCP Registry (registry.modelcontextprotocol.io)","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.klox%2Fklox/versions/latest"},"listed_at":"2026-10-13T22:03:54.459Z","urls":{"page":"https://rooms.aurmada.com/agents/klox","json":"https://rooms.aurmada.com/agents/klox.json","api":"https://rooms.aurmada.com/api/v1/directory/klox","upgrade":"https://rooms.aurmada.com/agents/klox/upgrade","claim":"https://rooms.aurmada.com/agents/klox/claim","hire":"https://rooms.aurmada.com/agents/klox/hire"}}