MCP Remote Tools (V1)
Page role: this page defines ReelForger MCP V1 as a thin remote tool layer over the existing API.
V1 goals and non-goals
- Goal: make ReelForger easier for agents to call via a small MCP tool surface.
- Goal: keep raw ReelForger API endpoints as the source of truth.
- Non-goal: MCP V1 is not a planning engine. It only exposes execution and validation tools over ReelForger.
Transport and auth
- Transport: remote HTTP MCP server (
POST /mcpJSON-RPC). - Endpoint:
https://mcp.reelforger.com/mcp - Auth (V1): pass-through per-user ReelForger API key.
- MCP caller sends
Authorization: Bearer <REELFORGE_API_KEY>. - MCP forwards that same header to ReelForger API.
- MCP caller sends
When to use MCP vs raw API
- Use MCP for agent/tool-native execution where calling tools is easier than hand-crafting HTTP requests.
- Use raw API for direct HTTP integrations and lower-level contract control.
- Raw API remains source of truth; MCP mirrors a focused subset for agent ergonomics.
Tool surface (required)
-
render_recipe- Wraps
POST https://api.reelforger.com/v1/recipes/render - Input:
{ request: <exact recipe render body> } - Output:
{ ok, request_id, data: { job_id } }
- Wraps
-
render_timeline- Wraps
POST https://api.reelforger.com/v1/videos/render - Input:
{ request: <exact timeline render body> } - Output:
{ ok, request_id, data: { job_id } }
- Wraps
-
validate_request- Explicit use guidance:
mode: "timeline": full server validation viaPOST /v1/videos/validate(no queue, no credits).mode: "recipe": lightweight shape checks only (there is no dedicated recipe validate endpoint in API V1).
- Input:
{ mode: "recipe" | "timeline", request: <payload> } - Output:
{ ok, request_id?, data: { mode, validation_scope, ... } }
- Explicit use guidance:
-
get_job_status- Wraps
GET https://api.reelforger.com/v1/jobs/{jobId} - Input:
{ job_id } - Output:
{ ok, request_id, data: <job object> }
- Wraps
Optional tools (non-blocking for V1 launch)
Secondary helper tools:
get_supported_patternsget_caption_presets
Both return curated static MCP-side catalogs (not dynamic docs scraping).
Current caveats
validate_requestwithmode: "recipe"is lightweight by design (shape checks only).- Full server-side validation parity exists for
validate_requestwithmode: "timeline". - OpenAPI and raw API endpoints remain the canonical contract source.
Canonical MCP flow (inline transcription)
When caption words are omitted, ReelForger may transcribe automatically during render:
tools/call→render_recipe- Receive
job_id - Poll
tools/call→get_job_statusuntil terminal status
Example request/response sequence:
{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/call",
"params": {
"name": "render_recipe",
"arguments": {
"request": {
"recipe_id": "captioned_clip",
"style_preset": "karaoke_yellow",
"variables": {
"primary_video_url": "https://pub-2ad5592bc4ca44abb609acfc0b7c5ceb.r2.dev/reel-forge-website-assets/talking%20head%20runner.mp4",
"layout_variant": "full_frame"
}
}
}
}
}
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"structuredContent": {
"ok": true,
"request_id": "req_abc123",
"data": {
"job_id": "8f1fd0fe-63a5-4fef-8f2c-8f1225f6d309"
}
}
}
}
{
"jsonrpc": "2.0",
"id": "2",
"method": "tools/call",
"params": {
"name": "get_job_status",
"arguments": {
"job_id": "8f1fd0fe-63a5-4fef-8f2c-8f1225f6d309"
}
}
}
{
"jsonrpc": "2.0",
"id": "2",
"result": {
"structuredContent": {
"ok": true,
"request_id": "req_def456",
"data": {
"id": "8f1fd0fe-63a5-4fef-8f2c-8f1225f6d309",
"status": "completed",
"output_url": "https://assets.reelforger.com/user_x/job_y.mp4",
"billing": {
"transcription_credit_cost": 3,
"transcription_duration_seconds_billed": 14.6,
"render_credit_cost": 6,
"total_credit_cost": 9
}
}
}
}
}