Integration

Tela integration

Tela (tela.com, by Meistrari) runs AI Canvases and Workflows built in its interface. An agent can run a published Canvas with variables (text or public file URLs) and wait for its structured answer, create and query Workstation tasks and approve them, run and tag test cases, manage prompt versions, their messages and publication environments, read canvases, completion runs and workflow runs, cancel a workflow run, export tasks, and manage Workstation webhook subscriptions and their deliveries. Running a Canvas, a task or a test case is billed against the workspace's usage. Left out: file uploads to Tela's storage (they need a second upload to a pre-signed URL; pass public file URLs instead), the deprecated version listing, the test send to an arbitrary URL, streaming, agent task batches, and webhook authentication headers (secrets). Authentication is a workspace API key from the Workspace settings, API Keys, sent as a Bearer token.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Tela.Built from the 62 Tela tools below, on the connection you add once.

What you can do with Tela

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Test case tag, 9 operations

  • assign_test_case_tagsAssign test case tagsPOSTAgents: ask firstAssigns the given tags to the test case. Tags must belong to the same canvas as the test case. Responds with an empty body.
  • bulk_assign_test_case_tagsBulk assign test case tagsPOSTAgents: ask firstAssigns every tag in `tagIds` to every test case in `testCaseIds`. Existing assignments are skipped, so the call is idempotent. Tags and test cases must belong to the same canvas. Responds with an empty body.
  • bulk_remove_test_case_tagsBulk remove test case tagsPOSTAgents: ask firstRemoves every tag in `tagIds` from every test case in `testCaseIds`. Missing assignments are ignored. Responds with an empty body.
  • create_test_case_tagCreate test case tagPOSTAgents: ask firstCreates a tag scoped to a canvas. Tags are later assigned to test cases of that canvas.
  • delete_test_case_tagDelete test case tagDELETEAgents: ask firstSoft-deletes the tag. It disappears from listings and from the test cases it was assigned to.
  • list_test_case_assigned_tagsList test case assigned tagsGETAgents: ask firstReturns the tags currently assigned to the test case.
  • list_test_case_tagsList test case tagsGETAgents: ask firstLists the test case tags (labels) defined for a canvas: id, name and color.
  • remove_test_case_tagRemove test case tagDELETEAgents: ask firstRemoves a single tag assignment from the test case.
  • update_test_case_tagUpdate test case tagPATCHAgents: ask firstPartially updates a tag's `name`, `color` or `promptId`. All fields are optional.

Test case, 8 operations

  • abort_test_caseAbort test casePOSTAgents: ask firstMarks every non-terminal generation of the test case as `aborted` and cancels its queued or executing background jobs. Succeeds even when nothing is running (see `message`). No request body.
  • create_test_caseCreate test casePOSTAgents: ask firstCreates a test case for a canvas (it is not run; use run_test_case). messages is required (pass [] for a canvas without chat) and so is variablesRichContent (pass {} when unused); text inputs go in variables.
  • delete_test_caseDelete test caseDELETEAgents: ask firstDeletes a test case.
  • get_test_caseGet test caseGETAgents: ask firstReturns one test case: title, chat messages, variables, files, expected output, answers, metadata and generations.
  • list_test_casesList test casesGETAgents: ask firstLists the test cases of a canvas: title, chat messages, variables, files, expected output, answers and metadata; with includeGenerations, their runs.
  • run_test_caseRun test casePOSTAgents: ask firstRuns one test case against a prompt version in the background, BILLED to the workspace inference quota. Returns the generationId (abort with abort_test_case); success false means a run of that version is already in progress.
  • run_test_casesRun test casesPOSTAgents: ask firstRuns a batch of test cases against a prompt version, BILLED to the workspace inference quota: testCaseIds if given, else those matching filters, else EVERY test case of the canvas. Test cases already running for that version are skipped.
  • update_test_caseUpdate test casePATCHAgents: ask firstUpdates a test case: only the fields sent change. Leave out any field to keep its current value.

Task, 6 operations

  • create_taskCreate taskPOSTAgents: ask firstCreates a Workstation/App task, BILLED to workspace usage: it runs the app's canvas in the background. Returns a list holding the task (status running); poll get_task until validating (ready for review) or failed.
  • delete_taskDelete taskDELETEAgents: ask firstSoft-deletes a task (sets `deletedAt`). Deleted tasks disappear from all list and query endpoints. Requires the `member` role or higher; workspace-level API keys satisfy this.
  • get_taskGet taskGETAgents: ask firstReturns one task: status, input variables and files, the extracted output (outputContent), the original output, approval data and tags. Tasks hold the documents and data users sent. Deleted tasks answer 404.
  • list_tasksList tasksGETAgents: ask firstLists the workspace's tasks (Workstation/App or agent tasks), newest updated first, filtered by app, agent, version, status, dates, creator, approver, name or tags. Tasks hold the documents and data users sent.
  • query_tasksQuery tasksPOSTAgents: ask firstSearches the tasks of ONE app or agent with filters on metadata and on the extracted output (outputContent.content) using MongoDB-style operators. Pass exactly one of promptApplicationId or agentId. Returns task data users sent.
  • update_taskUpdate taskPATCHAgents: ask firstUpdates a task's name, tags or output, or APPROVES it with status completed (sets approvedBy and approvedAt and fires the app's task.approved webhooks). Refused with 400 while the task is still running.

Webhook, 6 operations

  • create_webhookCreate webhookPOSTAgents: ask firstSubscribes a URL to task events of a Workstation app: Tela sends each event as JSON. Tela does not sign deliveries and this tool sets no authentication headers, so the endpoint cannot verify the sender.
  • delete_webhookDelete webhookDELETEAgents: ask firstSoft-deletes the subscription and deactivates it. Existing delivery records are kept.
  • get_webhookGet webhookGETAgents: ask firstReturns one webhook subscription: name, URL, events, method, active state, the names of its sensitive headers, and dates. Deleted webhooks answer 404.
  • list_webhooksList webhooksGETAgents: ask firstReturns the webhook subscriptions of an application, newest first, with pagination metadata.
  • send_webhook_test_eventSend webhook test eventPOSTAgents: ask firstSENDS a synthetic event of eventType (a sample task) to the webhook's URL with its configured method and headers and returns what the endpoint answered. Always 200: read success and statusCode. No delivery is recorded.
  • update_webhookUpdate webhookPATCHAgents: ask firstUpdates a webhook subscription: only the fields sent change, and events replaces the stored list. isActive false pauses deliveries without deleting it; promptApplicationId moves it to another app.

Prompt version message, 5 operations

  • create_prompt_version_messageCreate prompt version messagePOSTAgents: ask firstAttaches a message to a prompt version that is not promoted nor published (otherwise refused, as a 500). The runtime reads the prompt from the first message by index, so send role system at index 0 for the prompt text.
  • delete_prompt_version_messageDelete prompt version messageDELETEAgents: ask firstPermanently deletes a message. Fails when the parent version is promoted or published to an environment (currently surfaced as `500`).
  • get_prompt_version_messageGet prompt version messageGETAgents: ask firstReturns one message of a prompt version: role, content, Markdown content, index and authorship.
  • list_prompt_version_messagesList prompt version messagesGETAgents: ask firstReturns the non-deleted messages attached to a prompt version, ordered by `index`. A version normally holds a single `system` message that carries the prompt content; the same object is exposed as `message` on the version resources.
  • update_prompt_version_messageUpdate prompt version messagePATCHAgents: ask firstPartially updates a message. All fields are optional; only the supplied ones change. Fails when the parent version is promoted or published to an environment (currently surfaced as `500`).

Environment, 4 operations

  • create_environmentCreate environmentPOSTAgents: ask firstCreates a custom environment for a canvas (it has no published version until publish_version_to_environment). Answers 400 on an invalid name and 409 when the name already exists on the canvas.
  • delete_environmentDelete environmentDELETEAgents: ask firstDeletes (soft) a custom environment and unpublishes its active version; its name can be reused. production cannot be deleted (400); an environment still targeted by an app of the canvas is refused with 409, details.apps naming the apps.
  • list_environmentsList environmentsGETAgents: ask firstReturns every environment of a canvas (prompt), ordered with `production` first and the remaining environments alphabetically.
  • publish_version_to_environmentPublish version to environmentPOSTAgents: ask firstPublishes a prompt version to an environment: API calls targeting it run that version at once. Publishing to production also promotes it and switches the canvas's Workstation apps to it. Returns the environment and the version.

Prompt version, 4 operations

  • create_prompt_versionCreate prompt versionPOSTAgents: ask firstCreates a new version of a canvas (prompt) with its title, configuration (model, type), variables and prompt content. Write the prompt text with create_prompt_version_message afterwards, or inline here.
  • delete_prompt_versionDelete prompt versionDELETEAgents: ask firstDeletes a prompt version of a canvas. Returns its id and deleted true.
  • get_prompt_versionGet prompt versionGETAgents: ask firstReturns one prompt version in full: title, content, configuration (model, type, temperature, structured output), variables, promoted and draft flags, and its messages.
  • update_prompt_versionUpdate prompt versionPATCHAgents: ask firstUpdates a prompt version: only the fields sent change (variables replaces the whole list). Write or change the prompt text with create_prompt_version_message or update_prompt_version_message.

Canvas version, 3 operations

  • get_latest_canvas_versionGet latest canvas versionGETAgents: ask firstReturns the most recently created version of a canvas with its system message, active environments, versionIndex (1 is the oldest) and previousVersionId.
  • get_production_canvas_versionGet production canvas versionGETAgents: ask firstReturns the version live for a canvas: the one published to production, else the most recently updated version flagged promoted (older canvases). Includes its active environments. Answers 404 when there is none.
  • list_canvas_version_historyList canvas version historyGETAgents: ask firstLists a canvas's versions newest first, with lifecycle metadata (draft, promoted, originVersionId, environments, versionIndex) but no prompt content; read one in full with get_prompt_version.

Webhook delivery, 3 operations

  • list_app_webhook_deliveriesList app webhook deliveriesGETAgents: ask firstLists the delivery attempts of all webhooks of an app, newest first: target URL, event, status, the HTTP status and body your endpoint answered, attempts and resend chain.
  • list_webhook_deliveriesList webhook deliveriesGETAgents: ask firstLists the delivery attempts of one webhook, newest first: target URL, event, status, the HTTP status and body your endpoint answered, attempts and resend chain.
  • resend_webhook_deliveryResend webhook deliveryPOSTAgents: ask firstSENDS a past webhook delivery again, rebuilt from the task's current state (not the payload originally sent). The 200 answer only confirms it was queued; the new delivery points to the original through originalDeliveryId.

Workflow run, 3 operations

  • cancel_workflow_runCancel workflow runPOSTAgents: ask firstCANCELS a workflow run: its queued or executing jobs are cancelled and it is marked cancelled. A run already completed, cancelled, failed or timed out is returned unchanged. Needs the workflow feature (else 403).
  • get_workflow_runGet workflow runGETAgents: ask firstReturns one workflow run: status, input, per-step results and the executed graph with each node's status, output and error (map-step iterations aggregated under runs).
  • list_workflow_runsList workflow runsGETAgents: ask firstLists the runs of a workflow canvas, newest first, by version, status or the surface that started them (test-case, craft-preview, api, workstation); each holds its input, steps and output.

Canvas, 2 operations

  • get_canvasGet canvasGETAgents: ask firstReturns one canvas (prompt): title, project, tags, allowed credential ids, and its production and latest versions. A personal draft of another user answers 404.
  • list_canvasesList canvasesGETAgents: ask firstLists the canvases (prompts) the key can access in its workspace: canvases of accessible projects, plus the caller's personal drafts when the token carries a user identity. Deleted canvases are never returned.

Canvas run, 2 operations

  • get_canvas_runGet canvas runGETAgents: ask firstReturns a canvas run: status (created, running, succeeded or failed), the normalized inputs, output_content (role and content, the Output Format fields), raw input and output, and the version that ran.
  • run_canvasRun canvasPOSTAgents: ask firstRuns a published canvas, BILLED to the workspace usage: pass canvas_id (Production, or environment_name) or version_id, plus variables. Read output_content.content. Waits for the job and returns the finished result; gives up after 10 minutes.

Task export, 2 operations

  • create_task_exportCreate task exportPOSTAgents: ask firstExports an app's tasks to CSV (default) or JSON and waits until done; then get the file link with get_task_export_download_url. Waits for the job and returns the finished result; gives up after 10 minutes.
  • get_task_exportGet task exportGETAgents: ask firstReturns the state of a task export: status (pending, processing, completed, failed or expired), task counts, whether a file exists and when it expires. Only the identity that created it can read it.

Canvas version index, 1 operation

  • get_canvas_version_index_mapGet canvas version index mapGETAgents: ask firstReturns every non-deleted version id of the canvas with its 1-based `versionIndex` (1 is the oldest) and the id of the version created immediately before it. Ordered from newest to oldest.

Completion run, 1 operation

  • list_completion_runsList completion runsGETAgents: ask firstLists the workspace's canvas runs (completion runs), most recently updated first, optionally for one app, version or canvas or with given tags; each holds the inputs sent and the output. Requires member role (workspace keys qualify).

Environment publication, 1 operation

  • list_environment_publicationsList environment publicationsGETAgents: ask firstReturns the publication history of one environment of a canvas, newest first; the item with isActive true (unpublishedAt null) is the version it serves now. Answers 404 for a custom name that does not exist.

Environment version, 1 operation

  • get_environment_versionGet environment versionGETAgents: ask firstReturns the prompt version an environment currently serves, in full (messages, variables, configuration): the version run_canvas runs with that environment_name. Answers 404 when the environment does not exist or has no published version.

Task export file, 1 operation

  • get_task_export_download_urlGet task export download urlGETAgents: ask firstReturns a fresh signed download URL for a completed task export, valid for expiresIn seconds (3600). Answers 400 when the export is not completed, has no file, or expired (24 hours after completion).

Use Tela from Claude Code, Cursor or Codex

Connect Tela in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Tela operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Tela

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Tela once

    Add your Tela connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Tela integration FAQ

What can you do with the Tela integration?

LiveContext exposes 62 operations on Tela, covering test case tag, test case, task and webhook.

Popular integrations

Browse the whole catalog