Feedjoltdocs
DesarrolladoresMCP

Herramientas MCP

Las 37 herramientas del servidor MCP de Feedjolt, agrupadas por recurso, cada una con su scope y su rol requeridos - además de los comportamientos que sorprenden: los guardarraíles al eliminar tableros y estados, borrador vs. publicación del changelog, y las reglas de edición de comentarios.

Cada herramienta requiere un scope en el principal que la llama - read, write o delete. Esa concesión sale de la pantalla de consentimiento OAuth o de una clave de API. Consulta Permisos para ver qué significa cada scope y cómo concederlo.

Conector es la URL, no la clave. Las herramientas solo-Reader nunca aparecen en /mcp/writer/. Las solo-Writer nunca aparecen en /mcp/reader/. El combinado /mcp/ lista todas. El combinado es legado.

El scope no es la única barrera

Algunas herramientas añaden un segundo candado: también requieren ser OWNER o ADMIN del espacio, la misma barrera de rol que usa el panel. El scope debe seguir presente - la barrera de rol se suma a él, nunca lo sustituye.

Solo OWNER/ADMINUn CONTRIBUTOR con write todavía puede
create_board, update_board, delete_boardcreate_post, update_post, change_post_status
create_status, update_status, delete_statusadd_tag_to_post, remove_tag_from_post
create_tag, update_tag, delete_tagpost_comment (solo público)
reorder_itemsupdate_comment (cuerpo propio)
create_changelog_entry, update_changelog_entry, publish_changelog_entry, delete_changelog_entry
merge_posts, unmerge_posts, move_post, assign_post_owner, set_post_featured, delete_post

delete_comment requiere el scope delete, no write. Los CONTRIBUTOR en OAuth no pueden conceder delete, así que no pueden usar esta herramienta. Quienes tienen delete y no son OWNER/ADMIN solo pueden eliminar sus propios comentarios.

Dos campos de comentario también son privilegiados: post_comment con is_internal: true, y update_comment con is_pinned o is_internal, requieren OWNER/ADMIN. Los comentarios internos además necesitan un plan que incluya la función internal_comments (Startup y superiores).

Las claves de API actúan como ADMIN para esta barrera de rol. Una clave fjk_ es una credencial de automatización del espacio, no una persona, así que siempre pasa la comprobación de rol, sujeto a los scopes que tenga. El rol solo varía en las concesiones OAuth, donde se resuelve a partir de la membresía del usuario que autoriza.

Una llamada denegada devuelve un error de permisos que nombra OWNER y ADMIN (-32004). Consulta Resolución de problemas.

Enlaces a las fuentes y ordenación

list_posts, search_posts, get_post y los posts de get_roadmap devuelven una url al dashboard autenticado. Usa esta URL para citar el feedback. Inicia sesión y selecciona el espacio conectado a MCP antes de abrir un enlace; las rutas del dashboard usan tu espacio seleccionado. El feedback privado o interno mantiene sus requisitos de acceso.

list_posts usa sort: "new" por defecto. Con sort: "top", los posts se ordenan por puntuación ponderada, después por número de votos y, finalmente, por fecha de creación más reciente. No es una clasificación solo por votos. Los posts del roadmap también se ordenan por puntuación ponderada y después por votos. Las respuestas incluyen weighted_score y vote_count para que los agentes puedan explicar la clasificación.

get_roadmap incluye los estados ocultos del roadmap público, después de los visibles. search_posts busca fragmentos del título; no es una búsqueda semántica.

Posts

HerramientaScopeConectorPropósito
list_postsreadReaderListar/filtrar posts por tablero, estado o etiqueta, con paginación
search_postsreadReaderBuscar posts por palabra clave en el título
get_postreadReaderDetalle completo del post: cuerpo, estado, etiquetas y hasta 200 comentarios
create_postwriteWriterCrear un post en un tablero, con autoría de esta clave
update_postwriteWriterActualizar el título, cuerpo o visibilidad interna de un post
change_post_statuswriteWriterMover un post a un nuevo estado, con nota interna opcional
move_postwriteWriterMover un post a otro tablero
add_tag_to_postwriteWriterEtiquetar un post (debe usar una etiqueta existente)
remove_tag_from_postwriteWriterEliminar una etiqueta de un post
assign_post_ownerwriteWriterAsignar (o borrar) el admin responsable de un post
set_post_featuredwriteWriterDestacar o quitar el destacado de un post en el portal
merge_postswriteWriterFusionar un duplicado en un post canónico
unmerge_postswriteWriterRevertir una fusión, restaurando el post original
delete_postdeleteWriterEliminar permanentemente un post, sus votos y sus comentarios

Tableros

HerramientaScopeConectorPropósito
list_boardsreadAmbosListar todos los tableros con su visibilidad y número de posts
create_boardwriteWriterCrear un tablero
update_boardwriteWriterActualizar un tablero, incluido archivarlo
delete_boarddeleteWriterEliminar un tablero vacío únicamente - ver más abajo

Etiquetas

HerramientaScopeConectorPropósito
list_tagsreadAmbosListar todas las etiquetas con su número de posts
create_tagwriteWriterCrear una etiqueta
update_tagwriteWriterRenombrar o recolorear una etiqueta
delete_tagdeleteWriterEliminar una etiqueta - los posts se mantienen, solo pierden la etiqueta

Estados

HerramientaScopeConectorPropósito
list_statusesreadAmbosListar todos los estados del workspace
create_statuswriteWriterCrear un estado
update_statuswriteWriterActualizar el nombre, color, visibilidad en roadmap u orden de un estado
delete_statusdeleteWriterEliminar un estado, reasignando sus posts - ver más abajo

Comentarios

HerramientaScopeConectorPropósito
list_commentsreadReaderListar comentarios de un post, con paginación
post_commentwriteWriterAñadir un comentario público; is_internal requiere OWNER/ADMIN
update_commentwriteWriterEditar tu propio comentario; fijar o cambiar visibilidad como OWNER/ADMIN - ver más abajo
delete_commentdeleteWriterEliminar cualquier comentario como OWNER/ADMIN; si no, solo los tuyos

Changelog

HerramientaScopeConectorPropósito
get_changelogreadAmbosEntradas recientes publicadas del changelog
create_changelog_entrywriteWriterCrear una entrada de changelog como borrador - ver más abajo
update_changelog_entrywriteWriterActualizar el título, cuerpo o posts enlazados de una entrada
publish_changelog_entrywriteWriterPublicar un borrador - ver más abajo
delete_changelog_entrydeleteWriterEliminar permanentemente una entrada, publicada o en borrador

Roadmap

HerramientaScopeConectorPropósito
get_roadmapreadReaderPosts agrupados por todos los estados, incluidos los ocultos del roadmap

Orden

HerramientaScopeConectorPropósito
reorder_itemswriteWriterFijar el orden de visualización de tableros, etiquetas o estados en una sola llamada

Comportamientos que conviene conocer

delete_board rechaza tableros con posts

delete_board solo funciona en un tablero con cero posts, y no existe ningún argumento para forzarlo. Eliminar un tablero arrastra en cascada todos sus posts, votos y comentarios - de forma permanente, sin deshacer - así que MCP no lo hará bajo ninguna circunstancia, sin importar cómo se formule la petición.

Para retirar un tablero sin perder su contenido, llama a update_board con archived: true. El tablero desaparece de los listados activos; todos sus posts quedan intactos.

delete_status requiere un destino de reasignación

Los posts referencian su estado con una restricción de base de datos que impide eliminar un estado en uso, así que delete_status exige un reassign_to_status_id obligatorio. Cada post en el estado condenado se mueve primero a ese destino, y cada movimiento genera su propia entrada de historial de estado - igual que un cambio de estado manual.

Hay dos estados que nunca se pueden eliminar así: el estado por defecto del workspace, y el último estado restante. Convierte otro estado en el predeterminado, o crea un segundo estado, antes de eliminar cualquiera de los dos.

create_changelog_entry siempre crea un borrador

create_changelog_entry solo crea un borrador - nunca es visible para los clientes. Publicar es una llamada aparte y deliberada: publish_changelog_entry. Publicar envía un correo a cada suscriptor y dispara los webhooks del changelog, así que llega a clientes reales en el momento en que se ejecuta. Revisa el contenido de la entrada con update_changelog_entry antes de publicarla, no después.

update_comment mezcla reglas de contributor y admin

update_comment edita tres cosas independientes - body, is_pinned, is_internal - pero no siguen la misma regla. Editar body solo funciona en un comentario que el propio principal ha publicado; el servicio rechaza el intento de reescribir el texto de otro autor. Fijar (is_pinned) y cambiar la visibilidad (is_internal) son acciones OWNER/ADMIN, incluso en un comentario propio, y is_internal además necesita la función de plan internal_comments. delete_comment sigue la misma división: un OWNER/ADMIN puede eliminar cualquier comentario - lo que la hace útil para limpiar spam - mientras que el resto solo puede eliminar los suyos.

Otras cosas que conviene saber

  • create_post cuenta contra la cuota mensual de posts del workspace - la misma cuota que respeta el botón "Nuevo post" del dashboard. Falla en cuanto se alcanza la cuota.
  • get_post y list_comments devuelven comentarios internos además de los públicos - los agentes MCP ven todo lo que ve un admin. No reenvíes un comentario con is_internal: true a un cliente final.
  • merge_posts se puede revertir con unmerge_posts, pero la restauración es degradada: los votos, comentarios y etiquetas se quedan en el post destino. El post restaurado vuelve con 0 votos.
  • move_post rechaza mover un post a un tablero archivado, y rechaza un "movimiento" al tablero en el que el post ya está.
  • reorder_items descarta silenciosamente cualquier ID que no pertenezca al workspace (error tipográfico, workspace equivocado, ya eliminado) en lugar de dar error. Compara reordered con submitted en la respuesta para ver si algo se descartó.

Lo que MCP todavía no puede hacer

Las herramientas MCP operan sobre los datos de feedback de un workspace - posts, tableros, etiquetas, estados, comentarios, changelog, roadmap. No tocan la configuración del workspace, la facturación, los miembros del equipo y sus roles, ni la configuración de webhooks, widget o branding. Eso se queda en el dashboard.

On this page