Workflow MCP Tools
The FoxCue workflow MCP profile has 55 tools. These are the tools that the directory profile does not include.
The workflow profile has 55 tools: 31 workflow tools, 16 brand-setup tools, 3 video-claim tools and 5 library tools. The 35 directory tools are documented on Directory MCP tools. This page is the other 20.
Which profile is live depends on your workspace configuration. If the workspace uses the directory profile, these tools are not registered.
| Tool | Title | Read only | Scopes |
|---|---|---|---|
preview_video_claim | Preview a video claim | yes | outputs:read |
claim_video | Claim a finished video | no | media:write |
inspect_video_claim | Inspect a video claim | yes | outputs:read |
library_search | Search the template Library | yes | none declared on the tool |
library_ideas | List logged reference ideas | yes | none declared on the tool |
library_log_idea | Log a reference idea | no | none declared on the tool |
library_submit_template | Submit a template | no | none declared on the tool |
library_submission | Read a submission | yes | none declared on the tool |
discover_targets | Discover proposed target questions | no | strategy:read, strategy:write, knowledge:read, generation:write |
review_targets | Review target suggestions | no | strategy:read, strategy:write, knowledge:read |
inspect_production | Inspect an editable video | yes | outputs:read |
edit_video | Edit an owned recording | no | media:write, generation:write |
render_video | Render a reviewed video | no | generation:write |
prepare_publication | Prepare a publication draft | no | publishing:write |
update_publication | Save reviewed publication metadata | no | publishing:write |
submit_publication | Submit an explicitly authorized publication | no | publishing:publish |
read_measurement_report | Read retained measurement evidence | yes | none declared on the tool |
check_citations | Run bounded citation checks | no | performance:write, strategy:read, knowledge:read |
schedule_citation_checks | Schedule budgeted citation checks | no | performance:write, strategy:read, knowledge:read |
pause_citation_schedule | Pause or resume citation tracking | no | performance:write |
A successful call returns content[0].text as JSON and, when an output schema exists, structuredContent.result. A 204 from the API becomes {ok: true}. Failures set isError: true and content[0].text to JSON {error}. The error string is API <status>: <message>, or Could not reach the configured FoxCue API. Input that fails the schema is rejected by the MCP SDK before the tool runs.
If the API returns 403 because the grant lacks brands:write or performance:write, the message tells you to remove the connector and add it again, then approve that permission.
preview_video_claim
Preview a supplied one-use claim code in the connected existing workspace. Check the brand, video and recipient workspace with the user before claiming. Does not consume the code, generate media, create an account or start a subscription. Keep the code private.
Scopes on the tool: outputs:read.
Read only: yes. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
code | yes | string | no |
{
"name": "preview_video_claim",
"arguments": {
"code": "example"
}
}Output
structuredContent.result: The authoritative claim preview or durable copy receipt.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
claim_video
After preview and explicit user confirmation, consume the one-use code and queue an exact copy of its editable video and finished output into the connected existing workspace. Set confirm=true only for authorized claims. No provider call, generation, account or subscription creation. Reuse the same idempotency_key after timeouts and inspect the returned claim_id for progress.
Scopes on the tool: media:write.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
code | yes | string | no | |
confirm | yes | boolean | no | |
idempotency_key | yes | string | no |
{
"name": "claim_video",
"arguments": {
"code": "example",
"confirm": true,
"idempotency_key": "example"
}
}Output
structuredContent.result: The authoritative claim preview or durable copy receipt.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
inspect_video_claim
Read an existing claim in this workspace. While the saved video is being copied, keep polling this claim_id. A completed claim returns its editable video and finished output links. This does not rerender or generate media.
Scopes on the tool: outputs:read.
Read only: yes. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
claim_id | yes | string | no | minLength 1; maxLength 128 |
{
"name": "inspect_video_claim",
"arguments": {
"claim_id": "example"
}
}Output
structuredContent.result: The authoritative claim preview or durable copy receipt.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
library_search
Search listed Library templates before building, so you never submit a duplicate. mine=true lists every template this workspace submitted, with status and checks. Requires library:read.
Scopes on the tool: none declared. The underlying API still checks its own scope.. Read only: yes. Idempotent hint: no.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
q | no | string | no | maxLength 120 |
category | no | string | no | one of launch, product-explainer, dashboard, kinetic-type, captions, presenter, social-hook, transition |
mine | no | boolean | no |
{
"name": "library_search",
"arguments": {
"q": "example",
"category": "launch",
"mine": true
}
}Output
This tool does not declare an output schema. The text content is the raw API JSON.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
library_ideas
List the reference ideas this workspace logged (source URL, creator, why, status). Requires library:read.
Scopes on the tool: none declared. The underlying API still checks its own scope.. Read only: yes. Idempotent hint: no.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
q | no | string | no | maxLength 120 |
{
"name": "library_ideas",
"arguments": {
"q": "example"
}
}Output
This tool does not declare an output schema. The text content is the raw API JSON.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
library_log_idea
Log a reference worth turning into a template: its URL, the creator, why it is good and your frame-by-frame breakdown (shots with timing, motion and easing, type, colours, transitions). Logging the same URL again returns the existing idea. Requires library:write.
Scopes on the tool: none declared. The underlying API still checks its own scope.. Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
source_url | yes | string | no | maxLength 2000 |
creator | no | string | no | maxLength 120; default |
title | yes | string | no | minLength 1; maxLength 160 |
why | no | string | no | maxLength 2000; default |
kind | no | string | no | one of launch, product-explainer, dashboard, kinetic-type, captions, presenter, social-hook, transition; default other |
breakdown | no | object | no | default {} |
{
"name": "library_log_idea",
"arguments": {
"source_url": "example",
"creator": "example",
"title": "example",
"why": "example",
"kind": "launch",
"breakdown": {}
}
}Output
This tool does not declare an output schema. The text content is the raw API JSON.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
library_submit_template
Submit a FoxCue template as a Style folder: files maps package paths (style.json required; style.md, README.md, design/.md, kit/kit.css + kit/kit.js, recipes/<id>/scene.html|css|js|props.json|recipe.json, assets/ as data URLs declared in template.assets) to text. Keep the reference creator's people, names, logos and copy out: they go in credits. review carries the breakdown and side-by-side frames (reference vs FoxCue at the same second), which only the reviewer sees. Automatic checks run at once; a passing template waits for FoxCue review. Pass entry_id to add a revision. Requires library:write.
Scopes on the tool: none declared. The underlying API still checks its own scope.. Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
entry_id | no | string | no | |
slug | no | string | no | |
name | yes | string | no | minLength 1; maxLength 80 |
summary | no | string | no | maxLength 300; default |
category | no | string | no | one of launch, product-explainer, dashboard, kinetic-type, captions, presenter, social-hook, transition; default other |
files | yes | object | no | |
credits | no | object | no | |
review | no | object | no | |
idea_id | no | string | no | |
change_summary | no | string | no | maxLength 300; default |
{
"name": "library_submit_template",
"arguments": {
"name": "example",
"files": {}
}
}Output
This tool does not declare an output schema. The text content is the raw API JSON.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
library_submission
Read a submission's status (draft: checks failed, checked: waiting for review, listed, parked with a reason), its check issues and warnings, and revisions. Fix issues with library_submit_template and entry_id. Requires library:read.
Scopes on the tool: none declared. The underlying API still checks its own scope.. Read only: yes. Idempotent hint: no.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
id | yes | string | no | minLength 1; maxLength 64 |
{
"name": "library_submission",
"arguments": {
"id": "example"
}
}Output
This tool does not declare an output schema. The text content is the raw API JSON.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
discover_targets
Generate proposed keywords and buyer questions from current public source evidence. Suggestions remain unapproved; provider charges may apply. Preserve the stable request key.
Scopes on the tool: strategy:read, strategy:write, knowledge:read, generation:write.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
project_id | yes | string | no | minLength 1; maxLength 100 |
silo_id | yes | string | no | minLength 1; maxLength 100 |
source_id | no | string | no | minLength 1; maxLength 100 |
idempotency_key | yes | string | no | minLength 8; maxLength 150 |
expected_source_revision | no | integer | no |
{
"name": "discover_targets",
"arguments": {
"project_id": "example",
"silo_id": "example",
"source_id": "example",
"idempotency_key": "example-key",
"expected_source_revision": 1
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
review_targets
Explicitly approve edited suggestions or dismiss them using the current source revision and discovery receipt. Only use approve when authorized by the human. This action does not start paid checks.
Scopes on the tool: strategy:read, strategy:write, knowledge:read.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
project_id | yes | string | no | minLength 1; maxLength 100 |
silo_id | yes | string | no | minLength 1; maxLength 100 |
source_id | no | string | no | minLength 1; maxLength 100 |
discovery_id | yes | string | no | minLength 1 |
idempotency_key | yes | string | no | minLength 8; maxLength 150 |
expected_source_revision | no | integer | no | |
locale | no | string | no | default en-US |
candidates | yes | array | no |
{
"name": "review_targets",
"arguments": {
"project_id": "example",
"silo_id": "example",
"source_id": "example",
"discovery_id": "example",
"idempotency_key": "example-key",
"expected_source_revision": 1,
"locale": "example",
"candidates": [
{
"id": "example",
"action": "approve",
"text": "example",
"question": "example",
"entities": [
"example"
],
"required_answers": [
"example"
]
}
]
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
inspect_production
Read an owned composition, resolved timeline and current revision before editing/rendering. Original recordings and audio remain referenced.
Scopes on the tool: outputs:read.
Read only: yes. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
composition_id | yes | string | no | minLength 1; maxLength 100 |
{
"name": "inspect_production",
"arguments": {
"composition_id": "example"
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
edit_video
Queue the existing recording edit pipeline with original narration, sourced Library cutaways and supported style/caption treatments. Choose exactly one media_id or recording_id. Re-edits require the existing composition and base revision. No automatic publishing.
Scopes on the tool: media:write, generation:write.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
input | yes | object | no |
{
"name": "edit_video",
"arguments": {
"input": {
"idempotency_key": "example-key"
}
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
render_video
Render the current reviewed composition revision into an output with original recorded audio. Keep the same idempotency key; interrupted work is surfaced rather than silently replayed.
Scopes on the tool: generation:write.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
composition_id | yes | string | no | minLength 1; maxLength 100 |
base_revision | yes | integer | no | minimum 1 |
idempotency_key | yes | string | no | minLength 8; maxLength 128 |
{
"name": "render_video",
"arguments": {
"composition_id": "example",
"base_revision": 1,
"idempotency_key": "example-key"
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
prepare_publication
Create a draft from a completed owned video output and selected connected channel. This does not upload, release, schedule, approve metadata or grant Google consent.
Scopes on the tool: publishing:write.
Read only: no. Idempotent hint: no.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
project_id | yes | string | no | minLength 1; maxLength 128 |
artifact_id | yes | string | no | minLength 1; maxLength 128 |
video_id | no | string | no | minLength 1; maxLength 128 |
connection_id | yes | string | no | minLength 1; maxLength 128 |
{
"name": "prepare_publication",
"arguments": {
"project_id": "example",
"artifact_id": "example",
"video_id": "example",
"connection_id": "example"
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
update_publication
Save title, description, tags, disclosure, thumbnail and desired release metadata on an exact draft revision. This does not submit external delivery.
Scopes on the tool: publishing:write.
Read only: no. Idempotent hint: no.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
draft_id | yes | string | no | minLength 1; maxLength 100 |
expected_revision | yes | integer | no | |
metadata | yes | object | no |
{
"name": "update_publication",
"arguments": {
"draft_id": "example",
"expected_revision": 1,
"metadata": {
"title": "example",
"description": "example",
"tags": [
"example"
],
"category_id": "example",
"made_for_kids": true,
"contains_synthetic_media": true,
"visibility": "private"
}
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
submit_publication
EXTERNAL WRITE: upload/release or schedule the exact reviewed draft revision to its chosen YouTube channel. Requires explicit human authorization for this delivery and publishing:publish. Script generation or draft creation does not authorize publication. Reuse the same key after a timeout.
Scopes on the tool: publishing:publish.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
draft_id | yes | string | no | minLength 1; maxLength 100 |
expected_revision | yes | integer | no | |
idempotency_key | yes | string | no | minLength 8; maxLength 128 |
{
"name": "submit_publication",
"arguments": {
"draft_id": "example",
"expected_revision": 1,
"idempotency_key": "example-key"
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
read_measurement_report
Read either scoped citation history or one cached supported YouTube Analytics report. Citation samples, search data and private Analytics remain distinct. Missing/failed checks are unknown, never zero. This read does not run a new paid query.
Scopes on the tool: none declared. The underlying API still checks its own scope..
By kind: citations needs strategy:read, knowledge:read, performance:read, youtube needs performance:read.
Read only: yes. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
report | yes | yes |
{
"name": "read_measurement_report",
"arguments": {
"report": {
"kind": "citations",
"scope": {
"project_id": "example",
"silo_id": "example",
"source_id": "example"
}
}
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
check_citations
PAID EXTERNAL CHECKS: test explicitly approved current targets on selected engines within a per-call cost cap. Preserve key after uncertain outcomes; failed engines do not count as negatives. No schedule is created.
Scopes on the tool: performance:write, strategy:read, knowledge:read.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
project_id | yes | string | no | minLength 1; maxLength 100 |
silo_id | yes | string | no | minLength 1; maxLength 100 |
source_id | no | string | no | minLength 1; maxLength 100 |
idempotency_key | yes | string | no | minLength 8; maxLength 150 |
target_ids | yes | array | no | |
engines | yes | array | no | |
max_cost_usd | no | number | no | minimum 0.01; maximum 2; default 0.25 |
{
"name": "check_citations",
"arguments": {
"project_id": "example",
"silo_id": "example",
"source_id": "example",
"idempotency_key": "example-key",
"target_ids": [
"example"
],
"engines": [
"chatgpt"
],
"max_cost_usd": 0.25
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
schedule_citation_checks
Create explicit recurring checks for approved targets, engines, cadence and finite budget. This authorizes recurring provider spend only when requested by the human. No immediate check is implied.
Scopes on the tool: performance:write, strategy:read, knowledge:read.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
project_id | yes | string | no | minLength 1; maxLength 100 |
silo_id | yes | string | no | minLength 1; maxLength 100 |
source_id | no | string | no | minLength 1; maxLength 100 |
idempotency_key | yes | string | no | minLength 8; maxLength 150 |
target_ids | yes | array | no | |
engines | yes | array | no | |
cadence_hours | yes | integer | no | minimum 24; maximum 720 |
max_cost_usd | yes | number | no | minimum 0.01; maximum 2 |
budget_usd | yes | number | no | minimum 0.01; maximum 25 |
{
"name": "schedule_citation_checks",
"arguments": {
"project_id": "example",
"silo_id": "example",
"idempotency_key": "example-key",
"target_ids": [
"example"
],
"engines": [
"chatgpt"
],
"cadence_hours": 24,
"max_cost_usd": 0.01,
"budget_usd": 0.01
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.
pause_citation_schedule
Pause or explicitly resume one scoped saved schedule. Resume continues already authorized remaining budget; provider/source permissions are revalidated.
Scopes on the tool: performance:write.
Read only: no. Idempotent hint: yes.
Input
| Field | Required | Type | Nullable | Rules |
|---|---|---|---|---|
schedule_id | yes | string | no | minLength 1; maxLength 100 |
project_id | yes | string | no | minLength 1; maxLength 100 |
silo_id | yes | string | no | minLength 1; maxLength 100 |
source_id | no | string | no | minLength 1; maxLength 100 |
paused | yes | boolean | no |
{
"name": "pause_citation_schedule",
"arguments": {
"schedule_id": "example",
"project_id": "example",
"silo_id": "example",
"source_id": "example",
"paused": true
}
}Output
structuredContent.result: The authoritative API result; missing metrics and provider acknowledgments remain explicit.
The output schema types result as unknown. The value is whatever the API operation returns. No fields are invented here.
Errors
Invalid input is rejected by the MCP SDK before the handler. A failed API call returns API <status>: <message> using the API error string, or Request failed. when the body has none. Network failures return Could not reach the configured FoxCue API. Calls time out after 30 seconds.