Pular para o conteúdo

Todas as tools MCP

Esta referência descreve as 18 tools registradas no Infinity Flow. Os caminhos REST são relativos a https://infinityflow.stream/api/v1. Argumentos são objetos JSON estritos: campos desconhecidos são rejeitados. IDs e requestKeys dos exemplos são placeholders; use IDs retornados pela sua conta e gere um UUID novo para cada nova intenção de criação.

Cada scope listado é obrigatório, além de plano base ativo e direito à automação. {} significa sem argumentos. Os nomes de saída correspondem aos formatos exatos abaixo.

Tool Scope REST Exemplo de argumentos Saída
get_account account:read GET /account {} Account
get_usage usage:read GET /usage {} Usage
list_models account:read GET /models {} Models
list_projects projects:read GET /projects {} Projects
create_project projects:write POST /projects {"requestKey":"11111111-1111-4111-8111-111111111111","name":"Campaign"} CreatedProject
update_project projects:write PATCH /projects/{id} {"id":"22222222-2222-4222-8222-222222222222","name":"Campaign 2"} OK
delete_project projects:write DELETE /projects/{id} {"id":"22222222-2222-4222-8222-222222222222"} OK
list_references references:read GET /references {} References
upload_reference references:write POST /references {"requestKey":"33333333-3333-4333-8333-333333333333","projectId":"22222222-2222-4222-8222-222222222222","filename":"reference.png","data":"BASE64_IMAGE_BYTES"} UploadedReference
delete_reference references:write DELETE /references/{id} {"id":"33333333-3333-4333-8333-333333333333"} OK
create_video generations:write POST /generations {"requestKey":"44444444-4444-4444-8444-444444444444","prompt":"A forest at sunrise","aspect":"16:9"} GenerationResult
create_image generations:write POST /generations {"requestKey":"55555555-5555-4555-8555-555555555555","prompt":"A forest at sunrise","aspect":"9:16"} GenerationResult
create_batch generations:write POST /batches {"requestKey":"66666666-6666-4666-8666-666666666666","items":[{"prompt":"A forest at sunrise","aspect":"16:9","mediaKind":"video"}]} BatchResult
get_batch generations:read GET /batches/{id} {"id":"66666666-6666-4666-8666-666666666666"} BatchResult
get_generation generations:read GET /generations/{id} {"id":"77777777-7777-4777-8777-777777777777"} GenerationResult
list_generations generations:read GET /generations {"projectId":"22222222-2222-4222-8222-222222222222"} Generations
cancel_generation generations:write POST /generations/{id}/cancel {"id":"77777777-7777-4777-8777-777777777777"} OK
get_download_url media:read GET /generations/{id}/outputs/0/download-ticket {"id":"77777777-7777-4777-8777-777777777777"} DownloadTicket
Tools Campos obrigatórios Opcionais e comportamento
get_account, get_usage, list_models, list_projects, list_references Nenhum Nenhum
create_project requestKey: UUID; name: string sem espaços nas extremidades, 1–100 caracteres Nenhum; mesma chave/nome recupera a criação original
update_project id: UUID do projeto; name: string sem espaços nas extremidades, 1–100 caracteres Nenhum
delete_project id: UUID do projeto Nenhum; trabalho não concluído ou referências usadas por pedidos pendentes podem bloquear a exclusão
upload_reference requestKey: UUID; projectId: UUID; filename: 1–150 caracteres; data: bytes da imagem em base64 Não recebe URL remota ou data URL; até 11.200.000 caracteres base64 e 8 MiB decodificados; tipo real da imagem validado
delete_reference id: UUID da referência Nenhum; referências usadas por trabalho pendente ficam protegidas
create_video, create_image requestKey: UUID e campos obrigatórios de GenerationInput Opcionais de GenerationInput; não envie mediaKind nem model: a tool escolhe o tipo
create_batch requestKey: UUID; items: array com 1–100 objetos GenerationInput Também respeita o plano: Creator 3, Pro 20, Enterprise 100; sem requestKey em cada item
get_batch id: UUID do lote Nenhum
get_generation, cancel_generation, get_download_url id: UUID da geração Nenhum; índice de saída sempre 0
list_generations Nenhum cursor: string até 100 caracteres, repita nextCursor sem alterar; projectId: UUID para filtrar; página fixa de até 24 itens
Campo Obrigatoriedade Tipo e valores aceitos
prompt Obrigatório String não vazia, sem espaços nas extremidades, até 4.000 caracteres
aspect Obrigatório 16:9 ou 9:16
title Opcional String até 100 caracteres
projectId Opcional UUID do seu projeto privado
referenceIds Opcional Array de até 3 UUIDs distintos de referência
referenceId Opcional UUID de uma referência, campo de compatibilidade
durationSeconds Opcional Somente 10; não habilita duração arbitrária
outputCount Opcional Somente 1; use lote para vários jobs
mediaKind Somente itens do lote video ou image; omitido significa vídeo
model Somente itens do lote studio-video ou studio-image; deve corresponder ao tipo

Use uma convenção de campo de referência de forma consistente. As entradas continuam sujeitas à validação de ownership e geração; aceitar o schema não contorna essas verificações. A tool de imagem aceita os campos compartilhados de duração/saída, mas duração não configura animação de imagem. Consulte list_models; não existe campo público de resolução.

Uma tool bem-sucedida retorna o JSON REST sem alteração em structuredContent.result e o mesmo JSON serializado em content[0].text:

{
"structuredContent": {
"result": {
"generation": {
"id": "77777777-7777-4777-8777-777777777777",
"state": "queued"
}
}
},
"content": [
{
"type": "text",
"text": "{\"generation\":{\"id\":\"77777777-7777-4777-8777-777777777777\",\"state\":\"queued\"}}"
}
]
}

A geração foi abreviada para ilustrar o envelope; o formato completo está abaixo. Criações são aceitas de forma assíncrona (status REST 202), não concluídas na chamada. O payload da tool não expõe o status HTTP REST nem seu header Location.

Falhas de execução retornam isError: true e bloco textual contendo o JSON de erro. Exceções usam {error:{code,message,requestId,details?,usage?}}. Erros de domínio delegados podem retornar o formato existente {error: string}; confira isError e interprete o corpo sem presumir campos iguais em todos os erros. Erros de protocolo/schema e autenticação HTTP ocorrem fora do envelope de execução da tool.

{
"isError": true,
"content": [
{
"type": "text",
"text": "{\"error\":{\"code\":\"INSUFFICIENT_SCOPE\",\"message\":\"This credential does not permit this operation.\",\"requestId\":\"88888888-8888-4888-8888-888888888888\"}}"
}
]
}

Estes formatos descrevem structuredContent.result. ? significa opcional, null é valor JSON; timestamps ISO são strings UTC ISO 8601. Timestamps de projeto/referência são milissegundos Unix, não strings ISO.

Account = {
account: { id: UUID, name: string },
entitlements: {
planId: "legacy"|"creator"|"pro"|"enterprise"|null,
active: boolean, automationEnabled: boolean,
dailyVideoLimit: integer|null, maxBatchSize: integer,
maxOutstandingJobs: integer, maxActiveGenerations: 1, priority: integer,
legacyPriceLocked: boolean, basePriceMinor: integer|null,
currency: string|null, market: string|null, intervalMonths: integer|null,
validFrom: epochMilliseconds, validUntil: epochMilliseconds|null,
policyVersion: string
}
}
Usage = {
date: "YYYY-MM-DD", timeZone: "America/Sao_Paulo", resetsAt: ISO,
limit: integer|null, reserved: integer, consumed: integer,
remaining: integer|null
}
Models = { models: [
{ id: "studio-video", kind: "video", durationSeconds: 10,
aspects: ["16:9","9:16"], maxReferences: 3 },
{ id: "studio-image", kind: "image",
aspects: ["16:9","9:16"], maxReferences: 3 }
] }
Projects = { projects: [{id: UUID, name: string, createdAt: epochMilliseconds,
updatedAt: epochMilliseconds}] }
CreatedProject = { project: {id: UUID, name: string, created: epochMilliseconds,
updated: epochMilliseconds} }
References = { references: [{id: UUID, projectId: UUID, filename: string,
mime: string, size: integer, createdAt: epochMilliseconds}] }
UploadedReference = { reference: {id: UUID, filename: string} }
GenerationResult = { generation: Generation }
BatchResult = { batch: {id: UUID, generations: Generation[]} }
Generations = { generations: Generation[], nextCursor: string|null }
OK = { ok: true }
DownloadTicket = { url: string }
Generation = {
id: UUID, projectId: UUID, batchId?: UUID|null, batchIndex?: integer|null,
title: string, mediaKind: "video"|"image",
model: "studio-video"|"studio-image", aspect: "16:9"|"9:16",
state: "queued"|"processing"|"succeeded"|"failed"|"cancelled"|"attention_required",
createdAt: ISO, updatedAt: ISO, readyAt: ISO|null, expiresAt: ISO|null,
outputs: [{ index: 0, mime: string, kind: "video"|"image", size: integer,
downloadAvailable: boolean, expiresAt: ISO,
downloadUrl: string|null, playUrl: string|null, thumbnailUrl: string|null }]
}

outputs fica vazio antes do resultado disponível. URLs dentro de Generation apontam para endpoints REST autenticados; a URL de get_download_url é assinada temporariamente, com validade de até 90 segundos, reduzida perto da expiração da mídia. Nunca encaminhe o header Authorization Infinity Flow para o host de armazenamento. Mídia disponível por 24 horas do ready time; solicite novo ticket nessa janela se necessário.

list_projects retorna até 100 registros; list_references, até 100. Não retornam cursor. list_generations retorna até 24 e nextCursor anulável. get_batch preserva a ordem de apresentação dos itens; não promete execução paralela nem naquela ordem.

Persista requestKey e payload antes de chamar create_project, upload_reference, create_video, create_image ou create_batch. MCP transforma requestKey no header REST Idempotency-Key. Reutilize os dois após timeout; alterar o payload com a mesma chave produz IDEMPOTENCY_CONFLICT. IDs JSON-RPC não são chaves duráveis de geração. Renomear, excluir e cancelar não recebem requestKey.

Admissão do lote é tudo ou nada; resultados posteriores são por geração. Cancelamento retorna {ok:true} quando permitido, não um novo objeto Generation. Lease ativo ou submissão iniciada podem gerar conflito; cancelamento não repete nem cancela cegamente trabalho pago incerto.

Erros comuns: INVALID_CREDENTIAL (autenticação expirada/revogada), AUTOMATION_REQUIRED (plano/adicional), INSUFFICIENT_SCOPE, REQUEST_RATE_LIMIT, DAILY_VIDEO_LIMIT, BATCH_LIMIT, INVALID_PARAMETER, INVALID_CURSOR, INVALID_REFERENCE, REFERENCE_TOO_LARGE, IDEMPOTENCY_CONFLICT e NOT_FOUND. Alguns conflitos de domínio usam REQUEST_REJECTED. Consulte uso/reset na falha de cota; não troque de chave para contorná-la. Trate falhas HTTP de autenticação/taxa antes de interpretar resultado de tool.

Para transporte e autorização: conexão e OAuth. Detalhes REST e erros estão na referência da API.