Skip to content

Referência de Ferramentas MCP

Esta página documenta todas as ferramentas MCP disponíveis quando o Claude (ou outros assistentes de IA) se conecta ao VMark.

O VMark expõe um conjunto de ferramentas compostas, ferramentas de protocolo e recursos — todos documentados abaixo. As ferramentas compostas usam um parâmetro action para selecionar a operação — isso reduz o overhead de tokens enquanto mantém todas as capacidades acessíveis.

Fluxo de Trabalho Recomendado

Para a maioria das tarefas de escrita, você só precisa de algumas ações:

Entender: structureget_digest, documentsearchLer: structureget_section, documentread_paragraph / get_contentEscrever: structureupdate_section / insert_section, documentwrite_paragraph / smart_insertControlar: editorundo / redo, suggestionsaccept / rejectArquivos: workspacesave, tabsswitch / list

As demais ações fornecem controle refinado para cenários de automação avançada.

Diagramas Mermaid

Ao usar IA para gerar diagramas Mermaid via MCP, considere instalar o servidor MCP mermaid-validator — ele detecta erros de sintaxe usando os mesmos parsers do Mermaid v11 antes que os diagramas cheguem ao seu documento.


document

Ler, escrever, pesquisar e transformar o conteúdo do documento. 12 ações.

Todas as ações aceitam um parâmetro opcional windowId (string) para segmentar uma janela específica. O padrão é a janela em foco.

get_content

Obter o conteúdo completo do documento como texto markdown.

set_content

Substituir todo o conteúdo do documento.

ParâmetroTipoObrigatórioDescrição
contentstringSimNovo conteúdo do documento (suporta markdown).

Somente Documentos Vazios

Por segurança, esta ação só é permitida quando o documento de destino está vazio. Para documentos não vazios, use insert_at_cursor, apply_diff ou selectionreplace — estes criam sugestões que requerem aprovação do usuário.

insert_at_cursor

Inserir texto na posição atual do cursor.

ParâmetroTipoObrigatórioDescrição
textstringSimTexto a inserir (suporta markdown).

Retorna: { message, position, suggestionId?, applied }

Sistema de Sugestões

Por padrão, esta ação cria uma sugestão que requer aprovação do usuário. O texto aparece como prévia fantasma. Os usuários podem aceitar (Enter) ou rejeitar (Escape). Se Aprovar edições automaticamente estiver habilitado em Configurações → Integrações, as alterações são aplicadas imediatamente.

insert_at_position

Inserir texto em uma posição de caractere específica.

ParâmetroTipoObrigatórioDescrição
textstringSimTexto a inserir (suporta markdown).
positionnumberSimPosição do caractere (baseado em 0).

Retorna: { message, position, suggestionId?, applied }

Pesquisar texto no documento.

ParâmetroTipoObrigatórioDescrição
querystringSimTexto a pesquisar.
caseSensitivebooleanNãoPesquisa com distinção de maiúsculas/minúsculas. Padrão: false.

Retorna: Array de correspondências com posições e números de linha.

replace_in_source

Substituir texto no nível do código-fonte markdown, contornando os limites de nós do ProseMirror.

ParâmetroTipoObrigatórioDescrição
searchstringSimTexto a encontrar no código-fonte markdown.
replacestringSimTexto de substituição (suporta markdown).
allbooleanNãoSubstituir todas as ocorrências. Padrão: false.

Retorna: { count, message, suggestionIds?, applied }

Quando usar

Use apply_diff primeiro — é mais rápido e preciso. Recorra a replace_in_source apenas quando o texto de pesquisa atravessa limites de formatação (negrito, itálico, links, etc.) e apply_diff não consegue encontrá-lo.

batch_edit

Aplicar múltiplas operações atomicamente.

ParâmetroTipoObrigatórioDescrição
operationsarraySimArray de operações (máx 100).
baseRevisionstringSimRevisão esperada para detecção de conflitos.
requestIdstringNãoChave de idempotência.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Cada operação requer type (update, insert, delete, format ou move), nodeId e opcionalmente text/content.

Retorna: { success, changedNodeIds[], suggestionIds[] }

apply_diff

Encontrar e substituir texto com controle de política de correspondência.

ParâmetroTipoObrigatórioDescrição
originalstringSimTexto a encontrar.
replacementstringSimTexto para substituir.
baseRevisionstringSimRevisão esperada para detecção de conflitos.
matchPolicystringNãofirst, all, nth ou error_if_multiple. Padrão: first.
nthnumberNãoQual correspondência substituir (baseado em 0, para política nth).
scopeQueryobjectNãoFiltro de escopo para restringir a pesquisa.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Retorna: { matchCount, appliedCount, matches[], suggestionIds[] }

replace_anchored

Substituir texto usando ancoragem de contexto para segmentação precisa.

ParâmetroTipoObrigatórioDescrição
anchorobjectSim{ text, beforeContext, afterContext }
replacementstringSimTexto de substituição.
baseRevisionstringSimRevisão esperada para detecção de conflitos.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

read_paragraph

Ler um parágrafo do documento por índice ou correspondência de conteúdo.

ParâmetroTipoObrigatórioDescrição
targetobjectSim{ index: 0 } ou { containing: "texto" }
includeContextbooleanNãoIncluir parágrafos ao redor. Padrão: false.

Retorna: { index, content, wordCount, charCount, position, context? }

write_paragraph

Modificar um parágrafo no documento.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento para detecção de conflitos.
targetobjectSim{ index: 0 } ou { containing: "texto" }
operationstringSimreplace, append, prepend ou delete.
contentstringCondicionalNovo conteúdo (obrigatório exceto para delete).
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Retorna: { success, message, suggestionId?, applied, newRevision? }

smart_insert

Inserir conteúdo em locais comuns do documento.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento para detecção de conflitos.
destinationvariaSimOnde inserir (veja abaixo).
contentstringSimConteúdo markdown a inserir.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Opções de destino:

  • "end_of_document" — Inserir no final
  • "start_of_document" — Inserir no início
  • { after_paragraph: 2 } — Inserir após o parágrafo no índice 2
  • { after_paragraph_containing: "conclusão" } — Inserir após parágrafo contendo texto
  • { after_section: "Introdução" } — Inserir após o título da seção

Retorna: { success, message, suggestionId?, applied, newRevision?, insertedAt? }

Quando Usar

  • Documentos estruturados (com títulos): Use structureget_section, update_section, insert_section
  • Documentos simples (sem títulos): Use documentread_paragraph, write_paragraph, smart_insert
  • Fim do documento: Use documentsmart_insert com "end_of_document"

structure

Consultas de estrutura do documento e operações de seção. 8 ações.

Todas as ações aceitam um parâmetro opcional windowId.

get_ast

Obter a árvore de sintaxe abstrata do documento.

ParâmetroTipoObrigatórioDescrição
projectionstring[]NãoCampos a incluir: id, type, text, attrs, marks, children.
filterobjectNãoFiltrar por type, level, contains, hasMarks.
limitnumberNãoMáx de resultados.
offsetnumberNãoQuantidade a ignorar.
afterCursorstringNãoID de nó para paginação por cursor.

Retorna: AST completa com tipos de nó, posições e conteúdo.

get_digest

Obter um resumo compacto da estrutura do documento.

Retorna: { revision, title, wordCount, charCount, outline[], sections[], blockCounts, hasImages, hasTables, hasCodeBlocks, languages[] }

list_blocks

Listar todos os blocos no documento com seus IDs de nó.

ParâmetroTipoObrigatórioDescrição
queryobjectNãoFiltrar por type, level, contains, hasMarks.
projectionstring[]NãoCampos a incluir.
limitnumberNãoMáx de resultados.
afterCursorstringNãoID de nó para paginação por cursor.

Retorna: { revision, blocks[], hasMore, nextCursor? }

Os IDs de nó usam prefixos: h-0 (título), p-0 (parágrafo), code-0 (bloco de código), etc.

resolve_targets

Verificação prévia para mutações — encontrar nós por consulta.

ParâmetroTipoObrigatórioDescrição
queryobjectSimCritérios de consulta: type, level, contains, hasMarks.
maxResultsnumberNãoMáx de candidatos.

Retorna: Posições e tipos de alvo resolvidos.

get_section

Obter conteúdo de uma seção do documento (título e seu conteúdo até o próximo título de mesmo nível ou superior).

ParâmetroTipoObrigatórioDescrição
headingstring | objectSimTexto do título (string) ou { level, index }.
includeNestedbooleanNãoIncluir subseções.

Retorna: Conteúdo da seção com título, corpo e posições.

update_section

Atualizar o conteúdo de uma seção.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento.
targetobjectSim{ heading, byIndex, ou sectionId }
newContentstringSimNovo conteúdo da seção (markdown).
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

insert_section

Inserir uma nova seção.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento.
afterobjectNãoAlvo de seção para inserir após.
sectionHeadingobjectSim{ level, text } — nível do título (1-6) e texto.
contentstringNãoConteúdo do corpo da seção.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

move_section

Mover uma seção para um novo local.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento.
sectionobjectSimSeção a mover: { heading, byIndex, ou sectionId }.
afterobjectNãoAlvo de seção para mover após.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

selection

Ler e manipular seleção de texto e cursor. 5 ações.

Todas as ações aceitam um parâmetro opcional windowId.

get

Obter a seleção de texto atual.

Retorna: { text, range: { from, to }, isEmpty }

set

Definir o intervalo de seleção.

ParâmetroTipoObrigatórioDescrição
fromnumberSimPosição inicial (inclusiva).
tonumberSimPosição final (exclusiva).

TIP

Use o mesmo valor para from e to para posicionar o cursor sem selecionar texto.

replace

Substituir o texto selecionado por novo texto.

ParâmetroTipoObrigatórioDescrição
textstringSimTexto de substituição (suporta markdown).

Retorna: { message, range, originalContent, suggestionId?, applied }

Sistema de Sugestões

Por padrão, esta ação cria uma sugestão que requer aprovação do usuário. O texto original aparece com tachado, e o novo texto aparece como prévia fantasma. Se Aprovar edições automaticamente estiver habilitado em Configurações → Integrações, as alterações são aplicadas imediatamente.

get_context

Obter texto ao redor do cursor para compreensão de contexto.

ParâmetroTipoObrigatórioDescrição
linesBeforenumberNãoLinhas antes do cursor. Padrão: 3.
linesAfternumberNãoLinhas após o cursor. Padrão: 3.

Retorna: { before, after, currentLine, currentParagraph, block }

O objeto block contém:

CampoTipoDescrição
typestringTipo de bloco: paragraph, heading, codeBlock, blockquote, etc.
levelnumberNível do título 1-6 (somente para títulos)
languagestringLinguagem do código (somente para blocos de código com linguagem definida)
inListstringTipo de lista se dentro de uma lista: bullet, ordered ou task
inBlockquotebooleantrue se dentro de uma citação
inTablebooleantrue se dentro de uma tabela
positionnumberPosição no documento onde o bloco começa

set_cursor

Definir a posição do cursor (limpa a seleção).

ParâmetroTipoObrigatórioDescrição
positionnumberSimPosição do caractere (baseado em 0).

format

Formatação de texto, tipos de bloco, listas e operações em lote de listas. 10 ações.

Todas as ações aceitam um parâmetro opcional windowId.

toggle

Alternar uma marca de formatação na seleção atual.

ParâmetroTipoObrigatórioDescrição
markstringSimbold, italic, code, strike, underline ou highlight

Criar um hiperlink no texto selecionado.

ParâmetroTipoObrigatórioDescrição
hrefstringSimURL do link.
titlestringNãoTítulo do link (dica).

Remover hiperlink da seleção. Sem parâmetros adicionais.

clear

Remover toda a formatação da seleção. Sem parâmetros adicionais.

set_block_type

Converter o bloco atual para um tipo específico.

ParâmetroTipoObrigatórioDescrição
blockTypestringSimparagraph, heading, codeBlock ou blockquote
levelnumberCondicionalNível do título 1-6 (obrigatório para heading).
languagestringNãoLinguagem do código (para codeBlock).

insert_hr

Inserir uma linha horizontal (---) no cursor. Sem parâmetros adicionais.

toggle_list

Alternar tipo de lista no bloco atual.

ParâmetroTipoObrigatórioDescrição
listTypestringSimbullet, ordered ou task

indent_list

Aumentar a indentação do item de lista atual. Sem parâmetros adicionais.

outdent_list

Diminuir a indentação do item de lista atual. Sem parâmetros adicionais.

list_modify

Modificar em lote a estrutura e o conteúdo de uma lista.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento.
targetobjectSim{ listId }, { selector } ou { listIndex }
operationsarraySimArray de operações de lista.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Operações: add_item, delete_item, update_item, toggle_check, reorder, set_indent


table

Operações de tabela. 3 ações.

Todas as ações aceitam um parâmetro opcional windowId.

insert

Inserir uma nova tabela no cursor.

ParâmetroTipoObrigatórioDescrição
rowsnumberSimNúmero de linhas (deve ser pelo menos 1).
colsnumberSimNúmero de colunas (deve ser pelo menos 1).
withHeaderRowbooleanNãoSe deve incluir uma linha de cabeçalho. Padrão: true.

delete

Excluir a tabela na posição do cursor. Sem parâmetros adicionais.

modify

Modificar em lote a estrutura e o conteúdo de uma tabela.

ParâmetroTipoObrigatórioDescrição
baseRevisionstringSimRevisão do documento.
targetobjectSim{ tableId }, { afterHeading } ou { tableIndex }
operationsarraySimArray de operações de tabela.
modestringNãodryRun para visualizar sem aplicar. Aplicar vs sugerir é controlado pela configuração do usuário.

Operações: add_row, delete_row, add_column, delete_column, update_cell, set_header


editor

Operações de estado do editor. 3 ações.

Todas as ações aceitam um parâmetro opcional windowId.

undo

Desfazer a última ação de edição.

redo

Refazer a última ação desfeita.

focus

Focar o editor (trazê-lo para a frente, pronto para entrada).


workspace

Gerenciar documentos, janelas e estado da área de trabalho. 12 ações.

Ações que operam em uma janela específica aceitam um parâmetro opcional windowId.

list_windows

Listar todas as janelas VMark abertas.

Retorna: Array de { label, title, filePath, isFocused, isAiExposed }

get_focused

Obter o rótulo da janela em foco.

focus_window

Focar uma janela específica.

ParâmetroTipoObrigatórioDescrição
windowIdstringSimRótulo da janela a focar.

new_document

Criar um novo documento vazio.

ParâmetroTipoObrigatórioDescrição
titlestringNãoTítulo opcional do documento.

open_document

Abrir um documento do sistema de arquivos.

ParâmetroTipoObrigatórioDescrição
pathstringSimCaminho do arquivo a abrir.

save

Salvar o documento atual.

save_as

Salvar o documento em um novo caminho.

ParâmetroTipoObrigatórioDescrição
pathstringSimNovo caminho do arquivo.

get_document_info

Obter metadados do documento.

Retorna: { filePath, isDirty, title, wordCount, charCount }

close_window

Fechar uma janela.

list_recent_files

Listar arquivos abertos recentemente.

Retorna: Array de { path, name, timestamp } (até 10 arquivos, mais recente primeiro).

get_info

Obter informações sobre o estado atual da área de trabalho.

Retorna: { isWorkspaceMode, rootPath, workspaceName }

reload_document

Recarregar o documento ativo do disco.

ParâmetroTipoObrigatórioDescrição
forcebooleanNãoForçar recarga mesmo se o documento tiver alterações não salvas. Padrão: false.

Falha se o documento não tiver título ou tiver alterações não salvas sem force: true.


tabs

Gerenciar abas do editor dentro das janelas. 6 ações.

Todas as ações aceitam um parâmetro opcional windowId.

list

Listar todas as abas em uma janela.

Retorna: Array de { id, title, filePath, isDirty, isActive }

switch

Alternar para uma aba específica.

ParâmetroTipoObrigatórioDescrição
tabIdstringSimID da aba para alternar.

close

Fechar uma aba.

ParâmetroTipoObrigatórioDescrição
tabIdstringNãoID da aba a fechar. Padrão é a aba ativa.

create

Criar uma nova aba vazia.

Retorna: { tabId }

get_info

Obter informações detalhadas da aba.

ParâmetroTipoObrigatórioDescrição
tabIdstringNãoID da aba. Padrão é a aba ativa.

Retorna: { id, title, filePath, isDirty, isActive }

reopen_closed

Reabrir a aba fechada mais recentemente.

Retorna: { tabId, filePath, title } ou mensagem se nenhuma disponível.

O VMark mantém registro das últimas 10 abas fechadas por janela.


media

Inserir matemática, diagramas, mídia, links wiki e formatação CJK. 11 ações.

Todas as ações aceitam um parâmetro opcional windowId.

math_inline

Inserir matemática LaTeX inline.

ParâmetroTipoObrigatórioDescrição
latexstringSimExpressão LaTeX (ex: E = mc^2).

math_block

Inserir uma equação matemática em nível de bloco.

ParâmetroTipoObrigatórioDescrição
latexstringSimExpressão LaTeX.

mermaid

Inserir um diagrama Mermaid.

ParâmetroTipoObrigatórioDescrição
codestringSimCódigo do diagrama Mermaid.

markmap

Inserir um mapa mental Markmap. Usa títulos Markdown padrão para definir a árvore.

ParâmetroTipoObrigatórioDescrição
codestringSimMarkdown com títulos definindo a árvore do mapa mental.

svg

Inserir um gráfico SVG. O SVG renderiza inline com pan, zoom e exportação PNG.

ParâmetroTipoObrigatórioDescrição
codestringSimMarcação SVG (XML válido com raiz <svg>).

Inserir um link no estilo wiki.

ParâmetroTipoObrigatórioDescrição
targetstringSimAlvo do link (nome da página).
displayTextstringNãoTexto de exibição (se diferente do alvo).

Resultado: [[target]] ou [[target|displayText]]

video

Inserir um elemento de vídeo HTML5.

ParâmetroTipoObrigatórioDescrição
srcstringSimCaminho ou URL do arquivo de vídeo.
baseRevisionstringSimRevisão do documento.
titlestringNãoAtributo de título.
posterstringNãoCaminho ou URL da imagem de pôster.

audio

Inserir um elemento de áudio HTML5.

ParâmetroTipoObrigatórioDescrição
srcstringSimCaminho ou URL do arquivo de áudio.
baseRevisionstringSimRevisão do documento.
titlestringNãoAtributo de título.

video_embed

Inserir um embed de vídeo (iframe). Suporta YouTube (privacidade aprimorada), Vimeo e Bilibili.

ParâmetroTipoObrigatórioDescrição
videoIdstringSimID do vídeo (YouTube: 11 chars, Vimeo: numérico, Bilibili: ID BV).
baseRevisionstringSimRevisão do documento.
providerstringNãoyoutube (padrão), vimeo ou bilibili.

cjk_punctuation

Converter pontuação entre meia largura e largura total.

ParâmetroTipoObrigatórioDescrição
directionstringSimto-fullwidth ou to-halfwidth.

cjk_spacing

Adicionar ou remover espaçamento entre caracteres CJK e latinos.

ParâmetroTipoObrigatórioDescrição
spacingActionstringSimadd ou remove.

suggestions

Gerenciar sugestões de edição geradas por IA pendentes de aprovação do usuário. 5 ações.

Quando a IA usa documentinsert_at_cursor / insert_at_position / replace_in_source, selectionreplace ou documentapply_diff / batch_edit, as alterações são armazenadas como sugestões que requerem aprovação do usuário.

Todas as ações aceitam um parâmetro opcional windowId.

Segurança de Desfazer/Refazer

As sugestões não modificam o documento até serem aceitas. Isso preserva a funcionalidade completa de desfazer/refazer — os usuários podem desfazer após aceitar, e rejeitar não deixa rastros no histórico.

Modo de Aprovação Automática

Se Aprovar edições automaticamente estiver habilitado em Configurações → Integrações, as alterações são aplicadas diretamente sem criar sugestões. As ações abaixo só são necessárias quando a aprovação automática está desabilitada (o padrão).

list

Listar todas as sugestões pendentes.

Retorna: { suggestions: [...], count, focusedId }

Cada sugestão inclui id, type (insert, replace, delete), from, to, newContent, originalContent e createdAt.

accept

Aceitar uma sugestão específica, aplicando suas alterações ao documento.

ParâmetroTipoObrigatórioDescrição
suggestionIdstringSimID da sugestão a aceitar.

reject

Rejeitar uma sugestão específica, descartando-a sem alterações.

ParâmetroTipoObrigatórioDescrição
suggestionIdstringSimID da sugestão a rejeitar.

accept_all

Aceitar todas as sugestões pendentes na ordem do documento.

reject_all

Rejeitar todas as sugestões pendentes.


Ferramentas de Protocolo

Duas ferramentas autônomas para consultar capacidades do servidor e estado do documento. Estas não usam o padrão composto action.

get_capabilities

Obter as capacidades do servidor MCP e ferramentas disponíveis.

Retorna: { version, supportedNodeTypes[], supportedQueryOperators[], limits, features }

get_document_revision

Obter a revisão atual do documento para bloqueio otimista.

ParâmetroTipoObrigatórioDescrição
windowIdstringNãoIdentificador da janela.

Retorna: { revision, lastUpdated }

Use a revisão em ações de mutação para detectar edições concorrentes.


Recursos MCP

Além das ferramentas, o VMark expõe estes recursos somente leitura:

URI do RecursoDescrição
vmark://document/outlineHierarquia de títulos do documento
vmark://document/metadataMetadados do documento (caminho, contagem de palavras, etc.)
vmark://windows/listLista de janelas abertas
vmark://windows/focusedRótulo da janela atualmente em foco