Topaz Labs MCP server for AI agents

Live

API KEY

VIDEO ENHANCEMENT

Media

Topaz Labs gives your agent AI video enhancement and image job tracking: start and track video enhancement requests, estimate image job credits, check image job status and download outputs, and monitor credit balance and usage.

  • Per-user credentials: each call uses the actual user's API key, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Topaz Labs
agent · Acme Q3
Run
Is the product demo video done enhancing?
S
topazlabs_get_video_request_status
91ms
Video enhancement agent
Not yet. The product demo request is 72% processed, with about 4 minutes left.
Sources: 1 video request
topazlabs
1 request
18:29
Message Claude...

Tools your video enhancement agent reaches for on Topaz Labs, scoped per user.

CALL ANY TOOL
21 tools for video enhancement in Topaz Labs: create and accept video requests, track status and metrics, estimate and track image jobs, and check credits.
topazlabs_accept_video_request
Accept video request
Accept a video request created by topazlabs_create_video_request, which reserves the estimated credits. Returns uploadId and urls (presigned upload URLs) when the source must be uploaded, or a message when the request was created with a source_url and processing has started. Use this after reviewing the estimate. For an upload, PUT the file (or its 500 MB parts, in order) to the returned urls yourself, outside this tool, then call topazlabs_complete_video_upload. Calling it again returns the same URLs. Requires a requestId from topazlabs_create_video_request.
Parameters
Name
Type
Required
Description
request_id
string
Required
ID (UUID) of the video request, returned as requestId by topazlabs_create_video_request or topazlabs_create_express_video_request, or listed by topazlabs_list_video_requests. Example: 0193b36c-b37f-7997-ab75-c85f61b451e8
topazlabs_cancel_image_job
Cancel image job
topazlabs_cancel_video_request
Cancel video request
topazlabs_complete_video_upload
Upload complete video
topazlabs_create_express_video_request
Create express video request
topazlabs_create_video_request
Create video request
topazlabs_delete_video_files
Delete video files
topazlabs_estimate_generative_image_job
Estimate generative image job
topazlabs_estimate_image_job
Estimate image job
topazlabs_estimate_video_cancellation
Estimate video cancellation
topazlabs_get_credit_balance
Get credit balance
topazlabs_get_credit_usage
Get credit usage
topazlabs_get_image_download_url
Get image download url
topazlabs_get_image_input_download_url
Get image input download url
topazlabs_get_image_job_status
Get image job status
topazlabs_get_video_request
Get video request
topazlabs_get_video_request_metrics
Get video request metrics
topazlabs_get_video_request_status
Get video request status
topazlabs_get_video_system_status
Get video system status
topazlabs_list_image_jobs
List image jobs
topazlabs_list_video_requests
List video requests
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Topaz Labs tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["topazlabs"], toolNames: [
    "topazlabs_create_express_video_request",
    "topazlabs_get_video_request_status",
    "topazlabs_get_credit_balance"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Enhance this product demo video and tell me when it is done" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["topazlabs"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Enhance this product demo video and tell me when it is done" }],
  tools,
});

// Execute the tool call with the user's vaulted Topaz Labs API key
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["topazlabs"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Enhance this product demo video and tell me when it is done" }],
  tools,
});

// Tool call runs with the user's vaulted Topaz Labs API key
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["topazlabs"] }, pageSize: 100,
});

const agent = new Agent({
  name: "video_enhancement_agent",
  model: "gemini-2.5-pro",
  instruction: "Topaz Labs tools scoped to this user",
  tools,
});

await agent.run("Enhance this product demo video and tell me when it is done");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Topaz Labs tool. Click to copy, paste into your agent, done.
Video
Copy the prompt
Copied
Enhance the video at this URL with an express request.
Copy the prompt
Copied
How far along is the product demo video?
Copy the prompt
Copied
Cancel the webinar video request and show the refund.
Images
Copy the prompt
Copied
Estimate the credits to enhance a 12 MP photo with Standard V2.
Copy the prompt
Copied
Get the download link for my finished image job.
Copy the prompt
Copied
List my image jobs from today.
Credits and service
Copy the prompt
Copied
What is our Topaz Labs credit balance?
Copy the prompt
Copied
Show credit usage by day for the last week.
Copy the prompt
Copied
Is the Topaz Labs video service available right now?
SEE HOW AUTH WORKS
Each user connects their own Topaz Labs API key once, and Scalekit sends it with every call. Keys stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Topaz Labs
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Topaz Labs
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Topaz Labs
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Topaz Labs
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other media and AI connectors.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
Test other agents
See the same per-user auth pattern across other media and AI connectors.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
ENGINEERING
Slack workflow agent (LangGraph)
LangGraph agent that drives multi-step Slack workflows: triggers, approvals, and follow-up actions per user identity.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Topaz Labs API key looks fine in a demo. In production every video request and credit spend looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared key
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Topaz Labs today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Topaz Labs as the user or through a shared key?
As the user. Each user connects their own Topaz Labs API key once, and Scalekit sends it with every call. Audit logs attribute every video request and credit spend to that user, not a shared service account.
Where is the Topaz Labs API key stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new API key. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Topaz Labs?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example the status and estimate tools without topazlabs_accept_video_request, which reserves credits and starts processing, or topazlabs_delete_video_files, which permanently deletes the source and enhanced files. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Topaz Labs access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent submit image jobs to Topaz Labs?
No. The image tools estimate credits and processing time, list jobs, track status, cancel pending jobs, and return download links for jobs your own application submits to the Topaz Image API. Video enhancement requests can be created and started from the agent.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""topazlabs"": {
""url"": ""https://mcp.scalekit.com/topazlabs"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.topazlabs]
url = ""https://mcp.scalekit.com/topazlabs""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""topazlabs"": {
""url"": ""https://mcp.scalekit.com/topazlabs"",
""type"": ""http""
}
}
}