Frameo MCP server reference
The Model Context Protocol server that lets AI assistants create with a user's Frameo account. This page is generated from the server's live tool list.
Endpoint
| Server URL | https://mcp.frameo.ai/mcp |
| Transport | Streamable HTTP (MCP) |
| Authentication | OAuth 2.1 with PKCE (S256), scope frameo |
Connecting
| Client | How |
|---|---|
| Claude | Settings → Connectors → Add custom connector, and paste the server URL. |
| ChatGPT | Add a custom app in Settings → Apps, and paste the server URL. |
| Claude Code | claude mcp add --transport http frameo https://mcp.frameo.ai/mcp |
| Cursor | Add to mcp.json: {"mcpServers": {"frameo": {"url": "https://mcp.frameo.ai/mcp"}}} |
On the first call the client opens Frameo's sign-in page. The user signs in with their
Frameo account, picks the workspace the connection starts in, and approves.
switch_workspace later moves the connection to any other workspace the user
belongs to. Disconnecting the connector in the client, or revoking it, ends access.
Directories
The Frameo MCP server is listed in:
Authorization
Clients discover everything from the protected-resource metadata; no client secret is issued, and every client is public and uses PKCE.
| Protected resource metadata | https://mcp.frameo.ai/.well-known/oauth-protected-resource/mcp |
| Authorization server metadata | https://mcp.frameo.ai/.well-known/oauth-authorization-server |
| Authorize | https://mcp.frameo.ai/authorize |
| Token | https://mcp.frameo.ai/token |
| Dynamic client registration | https://mcp.frameo.ai/register |
| Revocation | https://mcp.frameo.ai/revoke |
Client ID metadata documents are accepted in place of registration.
Overview
Errors
A tool that fails returns a result rather than a protocol error. error is a
stable code, hint says what to change, and retryable says whether
the same call may succeed later. A failed paid call states whether work started and what
was charged.
{
"ok": false,
"error": "quote_mismatch",
"hint": "These settings differ from the quoted ones (differs lists each). Nothing was charged, and the quote_id is still valid for its original settings; estimate_cost with the new settings returns a quote for them.",
"differs": {"resolution": {"quoted": "480p", "requested": "720p"}},
"retryable": false
}
Tools (43)
- add_sound_to_library
- add_upload_to_library
- analyze_media
- create_handoff
- create_module
- create_modules
- create_project
- create_share_link
- create_upload_url
- estimate_cost
- extract_frames
- generate_image
- generate_lipsync
- generate_music
- generate_sound_effect
- generate_speech
- generate_video
- get_skill
- get_skill_file
- get_task
- import_media_url
- list_characters
- list_library
- list_models
- list_projects
- list_skills
- poll_credits
- poll_generation
- read_project
- render_motion_graphics
- report_problem
- run_ffmpeg
- save_character
- search_sound_effects
- search_voices
- show_choices
- show_credits
- show_generations
- show_upload
- switch_workspace
- upscale_video
- wait_task
- whoami
add_sound_to_library Writes · free
Save a library sound to a project
| Argument | Type | Default |
|---|---|---|
sound_id |
string |
required |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
add_upload_to_library Writes · free
Add an upload to the project's Library
| Argument | Type | Default |
|---|---|---|
frameo_url |
string |
required |
project_id |
string |
optional |
module_id |
string |
optional |
name |
string |
optional |
analyze_media Uses credits
Analyze a video or audio clip
| Argument | Type | Default |
|---|---|---|
media_url |
string |
required |
question |
string |
required |
project_id |
string |
optional |
module_id |
string |
optional |
confirmed_by_user |
boolean |
False |
create_handoff Writes · free
Open Frameo signed in
| Argument | Type | Default |
|---|---|---|
destination |
string |
required |
create_module Writes · free
Add a module to a project
| Argument | Type | Default |
|---|---|---|
project_id |
string |
required |
name |
string |
required |
create_modules Writes · free
Add several modules to a project
| Argument | Type | Default |
|---|---|---|
project_id |
string |
required |
names |
string[] |
required |
create_project Writes · free
Create a Frameo project
| Argument | Type | Default |
|---|---|---|
name |
string |
required |
aspect_ratio |
string |
'9:16' |
create_upload_url Writes · free
Create an upload link
| Argument | Type | Default |
|---|---|---|
file_name |
string |
required |
estimate_cost Writes · free
Quote the cost of a generation
| Argument | Type | Default |
|---|---|---|
kind |
string |
optional |
count |
integer |
1 |
aspect_ratio |
string |
'9:16' |
project_id |
string |
optional |
module_id |
string |
optional |
duration |
number |
5 |
resolution |
string |
optional |
generate_audio |
boolean |
False |
model |
string |
'seedance_2_5' |
text |
string |
optional |
voice_id |
string |
optional |
image_model |
string |
'nano-banana-pro' |
image_resolution |
string |
optional |
reference_count |
integer |
0 |
first_frame |
boolean |
False |
items |
QuoteItem[] |
optional |
extract_frames Writes · free
Extract frames from a video
| Argument | Type | Default |
|---|---|---|
video_url |
string |
required |
duration |
number |
required |
at_seconds |
number[] |
optional |
project_id |
string |
optional |
module_id |
string |
optional |
generate_image Uses credits
Generate images
| Argument | Type | Default |
|---|---|---|
prompt |
string |
required |
aspect_ratio |
string |
'9:16' |
count |
integer |
1 |
image_urls |
string[] |
optional |
image_model |
string |
'nano-banana-pro' |
image_resolution |
string |
optional |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
shot_number |
integer |
optional |
placement_kind |
string |
optional |
placement_group |
string |
optional |
board_name |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
generate_lipsync Uses credits
Lip-sync a video to a voiceover
| Argument | Type | Default |
|---|---|---|
video_url |
string |
required |
audio_url |
string |
required |
duration |
number |
required |
audio_duration |
number |
optional |
aspect_ratio |
string |
'9:16' |
resolution |
string |
'480p' |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
generate_music Uses credits
Generate a music track
| Argument | Type | Default |
|---|---|---|
prompt |
string |
required |
duration |
integer |
30 |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
generate_sound_effect Uses credits
Generate a sound effect
| Argument | Type | Default |
|---|---|---|
prompt |
string |
required |
duration |
integer |
5 |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
generate_speech Uses credits
Generate a voiceover
| Argument | Type | Default |
|---|---|---|
text |
string |
required |
voice_id |
string |
required |
language_code |
string |
optional |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
generate_video Uses credits
Generate a video
| Argument | Type | Default |
|---|---|---|
prompt |
string |
required |
first_frame_url |
string |
optional |
reference_image_urls |
string[] |
optional |
duration |
integer |
5 |
aspect_ratio |
string |
'9:16' |
resolution |
string |
optional |
generate_audio |
boolean |
False |
model |
string |
'seedance_2_5' |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
shot_number |
integer |
optional |
placement_kind |
string |
optional |
placement_group |
string |
optional |
board_name |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
get_skill Read-only · free
Get a skill's instructions
| Argument | Type | Default |
|---|---|---|
skill_id |
string |
required |
get_skill_file Read-only · free
Get a skill's reference file
| Argument | Type | Default |
|---|---|---|
skill_id |
string |
required |
file_name |
string |
required |
get_task Writes · free
Check generation status
| Argument | Type | Default |
|---|---|---|
generation_ids |
string[] |
required |
kind |
string |
optional |
import_media_url Writes · free
Import media from a link
| Argument | Type | Default |
|---|---|---|
url |
string |
required |
project_id |
string |
optional |
module_id |
string |
optional |
name |
string |
optional |
list_characters Read-only · free
List a project's characters
| Argument | Type | Default |
|---|---|---|
project_id |
string |
optional |
module_id |
string |
optional |
list_library Read-only · free
List a project's Library
| Argument | Type | Default |
|---|---|---|
project_id |
string |
optional |
module_id |
string |
optional |
kind |
string |
optional |
origin |
string |
optional |
cursor |
string |
optional |
list_models Read-only · free
List image and video models
| Argument | Type | Default |
|---|---|---|
kind |
string |
'video' |
list_projects Read-only · free
List Frameo projects
| Argument | Type | Default |
|---|---|---|
query |
string |
optional |
limit |
integer |
10 |
list_skills Read-only · free
List Frameo skills
| Argument | Type | Default |
|---|---|---|
kind |
string |
optional |
poll_credits Read-only · free
Refresh the credits balance
| Argument | Type | Default |
|---|---|---|
credits_needed |
integer |
optional |
poll_generation Read-only · free
Refresh the generations gallery
| Argument | Type | Default |
|---|---|---|
generation_ids |
string[] |
required |
kind |
string |
optional |
read_project Writes · free
Read a project's canvas
| Argument | Type | Default |
|---|---|---|
project_id |
string |
optional |
module_id |
string |
optional |
render_motion_graphics Writes · free
Render a motion-graphics clip from a template
| Argument | Type | Default |
|---|---|---|
template |
string |
required |
reason |
string |
required |
title |
string |
optional |
subtitle |
string |
optional |
lines |
string[] |
optional |
size |
string |
'9:16' |
duration |
number |
5 |
font |
string |
'Inter' |
accent |
string |
optional |
background |
string |
optional |
text_color |
string |
optional |
count_from |
integer |
optional |
count_to |
integer |
optional |
project_id |
string |
optional |
module_id |
string |
optional |
report_problem Writes · free
Report a problem to Frameo
| Argument | Type | Default |
|---|---|---|
title |
string |
required |
description |
string |
required |
problem_type |
string |
required |
trigger |
string |
required |
project_id |
string |
optional |
module_id |
string |
optional |
tool_name |
string |
optional |
run_ffmpeg Writes · free
Run an ffmpeg command
| Argument | Type | Default |
|---|---|---|
inputs |
object[] |
required |
argv |
string[] |
required |
outputs |
object[] |
required |
reason |
string |
required |
sidecars |
object[] |
optional |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
timeout_seconds |
integer |
300 |
save_character Can overwrite · free
Save a character to a project
| Argument | Type | Default |
|---|---|---|
name |
string |
required |
image_urls |
string[] |
required |
project_id |
string |
optional |
module_id |
string |
optional |
description |
string |
optional |
voice_id |
string |
optional |
search_sound_effects Read-only · free
Search the sound-effect library
| Argument | Type | Default |
|---|---|---|
query |
string |
required |
category |
string |
optional |
max_duration |
integer |
optional |
limit |
integer |
8 |
search_voices Read-only · free
Search voices
| Argument | Type | Default |
|---|---|---|
query |
string |
'' |
gender |
string |
'' |
age |
string |
'' |
language |
string |
'' |
accent |
string |
'' |
limit |
integer |
8 |
show_choices Read-only · free
Offer generations to choose from
| Argument | Type | Default |
|---|---|---|
generation_ids |
string[] |
required |
question |
string |
optional |
kind |
string |
optional |
show_credits Read-only · free
Show credits
| Argument | Type | Default |
|---|---|---|
credits_needed |
integer |
optional |
show_generations Read-only · free
Show generations
| Argument | Type | Default |
|---|---|---|
generation_ids |
string[] |
required |
kind |
string |
optional |
final |
boolean |
False |
share_title |
string |
optional |
share_description |
string |
optional |
show_upload Read-only · free
Upload files to Frameo
| Argument | Type | Default |
|---|---|---|
project_id |
string |
optional |
module_id |
string |
optional |
switch_workspace Writes · free
Switch the Frameo workspace
| Argument | Type | Default |
|---|---|---|
workspace_id |
string |
required |
upscale_video Uses credits
Upscale a video
| Argument | Type | Default |
|---|---|---|
video_url |
string |
required |
duration |
number |
required |
factor |
number |
2.0 |
aspect_ratio |
string |
'9:16' |
resolution |
string |
'480p' |
project_id |
string |
optional |
module_id |
string |
optional |
request_text |
string |
optional |
quote_id |
string |
optional |
confirmed_by_user |
boolean |
False |
wait_task Writes · free
Wait for generations to finish
| Argument | Type | Default |
|---|---|---|
generation_ids |
string[] |
required |
timeout_seconds |
integer |
50 |
kind |
string |
optional |
whoami Read-only · free
Check the Frameo connection
No arguments.