upload_link_create
Create an upload link
Creates a hosted BitterClip upload link for local audio or video files. Use this when the user wants a link or another camera operator will contribute later. capture_session_id adds multiple files or a whole device folder to one footage-session chronology. A link cannot add files directly to an existing episode; files reach one through a footage session for that episode and its capture_session_id.
Surface: Default model and app
Product release eb8538f4a297f331d0399351c1e175bffcd212d2
Public contract commit 20688e11af473a363145ed880d5019c90a7ec1e2
Public contract SHA-256 87a94b85a84dc19245fc03f9b544c70d64bd9f5e08585dcccb38157cace5700d
Captured 2026-10-04T11:55:45.577Z. Review or improve this contract on GitHub.
These blocks show the complete MCP descriptors captured from serving Rails. Security schemes and resource URIs can differ by connected host.
Default model descriptor
{
"name": "upload_link_create",
"title": "Create an upload link",
"description": "Creates a hosted BitterClip upload link for local audio or video files. Use this when the user wants a link or another camera operator will contribute later. capture_session_id adds multiple files or a whole device folder to one footage-session chronology. A link cannot add files directly to an existing episode; files reach one through a footage session for that episode and its capture_session_id.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID, slug, or name to attach uploads to; absent means the default uploads project."
},
"project": {
"type": "string",
"description": "Backward-compatible project name/slug/public ID alias."
},
"capture_session_id": {
"type": "string",
"description": "Optional footage-session public ID. Every uploaded file joins that session and triggers incremental chronology analysis."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "Create an upload link",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}App descriptor
{
"name": "upload_link_create",
"title": "Create an upload link",
"description": "Creates a hosted BitterClip upload link for local audio or video files. Use this when the user wants a link or another camera operator will contribute later. capture_session_id adds multiple files or a whole device folder to one footage-session chronology. A link cannot add files directly to an existing episode; files reach one through a footage session for that episode and its capture_session_id.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID, slug, or name to attach uploads to; absent means the default uploads project."
},
"project": {
"type": "string",
"description": "Backward-compatible project name/slug/public ID alias."
},
"capture_session_id": {
"type": "string",
"description": "Optional footage-session public ID. Every uploaded file joins that session and triggers incremental chronology analysis."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "Create an upload link",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "\"upload_link\" when a shareable upload link is returned."
},
"upload_url": {
"type": "string",
"description": "The token-gated drop-zone page URL for the user."
},
"project": {
"type": "object",
"description": "The resolved project the uploads land in, or null for the default project."
},
"capture_session": {
"type": "object",
"description": "Present for footage-session links: {id, title}."
},
"expires_at": {
"type": "string",
"description": "ISO8601 link expiry."
},
"accepted_content_types": {
"type": "array",
"items": {
"type": "string"
}
},
"max_bytes": {
"type": "integer"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [],
"additionalProperties": false
}
}Live Workspace descriptor
{
"name": "upload_link_create",
"title": "Create an upload link",
"description": "Creates a hosted BitterClip upload link for local audio or video files. Use this when the user wants a link or another camera operator will contribute later. capture_session_id adds multiple files or a whole device folder to one footage-session chronology. A link cannot add files directly to an existing episode; files reach one through a footage session for that episode and its capture_session_id.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID, slug, or name to attach uploads to; absent means the default uploads project."
},
"project": {
"type": "string",
"description": "Backward-compatible project name/slug/public ID alias."
},
"capture_session_id": {
"type": "string",
"description": "Optional footage-session public ID. Every uploaded file joins that session and triggers incremental chronology analysis."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "Create an upload link",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "\"upload_link\" when a shareable upload link is returned."
},
"upload_url": {
"type": "string",
"description": "The token-gated drop-zone page URL for the user."
},
"project": {
"type": "object",
"description": "The resolved project the uploads land in, or null for the default project."
},
"capture_session": {
"type": "object",
"description": "Present for footage-session links: {id, title}."
},
"expires_at": {
"type": "string",
"description": "ISO8601 link expiry."
},
"accepted_content_types": {
"type": "array",
"items": {
"type": "string"
}
},
"max_bytes": {
"type": "integer"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [],
"additionalProperties": false
}
}Errors
[
"invalid_input"
]Examples
[]