flat-mcp
Integrates with the Flat.io REST API to manage music scores: list and find scores and collections, inspect score metadata and measures, read MusicXML, edit measures or text by creating validated new revisions with dry-run support, restore previous revisions, update metadata, create or fork scores, and export scores to PDF, PNG, MusicXML, MXL, MIDI, MP3, and WAV.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flat-mcpshow me my recent Flat.io scores"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
flat-mcp — edite suas partituras do Flat.io pelo Claude
Criado por @eubrunodiego · 2026-10-27
Servidor MCP local que conecta o Claude (app desktop) diretamente à REST API do Flat.io usando a sua conta, por meio de um token pessoal. Com ele, o Claude consegue listar, ler, editar, restaurar, exportar e criar partituras.
Por que não usar o conector oficial do Flat?
O Flat oferece um servidor MCP oficial (https://mcp.flat.io/mcp), mas ele
só lê e cria partituras — não edita as existentes — e exige assinatura
Flat Power. Esta integração fala direto com a REST API, onde editar é possível.
Related MCP server: overleaf-mcp
Como a edição funciona
A API do Flat não altera notas "no lugar": cada edição grava uma nova revisão
da partitura (POST /scores/{id}/revisions). O fluxo de cada ferramenta de edição é:
baixa a última revisão em MusicXML;
aplica a alteração (troca de compassos ou substituição exata de texto);
valida o XML — se ficar inválido, nada é gravado;
grava a nova revisão com uma descrição do que mudou.
Nada é apagado. Para desfazer, peça ao Claude para restaurar uma revisão anterior.
Atenção: a documentação do Flat avisa que a última revisão pode não refletir alterações muito recentes feitas no editor web (ele consolida revisões a cada ~100 modificações). Antes de editar pela API, feche a partitura no navegador ou salve uma revisão manualmente, para não sobrescrever trabalho recente.
1. Gere seu token pessoal
Acesse https://flat.io/developers/apps e crie um app (ex.: "Claude").
No menu lateral, abra REST API → Personal tokens.
Dê um nome ao token e marque os escopos:
scores,collectionseaccount.public_profile.Copie o token e guarde-o — ele dá acesso total às suas partituras.
2. Instale
2.1 Instale o uv
O uv instala o Python e as dependências sozinho.
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Anote o caminho completo do executável, que será usado no passo 3:
which uv # macOS/Linux — ex.: /Users/voce/.local/bin/uvwhere.exe uv # Windows — ex.: C:\Users\voce\.local\bin\uv.exe2.2 Baixe este repositório
Coloque-o num local fixo (não mova a pasta depois de configurar):
git clone https://github.com/eubrunodiego/flat-mcp.git ~/flat-mcpSem git, use Code → Download ZIP no GitHub e descompacte em ~/flat-mcp.
2.3 Teste a conexão
cd ~/flat-mcp
FLAT_ACCESS_TOKEN=cole-seu-token-aqui uv run python -c "from flat_mcp import FlatClient; print(FlatClient().me()['username'])"Se aparecer seu nome de usuário do Flat, está tudo certo.
cd ~/flat-mcp
python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install .No passo 3, use como command o caminho completo de .venv/bin/flat-mcp
(Windows: .venv\Scripts\flat-mcp.exe) e deixe args vazio.
3. Conecte ao Claude
3.1 Claude desktop (macOS e Windows)
No app Claude, abra Configurações → Desenvolvedor → Editar configuração. Isso abre o arquivo
claude_desktop_config.json:macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Acrescente a chave
mcpServersno nível de cima do arquivo, ao lado das chaves que já existem (não dentro depreferences). Lembre da vírgula depois do bloco anterior:
{
"preferences": { "...": "o que já existia no seu arquivo" },
"mcpServers": {
"flat": {
"command": "/CAMINHO/COMPLETO/DO/uv",
"args": ["--directory", "/CAMINHO/COMPLETO/flat-mcp", "run", "flat-mcp"],
"env": {
"FLAT_ACCESS_TOKEN": "cole-seu-token-aqui",
"FLAT_EXPORT_DIR": "/CAMINHO/onde/salvar/exportacoes"
}
}
}
}command: o caminho completo douvanotado no passo 2.1. Use o caminho completo — o app nem sempre enxerga o PATH do terminal.--directory: o caminho completo da pasta deste repositório.No Windows, escreva as barras dobradas:
"C:\\Users\\voce\\flat-mcp".FLAT_EXPORT_DIRé opcional (padrão: pasta Downloads).
Confira se o JSON é válido:
python3 -m json.tool "$HOME/Library/Application Support/Claude/claude_desktop_config.json" > /dev/null && echo "JSON OK"Feche o Claude por completo (⌘Q no macOS; no Windows, saia pelo ícone da bandeja) e abra de novo. As ferramentas
flat_*aparecem no menu de ferramentas da conversa. Peça "teste a conexão com o Flat" para confirmar.
3.2 Claude Code (terminal)
claude mcp add flat --scope user \
--env FLAT_ACCESS_TOKEN=cole-seu-token-aqui \
-- uv --directory ~/flat-mcp run flat-mcpConfira com claude mcp list. Dentro do Claude Code, /mcp mostra o status.
3.3 Resolução de problemas
Os registros do servidor ficam em:
macOS:
~/Library/Logs/Claude/mcp-server-flat.logWindows:
%APPDATA%\Claude\logs\mcp-server-flat.log
Mensagem no log | Causa e solução |
| O |
| Token errado, expirado ou sem os escopos do passo 1. |
Servidor não aparece | JSON inválido ou |
| O caminho em |
4. Use
Exemplos de pedidos:
"Liste minhas partituras do Flat modificadas recentemente."
"Na partitura Ave Maria, mostre os compassos 9 a 16 do Contralto."
"No compasso 12 do Soprano, troque o Fá por Sol e mantenha o ritmo. Mostre o dry-run antes de gravar."
"Corrija o título para 'Ave Maria (Schubert)' e o compositor para 'F. Schubert'."
"Desfaça a última edição da partitura X."
"Exporte a partitura X em PDF e em MusicXML."
Ferramentas
Ferramenta | O que faz |
| Testa a conexão e mostra a conta |
| Lista ou procura partituras (paginado) |
| Lista as coleções (pastas) |
| Metadados + partes, nº de compassos, armadura e compasso |
| MusicXML de um trecho de compassos |
| MusicXML bruto, paginado |
| Histórico de revisões |
| Troca compassos inteiros de uma parte → nova revisão |
| Substituições exatas de texto (com contagem obrigatória) → nova revisão |
| Substitui a partitura inteira por um MusicXML/MXL/MIDI |
| Desfaz: copia uma revisão antiga para uma nova |
| Título, subtítulo, compositor, letrista, arranjador, descrição, privacidade |
| Cria nova partitura (privada por padrão) ou duplica uma |
| Salva em PDF, PNG, MusicXML, MXL, MIDI, MP3, WAV |
flat_replace_measures e flat_edit_musicxml aceitam dry_run=true, que confere
o resultado sem gravar.
Usar como biblioteca Python
from flat_mcp import FlatClient
from flat_mcp import musicxml as mx
flat = FlatClient() # lê FLAT_ACCESS_TOKEN
scores, _ = flat.list_scores()
sid = scores[0]["id"]
xml = flat.get_musicxml(sid)
print(mx.summarize(xml))
novo = mx.apply_text_edits(xml, [{"find": "<work-title>Rascunho</work-title>",
"replace": "<work-title>Versão final</work-title>"}])
flat.create_revision(sid, novo, description="Título final")Segurança
O token fica apenas no seu computador (variável de ambiente). Não o coloque em repositórios. Para revogá-lo, apague-o em https://flat.io/developers/apps.
Partituras criadas são privadas por padrão; tornar pública exige que você peça.
Os escopos
scores/collectionspermitem apagar partituras pela API, mas este servidor não expõe nenhuma ferramenta de exclusão.
Testes
uv run --extra dev pytest -qOs testes usam uma API do Flat simulada em memória — não tocam na sua conta.
Limitações
Edição por compasso suporta MusicXML
score-partwise(o formato que o Flat exporta).Exportações pesadas (MP3/WAV/PDF de partituras longas) podem demorar; o tempo limite é 60 s.
Limites de requisição da API: veja https://flat.io/developers/docs/api/rate-limits.
Créditos e licença
Desenvolvido por @eubrunodiego em 2026-10-27.
Distribuído sob a licença MIT. Você pode usar, modificar e redistribuir, desde que mantenha o aviso de copyright.
Este projeto não é afiliado ao Flat.io (Tutteo Ltd). "Flat" é marca de seus respectivos donos.
Available Tools
16 toolsflat_create_scoreB
Cria uma partitura nova (privada por padrão) a partir de MusicXML em texto ou de um arquivo local (.musicxml, .xml, .mxl, .mid).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| privacy | No | private | |
| musicxml | No | ||
| file_path | No | ||
| collection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two useful traits: the score is private by default and the accepted source formats. It does not state authentication/ownership requirements, what happens if both musicxml and file_path are supplied, or what occurs on parse failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler that states the action, the default privacy, and the accepted inputs. It is efficient, though the parenthetical extension list slightly crowds the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter write tool with no annotations and no output schema, the description leaves meaningful gaps: no ownership/permission context, no conflict rule between the two input sources, and nothing about title or collection semantics. What it does cover (privacy default, source formats) is accurate but not sufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does partially: it clarifies that musicxml is raw XML text and that file_path points to a local .musicxml/.xml/.mxl/.mid file, which is real added meaning. However, 'title' and 'collection' are never explained, and the mutual exclusivity/precedence of musicxml vs file_path is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Cria uma partitura nova') and names the accepted input sources (MusicXML text or a local file), so an agent can tell it is a creation tool rather than a revision or fork operation. It does not name any sibling, so differentiation from flat_upload_revision / flat_fork_score is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as flat_upload_revision (add a revision to an existing score) or flat_fork_score (copy an existing score). The only guidance is the implied 'use this to create something new', which the agent could infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_edit_musicxmlA
Edita por substituição exata de texto no MusicXML e grava nova revisão. edits: [{"find": "...", "replace": "...", "count": 1}] — 'count' é o nº EXATO de ocorrências esperadas (padrão 1); se não bater, nada é gravado. Útil para título, letra, dinâmicas, andamento.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | ||
| dry_run | No | ||
| score_id | Yes | ||
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does it reasonably: it declares this is a mutation that persists a new revision, and discloses the key transactional rule that a count mismatch aborts the write with nothing saved. It still omits permission requirements, whether the input is validated as well-formed MusicXML, and what happens to the previous revision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core semantics are front-loaded and the edits shape follows immediately; almost every line earns its place. The example list of targets is brief and useful rather than padding, though the block could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description should be self-sufficient; it covers the edit mechanics and atomic failure but leaves the purpose of the required description field, the dry_run preview behavior, and the response shape unexplained. Given four parameters and a mutation, that is a noticeable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does well for the hardest parameter by spelling out the edits object shape (find/replace/count) and the exact-match semantics of count including its default. However, three required/optional parameters — score_id, description, and dry_run — receive no explanation at all, leaving half the contract undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: exact text substitution in the MusicXML, plus the side effect of writing a new revision. The use-case list (título, letra, dinâmicas, andamento) makes the scope concrete. It doesn't explicitly contrast with sibling flat_replace_measures or flat_update_metadata, which would be needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions for use through the example targets (title, lyrics, dynamics, tempo) and signals this is for surgical text substitutions. It does not state when to prefer the structural alternative (flat_replace_measures) or when this tool is invalid, so there are no explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_exportB
Exporta e salva no computador. fmt: xml, mxl, midi, mp3, wav, pdf, png, json. Pasta padrão: FLAT_EXPORT_DIR ou ~/Downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| fmt | No | ||
| revision | No | last | |
| score_id | Yes | ||
| output_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two meaningful behaviors: the supported output formats and the default destination (FLAT_EXPORT_DIR or ~/Downloads). It omits side-effect details an agent needs — whether files are overwritten, whether permission/ownership of the score is required, whose machine 'o computador' is, and whether a path is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short lines, front-loaded with the action, then formats, then destination — every clause carries information. It is telegraphic rather than padded, though the missing subject of 'exporta' costs a little precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, write-side-effect tool with no annotations, no output schema, and 0% schema coverage, the description leaves too much open: it never says what the return value is, what 'revision: last' means, or how score_id is resolved. Only the fmt/output_dir half of the parameter surface is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description compensates for only part of it: it enumerates the valid fmt values (absent from the schema, which declares fmt as a bare string) and explains output_dir's default resolution. score_id and revision ('last') remain completely undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action pair ('Exporta e salva no computador') and enumerates the export formats, which makes it distinguishable from siblings like flat_get_musicxml (fetch content) or flat_upload_revision (push a revision). The exported resource (a score) is only implied via the required score_id, and no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no mention of alternatives such as flat_get_musicxml for reading MusicXML inline. The only implied routing cue is 'saves to the computer', which the agent has to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_find_scoreC
Procura partituras da conta cujo título/compositor contenha o texto (sem diferenciar maiúsculas).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a read-only lookup, but says nothing about authentication/account scoping beyond 'da conta', how many results come back, or how pagination behaves despite a max_pages parameter existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no padding; the matching semantics come first. It is efficient, though arguably so terse that space was left unused rather than trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented second parameter, the definition is not complete enough: an agent does not know the return shape, result ordering, or the meaning/limits of max_pages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does a good job on 'query' (substring match on title/composer, case-insensitive) but leaves 'max_pages' (default 8) entirely unexplained, which is exactly the kind of control an agent needs to understand.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Procura') and resource ('partituras da conta') plus the match fields (título/compositor) and case-insensitivity, which clearly separates it from the sibling flat_list_scores. No explicit sibling naming, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a text-search use case but gives no when-to-use guidance, no prerequisites, and never mentions when to prefer flat_list_scores or flat_score_overview instead of a text search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_fork_scoreC
Duplica uma partitura (útil para editar uma cópia e preservar a original).
| Name | Required | Description | Default |
|---|---|---|---|
| score_id | Yes | ||
| collection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses one useful trait -- that the original is preserved when editing the copy -- but says nothing about where the duplicate is placed, what name or id it receives, whether it is a full deep copy including revisions, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core action front-loaded, followed by an immediately useful rationale. No filler, though it is sparse given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero schema description coverage on two parameters, the description would need to do much heavier lifting. It does not explain the result of the fork, the target collection semantics, or error/permission conditions, leaving significant gaps for a tool that creates new resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters (score_id, collection) are undocumented in the schema. The description never mentions either parameter, so an agent learns nothing about which score is duplicated or what the optional collection argument controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Duplica") with a specific resource ("partitura"), which clearly distinguishes it from read-side siblings like flat_list_scores or flat_get_musicxml. It does not explicitly contrast with the closest sibling, flat_create_score, but the duplicate-vs-create distinction is inferable from the wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical "útil para editar uma cópia e preservar a original" supplies a genuine usage scenario, which is more than nothing. However, it gives no when-not guidance, no mention of the alternative flat_create_score, and no preconditions such as permissions or access to the source score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_get_measuresA
Devolve o MusicXML dos compassos nas posições start..end (1-based, inclusivo). Sem part_id, traz o trecho de todas as partes. Prefira trechos de até ~16 compassos.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| part_id | No | ||
| revision | No | last | |
| score_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden; it does disclose read-only behavior, the 1-based inclusive indexing, and the part_id default meaning 'all parts'. However, it never explains the 'revision' parameter (default 'last'), truncation behavior, or whether ranges beyond the score fail or clamp.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, range semantics front-loaded, with the caller guidance last. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only excerpt tool with no output schema the core is present, but a 5-parameter signature with two undocumented parameters (score_id, revision) leaves real gaps an agent would hit on first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it only covers start, end, and part_id semantics. score_id and especially the revision parameter (default 'last') are left entirely unexplained for a 5-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Devolve o MusicXML dos compassos') plus an explicit range scope (start..end, 1-based, inclusive), which clearly distinguishes this partial-extraction tool from flat_get_musicxml. It stops short of naming a sibling outright, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance: use small excerpts of up to ~16 measures, and omit part_id to get all parts. What's missing is an explicit statement of when to prefer flat_get_musicxml or flat_replace_measures over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_get_musicxmlC
MusicXML bruto da partitura, paginado por caracteres (use offset para continuar).
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| revision | No | last | |
| score_id | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses character-based pagination and offset continuation, but omits other important behavior such as read-only nature, revision handling, max_chars limits, and error/truncation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler. It is concise and well structured, though it is perhaps too terse for the amount of parameter and behavioral context an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, four parameters, and 0% schema description coverage. The description only covers purpose and offset continuation, leaving revision selection, max_chars behavior, required score_id meaning, and return semantics unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It only explains offset for pagination; score_id, revision, and max_chars are left completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as raw MusicXML for a score. It lacks an explicit verb and does not distinguish this from siblings like flat_get_measures or flat_export, but the core purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage instruction is 'use offset to continue', which explains pagination mechanics but not when to choose this tool over alternatives such as flat_get_measures or flat_export. No exclusions or selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_list_collectionsB
Lista as coleções (pastas) da conta.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does not meet it. "Lista" implies a read, but nothing is said about authentication requirements, whether the listing is paginated or complete, or whether it is scoped to the caller's account or broader — only the vague "da conta".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no filler. It is efficient, though the brevity contributes to the missing usage and behavioral detail rather than being purely a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter list tool with no output schema, the description is minimally viable: an agent knows it returns account collections. It does not say what a collection object contains or how collections relate to scores and revisions, which would be needed to choose it wisely among the siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty with full coverage, so there is nothing for the description to compensate for. Baseline for a no-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Lista as coleções") and disambiguates the term by glossing it as "pastas" (folders of the account). It is clear on its own, but gives no hint about how it differs from sibling listing tools such as flat_list_scores or flat_list_revisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the other listing tools in the family, nor any prerequisite or context. The only guidance is implicit in the name; an agent must infer that collections are the top-level folder container.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_list_revisionsB
Histórico de revisões (id, data, descrição) — útil para desfazer edições.
| Name | Required | Description | Default |
|---|---|---|---|
| score_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load; it does disclose the returned fields (id, date, description), which is genuinely useful since there is no output schema. However, it says nothing about read-only nature, ordering, pagination, or permission requirements, leaving key behavioral traits unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the resource and then the return fields. It is efficient with no filler, though the trailing undoing hint adds ambiguity rather than value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with no output schema, the description usefully covers the return shape, which partially compensates. But it omits the meaning of the required score_id and any behavioral context, leaving the definition only marginally adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter score_id is completely undocumented. The description implies the history belongs to some entity but never identifies score_id or explains what it must be, so an agent gets no meaning beyond the bare schema property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (revision history) and enumerates what each entry contains (id, date, description), so an agent can tell this is a read of revision records rather than a mutation. It does not explicitly contrast with siblings like flat_restore_revision or flat_upload_revision, but the resource is specific enough to distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage hint is "útil para desfazer edições" (useful for undoing edits), which describes a downstream goal rather than when to call this tool versus flat_restore_revision. There is no statement of prerequisites, exclusions, or which sibling performs the actual undo.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_list_scoresB
Lista partituras. collection: 'allScores' (todas), 'collaborations', 'trash' ou o id de uma coleção. sort: modificationDate | creationDate | title. Use 'next_cursor' do resultado para a próxima página.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | modificationDate | |
| limit | No | ||
| cursor | No | ||
| collection | No | allScores |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does add real behavioral value by revealing that the result contains a 'next_cursor' for paging — information that is not in the schema or an (absent) output schema. It omits the read-only nature, auth requirements, and the default page size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact, front-loaded clauses with no filler; the resource is named first, then facets, then pagination. Minor polish issues (a missing space after 'title.', mixed Portuguese/English phrasing) slightly hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter list tool with no annotations and no output schema, the essentials (what it lists, how to filter, how to page) are covered, but the page-size parameter and the operation's safety/auth profile are left entirely to inference. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does document collection (four accepted value families, including a raw collection id) and sort (three allowed values), but leaves limit and the cursor parameter's origin unstated beyond the passing mention of 'next_cursor'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lista partituras') and immediately scopes it via the collection values, so an agent knows this is a browsing/list operation rather than a lookup. It does not, however, distinguish itself from siblings like flat_find_score or flat_list_collections, which an agent must infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: browse all scores, a collaboration list, trash, or one collection. The pagination instruction ('Use next_cursor do resultado para a próxima página') gives procedural guidance, but there is no explicit when-to-use-this-vs-alternative statement and no mention of when flat_find_score would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_replace_measuresC
Substitui compassos inteiros de uma parte (casando pelo atributo number) e grava nova revisão. measures_xml: um ou mais ... completos, já editados. description: o que mudou (fica no histórico do Flat).
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| part_id | No | ||
| score_id | Yes | ||
| description | Yes | ||
| measures_xml | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that a new revision is written, which is useful mutation context, but it never explains dry_run, whether the replacement is destructive/irreversible, or what happens to measures not mentioned in the payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, followed by short per-parameter notes. No filler, though the mixed Portuguese/English phrasing and the missing dry_run note cost a little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, with a 5-parameter mutation tool whose schema documents nothing. An agent cannot tell whether part_id is required to scope the replacement or what dry_run returns, so the definition is not sufficient to invoke this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 5 parameters. The description clarifies measures_xml (complete measure elements, matched by number) and description (stored in Flat history), but leaves score_id, part_id, and especially dry_run completely undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: replaces whole measures of a part, matching by the number attribute, and writes a new revision. This is clearly distinguishable from flat_get_measures or flat_upload_revision. It does not explicitly contrast with flat_edit_musicxml, which is the nearest sibling for XML mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the constraint that measures_xml must contain complete <measure number="N"> elements already edited, which hints at when this tool applies. However, there is no statement of when to prefer this over flat_edit_musicxml or flat_upload_revision, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_restore_revisionB
Desfaz edições: copia o conteúdo de uma revisão antiga para uma nova revisão (o histórico é mantido).
| Name | Required | Description | Default |
|---|---|---|---|
| score_id | Yes | ||
| description | No | ||
| revision_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden — and it does disclose the most important non-obvious behavior: the restore is non-destructive because the history is maintained and a NEW revision is created rather than the old one being resurrected. It omits permission requirements and what happens to the current head revision beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that leads with the outcome ('Desfaz edições') and then the mechanism in parentheses. No wasted words, though the parenthetical slightly buries the key fact that the operation is additive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with zero annotation coverage, no output schema, and undocumented parameters, the description explains the mechanism adequately but leaves gaps: what the call returns, whether the score_id scope needs ownership rights, and what the description parameter affects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for all three parameters, but it only implicitly identifies revision_id as the source revision. The score_id and the optional description parameters are never explained in meaning or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource pair: it undoes edits by copying the content of an old revision into a new revision. That is concrete enough to distinguish it from flat_upload_revision or flat_list_revisions, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Desfaz edições' implies the use case (reverting unwanted changes), but there is no explicit when-to-use vs. alternatives guidance — nothing says when to prefer this over flat_upload_revision or flat_edit_musicxml, and no prerequisites or restrictions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_score_overviewC
Metadados + estrutura musical (partes, ids, nº de compassos, armadura e compasso iniciais).
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | last | |
| score_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden; it does reveal what data comes back (parts, ids, measure counts, initial key/time signature), which is useful. However, it says nothing about read-only nature, permissions, the 'last' revision default behavior, or whether the overview is a snapshot vs. a live read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact fragment with zero wasted words, which is good, but the terseness crosses into under-specification: no verb, no sentence structure, and the parenthetical list reads like internal shorthand rather than agent-facing prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of information, and it only partially sketches the return payload (omitting e.g. title/composer metadata, title of parts, tempo). Combined with undocumented parameters, an agent cannot confidently predict behavior beyond 'returns some structural info'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters and does not. score_id is intuitive from the name, but 'revision' (defaulting to "last") is entirely undocumented — an agent cannot know whether it takes a revision id, a number, or the literal dock 'last', nor what revisions are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase listing returned content (metadata, parts, ids, measure count, key/time signature) rather than stating a verb, so the action ('retrieve an overview of a score') must be inferred from the name. It loosely distinguishes itself from heavy siblings like flat_get_musicxml and flat_get_measures by emphasizing summary-level data, but never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives among 15 siblings. At best, listing summary fields implies 'use this for a quick overview instead of pulling full measures/MusicXML', but that routing decision is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_update_metadataB
Altera metadados da partitura no Flat (título, compositor, descrição...). privacy: private | public | privateLink. Tornar pública exige confirmação explícita do usuário.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| privacy | No | ||
| arranger | No | ||
| composer | No | ||
| lyricist | No | ||
| score_id | Yes | ||
| subtitle | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important behavioral rule: setting privacy to public requires explicit user confirmation. However, it omits critical mutation semantics — all fields default to null, yet it never says whether omitted fields are left untouched or cleared, nor whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, then the privacy constraint. No wasted text; only minor deduction for the terse fragment structure of the second line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 8-parameter mutation tool with no annotations and no output schema, the description covers purpose, key fields, and the highest-risk behavior (public sharing). It still leaves the agent guessing about partial-update vs. clearing semantics and about the result of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema types privacy as a bare string with no enum, so the description's 'private | public | privateLink' is genuinely additive. It also names title, composer and description, but leaves arranger, lyricist, subtitle and score_id undocumented, so it only partially compensates for the 8-param gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Altera metadados da partitura no Flat') and enumerates the kinds of fields affected (título, compositor, descrição). This clearly separates it from siblings like flat_edit_musicxml or flat_replace_measures, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is for metadata changes rather than musical content. There is one concrete conditional directive (making a score public requires explicit user confirmation), but no explicit statement of when to prefer this tool over flat_edit_musicxml or flat_create_score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_upload_revisionB
Substitui a partitura inteira por um MusicXML completo (texto ou arquivo .musicxml/.xml/.mxl/.mid local), gravando como nova revisão.
| Name | Required | Description | Default |
|---|---|---|---|
| musicxml | No | ||
| score_id | Yes | ||
| file_path | No | ||
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two important traits: the operation destroys and overwrites the entire score, and the result is persisted as a new revision (so prior content remains recoverable). It says nothing about permissions, precedence between the two input modes, or failure behavior for an invalid score_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence (plus line break) that front-loads the action and its effect. No filler; the only loss is that brevity comes at the cost of the missing parameter and alternative guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, and 4 parameters sit at 0% schema coverage. The description covers the core content input and the revision semantics, but the required description parameter, score_id, mutual exclusivity of musicxml vs file_path, and guarantees about the previous revision are all unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies the accepted formats and sources for musicxml/file_path (.musicxml/.xml/.mxl/.mid, local path or inline text), but leaves score_id and the required description parameter entirely undefined, and never says which of the two content inputs takes precedence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: replaces the entire score ('Substitui a partitura inteira') with a full MusicXML document and records it as a new revision. The word 'inteira' implicitly separates it from flat_replace_measures and flat_edit_musicxml, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: full-score substitution versus the partial-edit siblings is inferable from 'inteira', but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must reason about scope to pick this over flat_replace_measures or flat_edit_musicxml.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flat_whoamiA
Mostra a conta Flat autenticada pelo token (teste de conexão).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It implies a safe read ("Mostra") and that a token must already be configured, which is useful, but it says nothing about failure behavior (what an invalid/expired token returns) or the shape of the returned account object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action first and the use case in parentheses; nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read with no output schema, the description adequately covers what is returned (the authenticated account) and why it exists (connectivity check). Missing only the failure/error semantics an agent might want when probing auth state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the parameter baseline of 4 applies. The description correctly conveys that authentication comes implicitly from the configured token rather than any argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Mostra") and a specific resource ("a conta Flat autenticada pelo token"), and adds that it doubles as a connection test. This is clearly distinct in kind from the score/revision/measure siblings, though the difference is conveyed by subject matter rather than an explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical "(teste de conexão)" tells the agent exactly when to reach for it: verifying token validity/connectivity. There is no exclusion or named alternative because no sibling performs this function, but the trigger condition is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.0.0- First observed
flat_create_score - First observed
flat_edit_musicxml - First observed
flat_export - First observed
flat_find_score - First observed
flat_fork_score - First observed
flat_get_measures - First observed
flat_get_musicxml - First observed
flat_list_collections - First observed
flat_list_revisions - First observed
flat_list_scores - First observed
flat_replace_measures - First observed
flat_restore_revision - First observed
flat_score_overview - First observed
flat_update_metadata - First observed
flat_upload_revision - First observed
flat_whoami
TDQS
Scored across 16 tools
The four write paths (flat_upload_revision, flat_replace_measures, flat_edit_musicxml, flat_restore_revision) all produce new revisions but operate at clearly different granularities (whole score, measure range, exact text substitution, revert), and the descriptions spell this out. The only mild overlaps are flat_get_measures vs flat_get_musicxml and flat_score_overview vs flat_get_musicxml, which are differentiated by range/pagination.
Almost every tool follows a flat_verb_noun pattern in snake_case (flat_create_score, flat_list_scores, flat_replace_measures), which is highly predictable. The lone deviation is flat_score_overview being noun-first, plus flat_whoami which lacks a noun but is a recognizable idiom.
16 tools is slightly on the heavy side but each maps to a plausible, non-redundant operation in a music-score editing lifecycle (read, edit, history, export, account). Nothing feels padded, though the set could be tightened by merging the two MusicXML getters.
Create, read (overview, measures, raw XML), update (metadata, measures, text, whole-score), fork, revision history/restore, and multi-format export are all covered, so most workflows reach no dead end. The notable gap is deletion/trashing of scores (the 'trash' collection is listed but no tool moves a score there) and collaboration management.
Maintenance
Related MCP Connectors
Read, edit, publish, and preview your pepita websites from Claude.
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Work with your DealSharp negotiation projects, documents and tools from Claude.
- aNotepadOAuthcom.anotepad
AI access to your aNotepad online notes: read, search, write, and organize via 22 tools.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables Claude AI to convert, edit, and analyze MuseScore files (.mscz, .musicxml, MIDI) through natural language commands, supporting format conversion, transposition, harmony analysis, and more.201-
- AlicenseNot gradedqualityFmaintenanceEnables editing Overleaf projects from Claude, with tools to list, read, edit, and sync files via Git.30 PyPIMIT
- FlicenseNot gradedqualityCmaintenanceEnables managing Google Drive files, Docs, and Sheets through natural language via Claude Code, with tools for listing, searching, editing, and formatting documents and spreadsheets.-
- AlicenseBqualityBmaintenanceEnables you to manage your personal Spotify library from Claude or a CLI, including organizing playlists, merging and deleting playlists, saving tracks, searching with artist verification, and querying top tracks, artists, and recently played items.27MIT