Ligue assistentes de IA aos seus questionários, respostas e análises do Votira através do Model Context Protocol (MCP).
O Model Context Protocol é um padrão aberto para conectar assistentes de IA a sistemas externos. A Votira disponibiliza ferramentas de inquérito, resultados, Painel de IA e conta, com permissões explícitas para alterações e gastos de IA.
Gere uma única chave de acesso MCP em Configurações (uma chave por conta). Só é apresentada uma vez. Utilize-a como token Bearer no endpoint MCP:
Authorization: Bearer vot_mcp_xxxxxxxxxxxxxxxx
Pode rodar ou eliminar a chave a qualquer momento; a rotação invalida imediatamente o segredo anterior.
Aponte qualquer cliente MCP que suporte o transporte HTTP streamable para o endpoint. Exemplo de configuração do cliente:
{
"mcpServers": {
"votira": {
"url": "https://votira.co/mcp",
"headers": { "Authorization": "Bearer vot_mcp_xxxxxxxx" }
}
}
}
| Ferramenta | Argumentos | Retorna |
|---|---|---|
list_surveys | — | Os seus inquéritos com id, título, estado e número de respostas. |
get_survey | survey_id | Um inquérito com as suas perguntas e definições. |
get_survey_responses | survey_id, limit?, offset? | Respostas paginadas de um inquérito. |
get_survey_analysis | survey_id | Análise AI em cache para o inquérito completo e por pergunta. |
Novas e atuais chaves MCP são apenas de leitura por padrão. Ative explicitamente as permissões de escrita, eliminação e créditos de IA nas Definições. A rotação preserva as permissões selecionadas; visualizadores da organização não podem realizar operações de escrita.
Ferramentas de alteração requerem permissão de escrita, ferramentas destrutivas requerem permissão de eliminação e ferramentas de IA pagas requerem ambas. Revise os argumentos da ferramenta antes de aprovar uma operação de escrita ou que consuma créditos no seu assistente.
Os resultados JSON incluem structuredContent. As exportações de ficheiros são devolvidas como recursos MCP incorporados: texto para CSV e JSON, blobs base64 para PDF. Operações assíncronas devolvem jobId; use get_ai_job para obter o estado e resultado.
Ferramentas de gestão e auditoria da organização exigem privilégios de administrador. Chaves API pessoais, palavras-passe, compras e eliminação de conta não são expostas como ferramentas.
get_integration_capabilitiesLer operações disponíveis, esquemas, permissões e limites.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
create_surveyCriar um inquérito, incluindo páginas, perguntas e definições.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"payload": {
"type": "object"
}
},
"required": [
"payload"
],
"type": "object"
}
update_surveyAtualizar o conteúdo do inquérito, páginas, agendamento e aparência.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"payload": {
"type": "object"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"payload"
],
"type": "object"
}
duplicate_surveyDuplicar um inquérito como novo rascunho sem respostas.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"title": {
"maxLength": 2000,
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
set_survey_statusPublicar, fechar ou devolver um inquérito para rascunho.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"status": {
"enum": [
"draft",
"published",
"closed"
]
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"status"
],
"type": "object"
}
delete_surveyEliminar permanentemente um inquérito, respostas, imagens, análises e visualizações.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
list_templatesListar modelos de inquérito localizados.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
get_templateLer um modelo localizado com perguntas e tema.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"template_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"template_id"
],
"type": "object"
}
create_survey_from_templateCriar um inquérito localizado a partir de um modelo sem créditos de IA.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"template_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"title": {
"maxLength": 2000,
"type": "string"
}
},
"required": [
"template_id"
],
"type": "object"
}
get_question_typesListar todos os tipos de perguntas suportados e campos de configuração específicos por tipo.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
add_questionAdicionar uma pergunta ao inquérito.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"question": {
"type": "object"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"question"
],
"type": "object"
}
update_questionAtualizar uma pergunta mantendo a sua identidade.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"question": {
"type": "object"
},
"question_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"question_id",
"question"
],
"type": "object"
}
delete_questionEliminar uma pergunta e reparar referências de ramificação.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"question_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"question_id"
],
"type": "object"
}
reorder_questionsReordenar todas as perguntas, mantendo a ordem principal das páginas.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"order": {
"items": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"maxItems": 50,
"type": "array",
"uniqueItems": true
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"order"
],
"type": "object"
}
get_survey_previewObter perguntas A/B resolvidas sem registar uma visualização. Use respondent_id para corresponder às submissões JSON seguintes.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"respondent_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"seed": {
"maxLength": 2000,
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
generate_survey_questionsGerar perguntas a partir de uma ideia ou editar perguntas existentes de forma incremental. Custa um crédito; pode devolver um trabalho.
Permissões necessárias: write, ai
{
"additionalProperties": false,
"properties": {
"idea": {
"maxLength": 2000,
"type": "string"
},
"pages": {
"items": {
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"questions": {
"items": {
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"idea"
],
"type": "object"
}
get_ai_jobLer o estado e resultado de um trabalho de IA pertencente a esta conta.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"job_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
}
generate_question_analysisAnalisar uma pergunta de texto livre. Resultados em cache são gratuitos; nova análise custa um crédito.
Permissões necessárias: write, ai
{
"additionalProperties": false,
"properties": {
"question_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"question_id"
],
"type": "object"
}
generate_survey_analysisGerar a análise de IA do inquérito. Resultados em cache são gratuitos; nova análise custa um crédito.
Permissões necessárias: write, ai
{
"additionalProperties": false,
"properties": {
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
get_ai_creditsLer créditos de IA disponíveis, plafond, consumo e custos das operações.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
list_personasListar personas num painel pessoal ou de organização, opcionalmente restrito a um grupo.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [],
"type": "object"
}
get_personaLer uma persona sintética.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"persona_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"persona_id"
],
"type": "object"
}
create_personaCriar uma persona manualmente sem consumir créditos de IA.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"attributes": {
"type": "object"
},
"name": {
"maxLength": 2000,
"type": "string"
},
"poolIds": {
"items": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"maxItems": 500,
"type": "array",
"uniqueItems": true
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
update_personaEditar atributos da persona e substituir grupos quando fornecido.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"attributes": {
"type": "object"
},
"name": {
"maxLength": 2000,
"type": "string"
},
"persona_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"poolIds": {
"items": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"maxItems": 500,
"type": "array",
"uniqueItems": true
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"persona_id"
],
"type": "object"
}
delete_personaEliminar uma persona do painel.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"persona_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"persona_id"
],
"type": "object"
}
list_poolsListar grupos nomeados e o número de personas em cada um.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [],
"type": "object"
}
get_poolLer um grupo nomeado e as suas personas.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"pool_id"
],
"type": "object"
}
create_poolCriar um grupo de personas nomeado.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"description": {
"maxLength": 2000,
"type": "string"
},
"name": {
"maxLength": 2000,
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
update_poolRenomear um grupo ou atualizar a sua descrição.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"description": {
"maxLength": 2000,
"type": "string"
},
"name": {
"maxLength": 2000,
"type": "string"
},
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"pool_id"
],
"type": "object"
}
delete_poolEliminar um grupo e desvincular os seus membros sem eliminar as personas.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"pool_id"
],
"type": "object"
}
assign_pool_personasAdicionar ou remover personas em massa de um grupo.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"action": {
"enum": [
"add",
"remove"
]
},
"personaIds": {
"items": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"maxItems": 500,
"type": "array",
"uniqueItems": true
},
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"pool_id",
"personaIds",
"action"
],
"type": "object"
}
import_personasImportar personas de JSON. Metadados dos grupos são ignorados; personas importadas ficam por atribuir.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"personas": {
"items": {
"type": "object"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"personas"
],
"type": "object"
}
export_personasExportar personas ou um grupo como JSON ou CSV.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"format": {
"enum": [
"json",
"csv"
]
},
"persona_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [],
"type": "object"
}
generate_personasGerar personas com IA. Custa cinco créditos por persona, com reembolso para resultados em falta.
Permissões necessárias: write, ai
{
"additionalProperties": false,
"properties": {
"ageMax": {
"maximum": 120,
"minimum": 13,
"type": "integer"
},
"ageMin": {
"maximum": 120,
"minimum": 13,
"type": "integer"
},
"count": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"description": {
"maxLength": 2000,
"type": "string"
},
"extra": {
"maxLength": 2000,
"type": "string"
},
"genderMix": {
"additionalProperties": false,
"properties": {
"female": {
"maximum": 50,
"minimum": 0,
"type": "integer"
},
"male": {
"maximum": 50,
"minimum": 0,
"type": "integer"
},
"non_binary": {
"maximum": 50,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
}
},
"required": [
"description"
],
"type": "object"
}
estimate_panel_costEstimar créditos necessários para administrar um inquérito a um grupo nomeado.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"pool_id",
"survey_id"
],
"type": "object"
}
administer_panelAdministrar um inquérito a um grupo nomeado. Custa três créditos por persona; pode devolver um trabalho.
Permissões necessárias: write, ai
{
"additionalProperties": false,
"properties": {
"pool_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"scope": {
"enum": [
"user",
"org"
],
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"pool_id",
"survey_id"
],
"type": "object"
}
get_survey_resultsLer estatísticas por pergunta, análises A/B, visualizações, contagens do painel de IA e análise de desistências.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
get_partial_responsesLer respostas em andamento, separadamente das submissões concluídas.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
export_survey_resultsDescarregar respostas concluídas em CSV (até 5000 por página) ou um relatório de resultados em PDF.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"format": {
"enum": [
"csv",
"pdf"
]
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id"
],
"type": "object"
}
upload_survey_imageCarregar uma imagem PNG, JPEG, GIF ou WebP codificada em base64 (máximo 5 MB) para o tema do inquérito.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"content": {
"maxLength": 6990510,
"type": "string"
},
"contentType": {
"enum": [
"image/png",
"image/jpeg",
"image/gif",
"image/webp"
]
},
"field": {
"enum": [
"headerImage",
"backgroundImage"
]
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"field",
"contentType",
"content"
],
"type": "object"
}
submit_survey_responseSubmeter uma resposta concluída para um respondente externo; aplica regras de publicação, agendamento, ramificação e duplicados.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"answers": {
"type": "object"
},
"completionTimeSeconds": {
"maximum": 604800,
"minimum": 0,
"type": "integer"
},
"respondentInfo": {
"type": "object"
},
"respondent_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"respondent_id",
"answers"
],
"type": "object"
}
save_partial_responseGuardar automaticamente uma resposta parcial de um respondente externo quando a recolha está ativada.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"answers": {
"type": "object"
},
"completionTimeSeconds": {
"maximum": 604800,
"minimum": 0,
"type": "integer"
},
"respondentInfo": {
"type": "object"
},
"respondent_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"survey_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"survey_id",
"respondent_id",
"answers"
],
"type": "object"
}
get_accountLer perfil, idioma, domínio, plano e acesso à organização.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
update_accountAtualizar nome de exibição, idioma do serviço ou domínio personalizado. Não altera o email, credenciais ou faturação.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"customDomain": {
"maxLength": 253,
"type": [
"string",
"null"
]
},
"displayName": {
"maxLength": 100,
"minLength": 2,
"type": "string"
},
"preferredLanguage": {
"maxLength": 10,
"type": "string"
}
},
"required": [],
"type": "object"
}
get_organizationLer a organização, licenças disponíveis e créditos de IA partilhados.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
list_organization_membersListar membros da organização, funções, licenças e consumo de IA. Apenas administradores.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
add_organization_memberAdicionar uma conta Votira existente à organização. Apenas administradores.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"email": {
"maxLength": 254,
"pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
"type": "string"
},
"role": {
"enum": [
"viewer",
"editor",
"admin"
]
}
},
"required": [
"email",
"role"
],
"type": "object"
}
update_organization_memberAtualizar a função ou licença atribuída de um membro. Apenas administradores; o proprietário está protegido.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"hasLicense": {
"type": "boolean"
},
"member_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
},
"role": {
"enum": [
"viewer",
"editor",
"admin"
]
}
},
"required": [
"member_id"
],
"type": "object"
}
remove_organization_memberRemover um membro sem eliminar a sua conta. Apenas administradores.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"member_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"member_id"
],
"type": "object"
}
list_organization_invitesListar convites da organização sem expor os tokens de convite. Apenas administradores.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
}
create_organization_inviteCriar um convite e devolver o URL de partilha. Apenas administradores.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"email": {
"maxLength": 254,
"pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
"type": "string"
},
"role": {
"enum": [
"viewer",
"editor",
"admin"
]
},
"type": {
"enum": [
"member",
"guest"
]
}
},
"required": [
"role"
],
"type": "object"
}
revoke_organization_inviteRevogar um convite pendente da organização. Apenas administradores.
Permissões necessárias: delete
{
"additionalProperties": false,
"properties": {
"invite_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"invite_id"
],
"type": "object"
}
get_audit_logPesquisar o registo de auditoria da organização. Apenas administradores Enterprise.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"category": {
"enum": [
"auth",
"survey",
"results",
"ai",
"keys",
"billing",
"organization",
"profile",
"audit",
"api",
"mcp"
]
},
"date_from": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"date_to": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
},
"search": {
"maxLength": 100,
"type": "string"
}
},
"required": [],
"type": "object"
}
export_audit_logExportar até 5000 registos de auditoria em CSV. Apenas administradores Enterprise.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"category": {
"enum": [
"auth",
"survey",
"results",
"ai",
"keys",
"billing",
"organization",
"profile",
"audit",
"api",
"mcp"
]
},
"date_from": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"date_to": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
},
"search": {
"maxLength": 100,
"type": "string"
}
},
"required": [],
"type": "object"
}
list_invoicesListar faturas pessoais pagas e, para administradores, faturas da organização.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
}
},
"required": [],
"type": "object"
}
download_invoiceDescarregar o PDF de uma fatura paga após verificar a titularidade da faturação.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"invoice_id": {
"maxLength": 100,
"pattern": "^in_[A-Za-z0-9]+$",
"type": "string"
}
},
"required": [
"invoice_id"
],
"type": "object"
}
list_support_requestsListar os pedidos de suporte, relatórios de erros e pedidos de funcionalidades da conta.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"maximum": 100000,
"minimum": 0,
"type": "integer"
}
},
"required": [],
"type": "object"
}
get_support_requestLer um pedido de suporte e respostas da equipa, restrito ao seu proprietário.
Permissões necessárias: read
{
"additionalProperties": false,
"properties": {
"submission_id": {
"maxLength": 100,
"minLength": 1,
"pattern": "^[A-Za-z0-9_-]+$",
"type": "string"
}
},
"required": [
"submission_id"
],
"type": "object"
}
create_support_requestAbrir um pedido de suporte, relatório de erro ou pedido de funcionalidade.
Permissões necessárias: write
{
"additionalProperties": false,
"properties": {
"category": {
"enum": [
"bug",
"feature",
"ticket"
]
},
"description": {
"maxLength": 5000,
"minLength": 10,
"type": "string"
},
"priority": {
"enum": [
"low",
"normal",
"high",
"urgent"
]
},
"problemSolved": {
"maxLength": 5000,
"type": "string"
},
"severity": {
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"stepsToReproduce": {
"maxLength": 5000,
"type": "string"
},
"subject": {
"maxLength": 150,
"minLength": 3,
"type": "string"
},
"ticketCategory": {
"enum": [
"billing",
"technical",
"account",
"other"
]
}
},
"required": [
"category",
"subject",
"description"
],
"type": "object"
}
O endpoint implementa os métodos principais MCP JSON‑RPC: initialize, tools/list e tools/call (mais ping). Exemplo de listagem de ferramentas:
curl -X POST https://votira.co/mcp \
-H "Authorization: Bearer $VOTIRA_MCP_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Executar uma ferramenta
curl -X POST https://votira.co/mcp \
-H "Authorization: Bearer $VOTIRA_MCP_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"get_survey","arguments":{"survey_id":"srv_123"}}}'
403 Forbidden.Crie o seu primeiro inquérito com IA em minutos e descubra se a sua ideia tem potencial.
Iniciar Teste GratuitoTeste gratuito de 7 dias com todas as funcionalidades · Não é necessário cartão de crédito