rovee-publisher-mcp
OfficialPublishes content (blog posts, POIs, events, businesses, guides) and uploads media to Supabase Storage, returning public CDN URLs.
Click on "Install 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., "@rovee-publisher-mcpUpload C:\Fotos\evento.jpg and create an event for the Alicante Food Festival."
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.
Rovee Publisher MCP Server (rovee-publisher-mcp)
Servidor MCP (Model Context Protocol) local para Rovee que permite conectar cualquier cliente de IA (Claude Desktop, Antigravity, Cursor, Windsurf) para publicar contenido completo y subir archivos multimedia a Supabase.
🚀 Características
Subida de Archivos Multimedia (
upload_media):Soporta rutas locales en tu ordenador (
C:\Fotos\evento.jpgod:\imagenes\poi.png), strings Base64 y URLs remotas.Sube automáticamente al bucket
assetsde Supabase Storage en subcarpetas organizadas (blog/,pois/,eventos/,guias/,negocios/,general/).Devuelve la URL pública CDN lista para insertar en cualquier publicación.
Artículos de Blog (
publish_blog_post,list_blog_posts,get_blog_post):Publicación bilingüe simultánea (ES / EN).
Generación de slugs, vinculación de taxonomías (categorías y tags) y metadatos SEO.
Puntos de Interés / POIs (
publish_poi,list_pois):Creación y actualización de POIs turísticos con coordenadas GPS, dirección, imagen principal y galería.
Eventos (
publish_event,list_events):Gestión de eventos con fechas de inicio/fin, localización, precios, cartel y venta de entradas.
Negocios (
publish_business,list_businesses):Registro de comercios locales con datos de contacto, horarios, categoría e imágenes.
Guías Turísticas (
publish_guide,list_guides):Creación de guías temáticas enlazando múltiples POIs, eventos y negocios recomendados.
Related MCP server: digihub-mcp
🛠️ Instalación y Compilación
Entra al directorio del MCP:
cd d:\Proyectos\Personal\Rovee\rovee-publisher-mcpInstala las dependencias:
npm installCompila el código TypeScript:
npm run build
⚙️ Configuración
Solo necesitas una cosa: la SUPABASE_SERVICE_ROLE_KEY. SUPABASE_URL es
opcional (por defecto apunta al proyecto de Rovee).
⚠️ La service role key da acceso total a la base de datos saltándose RLS. No la subas al repo, no la pegues en chats y no la compartas por mensajería. Si se expone, rótala desde el panel de Supabase.
Opción A — Bloque env en tu cliente de IA (recomendada)
Funciona con Claude Desktop, Cursor, Antigravity, Windsurf y cualquier cliente MCP. No requiere clonar ni compilar nada:
{
"mcpServers": {
"rovee-publisher": {
"command": "npx",
"args": ["-y", "github:Roveeapp/rovee-publisher-mcp"],
"env": {
"SUPABASE_SERVICE_ROLE_KEY": "TU_SERVICE_ROLE_KEY_AQUI"
}
}
}
}En Windows, si tu cliente no resuelve npx directamente:
"command": "cmd",
"args": ["/c", "npx", "-y", "github:Roveeapp/rovee-publisher-mcp"]Opción B — Un .env y olvidarte
Crea ~/.rovee/.env (o ~/.config/rovee/.env) con una sola línea:
SUPABASE_SERVICE_ROLE_KEY=tu_keyA partir de ahí la config MCP no necesita bloque env, y la CLI también funciona
desde cualquier carpeta. El orden de búsqueda es: ./.env → <paquete>/.env →
~/.rovee/.env → ~/.config/rovee/.env. Lo que venga en el entorno siempre gana.
Comprobar que todo está bien
npx -y github:Roveeapp/rovee-publisher-mcp doctorVerifica la clave, la URL, qué .env se ha cargado y la conexión real con Supabase.
🖥️ Uso como CLI (sin cliente MCP)
Publicar un artículo completo con sus imágenes, en un comando:
npx -y github:Roveeapp/rovee-publisher-mcp publish articulo.json --images ./imgOpciones:
Flag | Efecto |
| Carpeta de imágenes (por defecto |
| Carpeta destino en el bucket |
| Publica como borrador en vez de |
| Valida payload e imágenes sin escribir nada |
Tokens de imagen. En el payload puedes escribir {{URL:nombre.jpg}} en el
contenido, en featured_image o donde haga falta. El comando sube cada imagen y
sustituye su token por la URL CDN definitiva antes de publicar, así que el JSON
es portable y no depende de subir las fotos a mano primero.
{
"es": { "title": "…", "content": "<p><img src=\"{{URL:hero.jpg}}\"></p>" },
"en": { "title": "…", "content": "…" },
"featured_image": "{{URL:hero.jpg}}",
"status": "published"
}💡 Ejemplo de Uso con tu IA
Una vez configurado, puedes hablarle a tu IA de forma natural:
"Sube la imagen que tengo en
C:\Fotos\restaurante.jpgy luego crea un negocio para el Restaurante El Faro en Alicante con dirección Calle Mayor 12, teléfono 965123456 y asígnales esa foto."
La IA usará primero upload_media para subir la foto a Supabase y obtener la URL, y después ejecutará publish_business pasando todos los datos estructurados.
Available Tools
12 toolsget_blog_postA
Obtiene los detalles completos de un artículo de blog por ID o slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| slug | 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 disclosure burden. It states that the tool reads 'complete details' but does not describe return format, error handling, authentication, or special behaviors. For a simple read operation this is adequate but lacks depth.
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 no filler, front-loaded with the main verb and object. Efficient and to the point, with every word earning its place.
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 is simple, but the description does not place it among siblings or specify return values. Since there is no output schema, the description could have clarified that it returns full post details and when to prefer this over list_blog_posts. Missing guidance on use cases makes it moderately 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?
The schema provides two string parameters with no descriptions (0% coverage). The description adds meaning by explaining they can be used interchangeably ('ID o slug') as lookup identifiers, which the schema does not convey. However, it does not clarify requiredness, format, or priority.
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 the specific verb 'Obtiene' (gets) targeting 'detalles completos de un artículo de blog' and specifies lookup by ID or slug. This clearly distinguishes it from sibling tools like list_blog_posts and publish_blog_post.
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 the tool is for fetching a single blog post but does not explicitly state when to use it over list_blog_posts or publish_blog_post. No alternatives or exclusions are mentioned, leaving the usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blog_postsB
Lista los artículos de blog más recientes en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states the tool lists recent posts, implying a read-only operation, but does not disclose that the default status is 'all' (including drafts) or that the default limit is 10. This omission could mislead an agent expecting only published posts, creating a transparency gap.
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 description is a single, clear sentence in Spanish, front-loaded with the action and resource. It is concise, contains no unnecessary words, and is appropriately structured for quick comprehension.
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 is a simple list operation with optional parameters, and the schema provides defaults for limit and status. The description conveys the core purpose, and the schema fills in parameter details. Although it lacks an explicit return format, 'list' implies a collection of blog posts, making it sufficiently complete for the context.
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%. The description does not mention the 'limit' or 'status' parameters at all, leaving their meaning entirely to the schema. Since the description must compensate for low coverage and does not, it adds no value beyond the schema for parameter understanding.
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 states the tool lists recent blog posts using the specific verb 'Lista' and resource 'artículos de blog'. It distinguishes from siblings like publish_blog_post (write operation) and get_blog_post (singular retrieval), making the purpose 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?
No explicit when-to-use or alternative guidance is provided. The description implies usage because it names the resource and action, but it does not explicitly state when to use this tool versus list_pois or get_blog_post. Usage is inferred rather than directly instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_businessesC
Lista los negocios registrados en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| categoria_id | No | ||
| poblacion_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It only states that the tool lists businesses, but does not disclose whether it is a read-only operation, how filtering parameters affect results, or any behavior about pagination or limits. No side effects or permissions are mentioned.
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 description is a single concise sentence that gets straight to the point without wordiness. However, its brevity sacrifices valuable information; it is not inflated but rather under-specified.
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?
Given the tool has three parameters and no output schema or annotations, the description is too minimal to support correct invocation. It does not explain return format, filtering behavior, or the meaning of the parameters, making it incomplete for a tool with this complexity.
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 input schema defines three parameters (limit, categoria_id, poblacion_id) with zero description coverage. The tool description provides no explanation of what these parameters mean or how they affect the results, leaving the agent without semantic guidance.
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 the specific verb 'Lista' (lists) and identifies the resource as 'negocios registrados' (registered businesses), clearly distinguishing from sibling tools that list other content types like blog posts or POIs. This is a specific and unambiguous purpose statement.
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 provides no guidance on when to use this tool versus alternatives such as list_pois or list_blog_posts, nor does it mention any prerequisites or filtering scenarios. It simply states the action without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsC
Lista los eventos programados en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| categoria_id | No | ||
| poblacion_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits, but it only states the core listing action. It omits details about pagination, sort order, data scope, authentication, rate limits, or response format—all of which are critical for safe invocation.
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 description is a single, front-loaded sentence that wastes no words. However, it is under-specified for a tool with parameters, so while concise, it could be better structured to include parameter semantics.
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 list tool with three optional filters and no output schema, the description is incomplete. It does not mention how results are returned, what the filters do, or any behavioral limitations, leaving considerable ambiguity for the agent.
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 the description does not explain any of the three parameters (limit, categoria_id, poblacion_id). The agent has no semantic understanding of how to use these filters, making parameter usage purely speculative.
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 states the tool's function: 'Lista los eventos programados en Rovee' (lists scheduled events in Rovee). It uses a specific verb and resource, and the 'eventos programados' scope distinguishes it from sibling tools like list_blog_posts or list_pois.
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 provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, filtering scenarios, or when to prefer this over sibling list tools, leaving the agent without contextual decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_guidesC
Lista las guías publicadas en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| poblacion_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source of behavioral disclosure. It only states the basic listing action and does not reveal pagination behavior, the effect of the 'limit' parameter, the meaning of 'poblacion_id', or the response structure. It also does not explicitly confirm the operation is read-only.
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 description is a single concise sentence with no redundant text, which is positive. However, it is under-specified rather than efficiently structured, omitting critical information that an agent would need to use the tool correctly.
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 simple listing tool with optional parameters and no output schema, the description lacks essential context: no return format, no pagination details, no explanation of the 'poblacion_id' filter, and no distinction from other listing tools. This makes it insufficient for confident selection and 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?
The input schema contains two optional parameters with no descriptions, and the tool description mentions neither 'limit' nor 'poblacion_id'. With 0% schema description coverage, the description wholly fails to compensate by explaining parameter meaning or usage.
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 states the tool's purpose: to list published guides in Rovee, using a specific verb ('Lista') and resource ('guías'). It distinguishes from sibling listing tools by resource type, though it doesn't elaborate on what 'guides' are or how they differ from other content.
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 offers no guidance on when to use this tool versus alternatives like list_blog_posts or list_pois. It neither states specific use cases nor mentions any conditions where a different listing tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_poisB
Lista los Puntos de Interés (POIs) existentes en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| categoria_id | No | ||
| poblacion_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states the tool lists POIs without disclosing side effects, filtering behavior, pagination, or read-only nature. This is insufficient for a no-annotation tool.
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 description is a single clear sentence with no redundancy, front-loaded with the core purpose. It is appropriately concise for a simple list tool and easy to parse.
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?
Although the tool is simple, the description lacks information about filter parameters, return format, and any usage context. With no annotations and no output schema, the description should provide more details to be considered 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%, and the description does not explain any of the three parameters (limit, categoria_id, poblacion_id). The Spanish parameter names hint at their meanings, but the description does not compensate for the missing schema descriptions.
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 'Lista' (lists) and clearly identifies the resource 'Puntos de Interés (POIs)' in Rovee. It distinguishes from sibling list tools like list_blog_posts, list_guides, list_events, and list_businesses.
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?
No guidance is provided on when to use this tool versus alternatives such as publish_poi or other list tools. There are no exclusions, prerequisites, or context hints beyond the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_blog_postA
Publica o actualiza un artículo de blog bilingüe (Español e Inglés) en Rovee. Gestiona automáticamente traducciones, SEO y taxonomías (categorías/tags).
| Name | Required | Description | Default |
|---|---|---|---|
| en | Yes | Contenido en inglés | |
| es | Yes | Contenido en español | |
| status | No | Estado de la publicación | published |
| tag_slugs | No | Slugs de los tags | |
| tag_labels_en | No | Nombres en inglés para los tags | |
| category_slugs | No | Slugs de las categorías (se crearán si no existen) | |
| featured_image | No | URL de la imagen destacada (usa upload_media antes si la tienes en local) | |
| category_labels_en | No | Nombres en inglés para las categorías (mismo orden que slugs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that the tool automatically manages translations, SEO, and taxonomies, which is useful. However, it lacks details about update semantics (how existing posts are identified), permissions, or error behavior.
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 description is two sentences, front-loaded with the primary action and followed by a concise summary of automatic behaviors. No unnecessary words.
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?
Given the tool's complexity (8 parameters, nested objects, no output schema), the description does not explain how updates are triggered (e.g., by slug or ID) or what response to expect. This is a significant gap for an agent to correctly invoke the tool for update scenarios.
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 100%, so the baseline is 3. The description adds that translations are managed automatically, which gives context for the es/en parameters, but does not elaborate on any specific parameter beyond the schema.
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 states the tool publishes or updates bilingual blog posts on Rovee, with a specific verb (publish/update) and resource (blog article). It distinguishes from sibling tools by mentioning automatic translation, SEO, and taxonomy management, which is unique to blog posts.
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 does not explicitly state when to use this tool versus alternatives like publish_poi or publish_guide, but the name and context make it clear it's for blog posts. The mention of automatic translations implies usage for bilingual content, but no exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_businessB
Crea o actualiza un Negocio o comercio local en Rovee (nombre, categoría, dirección, contacto, horario, imágenes).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID del negocio (opcional, para actualizar) | |
| web | No | Página web oficial | |
| slug | No | Slug URL (opcional) | |
| No | Correo electrónico de contacto | ||
| activo | No | ||
| nombre | Yes | Nombre comercial del negocio | |
| galeria | No | Galería de imágenes | |
| horario | No | Horario de apertura (ej. 'Lunes a Viernes 09:00 - 20:00') | |
| latitud | No | Coordenada latitud | |
| longitud | No | Coordenada longitud | |
| telefono | No | Teléfono de contacto | |
| destacado | No | ||
| direccion | No | Dirección física completa | |
| descripcion | Yes | Descripción del negocio y sus servicios | |
| categoria_id | No | ID de categoría del negocio | |
| poblacion_id | No | ID del municipio/población | |
| imagen_principal | No | URL de la foto o logotipo principal (usa upload_media si está en local) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only says 'creates or updates' without detailing side effects, required permissions, whether updates are partial or full replacements, or error handling. This is insufficient for a mutation tool of this complexity.
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 description is a single, focused sentence that immediately states the tool's purpose and key fields, with no wasted words. It is appropriately sized for a CRUD tool with schema support.
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 description provides only the basic create/update action without guidance on usage context, expected outputs, or update semantics. With 17 parameters and no annotations or output schema, the description is insufficient to fully understand the tool's behavior in context.
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 schema covers 88% of parameters with descriptions, so the description does not need to compensate for missing parameter documentation. It merely lists a few field names that are already described in the schema, adding no new meaning. This meets the baseline but does not go beyond it.
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 states the tool creates or updates a business/local commerce in Rovee, listing key fields like name, category, address, contact, schedule, and images. This specific verb+resource combination distinguishes it from sibling publish tools for blog posts, POIs, events, and guides.
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 usage for creating or updating businesses but does not provide explicit guidance on when to choose this tool over others like publish_poi or publish_event. It lacks any mention of alternatives, exclusions, or prerequisites, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_eventB
Crea o actualiza un Evento en Rovee (fechas, lugar, precio, fotos, descripción, organizador).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID del evento (opcional, para actualizar) | |
| slug | No | Slug URL (opcional) | |
| lugar | No | Nombre del recinto o ubicación del evento | |
| activo | No | ||
| nombre | Yes | Título o nombre del evento | |
| precio | No | Texto del precio (ej. 'Gratuito', '15€', 'Desde 10€') | |
| latitud | No | Coordenada latitud | |
| longitud | No | Coordenada longitud | |
| destacado | No | ||
| direccion | No | Dirección completa | |
| fecha_fin | No | Fecha de finalización en formato ISO | |
| descripcion | Yes | Descripción completa del evento | |
| categoria_id | No | ID de categoría de evento | |
| fecha_inicio | Yes | Fecha de inicio en formato ISO (ej. '2026-09-15T10:00:00Z' o '2026-09-15') | |
| poblacion_id | No | ID del municipio/población | |
| url_entradas | No | Enlace externo para la venta de entradas | |
| imagen_principal | No | URL del cartel o imagen destacada (usa upload_media si la tienes en local) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely says 'Crea o actualiza' (creates/updates) without revealing side effects, required permissions, update semantics (e.g., id required), idempotency, or return format. This is a significant gap for a mutation tool with no annotation support.
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 description is a single, concise sentence that front-loads the action ('Crea o actualiza') and lists key field categories. Every word earns its place; there is no fluff or unnecessary detail.
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?
Despite having 17 parameters, the description provides only a brief overview. It does not explain create vs. update behavior (e.g., using id to update), required fields, potential validations, or what the tool returns. The rich schema covers parameters well, but behavioral context is almost entirely absent, leaving the agent under-informed for a tool of this complexity.
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 88%, so the schema already documents most parameters. The description adds a high-level list of fields (fechas, lugar, precio, fotos, descripción, organizador) but does not provide additional semantic depth beyond what is in the schema. No parameter info is needed to compensate for low coverage, so a baseline 3 is appropriate.
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 states the tool creates or updates an Event in Rovee, listing key fields (dates, place, price, photos, description, organizer). This is specific and distinct from sibling publish tools (publish_blog_post, publish_poi, etc.) by explicitly targeting events.
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 usage for events (create/update), but provides no explicit guidance on when to use it versus alternatives, no exclusions, and no edge cases. The tool name and scope make the primary use obvious, but the guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_guideA
Crea o actualiza una Guía turística o temática en Rovee relacionando POIs, Eventos y Negocios.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID de la guía (opcional, para actualizar) | |
| slug | No | Slug URL (opcional) | |
| titulo | Yes | Título de la guía | |
| resumen | No | Resumen corto | |
| publicado | No | ||
| descripcion | Yes | Descripción o contenido enriquecido de la guía | |
| poblacion_id | No | ID de la población/municipio | |
| imagen_principal | No | URL de la portada de la guía (usa upload_media si está en local) | |
| pois_relacionados | No | Lista de IDs de POIs incluidos en la guía | |
| eventos_relacionados | No | Lista de IDs de Eventos incluidos en la guía | |
| negocios_relacionados | No | Lista de IDs de Negocios incluidos en la guía |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It states create/update but does not disclose update semantics (partial vs full), required permissions, or return values. This is minimal disclosure for a mutating tool.
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, complete sentence that is front-loaded with the action and resource, with no redundant text or fluff.
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 11 parameters and no output schema. The schema covers most parameters, but the description lacks guidance on when to use this vs sibling publish tools and does not explain update behavior. It provides a high-level purpose but misses behavioral and usage context that would make it 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 coverage is high (91%), yielding a baseline of 3. The description adds meaning by contextualizing the id parameter via 'Crea o actualiza' and explaining the related entity arrays via 'relacionando', which helps interpret those parameters.
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?
Description clearly states it creates or updates a guide and links POIs, Events, and Businesses. The verb 'Crea o actualiza' is specific, the resource 'Guía turística o temática' distinguishes it from sibling tools like publish_poi, publish_event, and publish_business.
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 its use for guide-level aggregation but does not explicitly state when to use it vs alternatives or provide exclusions. No when-not guidance is given, so usage is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_poiB
Crea o actualiza un Punto de Interés (POI) turístico o de interés general en Rovee.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ID del POI (opcional, si se proporciona se actualizará) | |
| slug | No | Slug URL (opcional) | |
| activo | No | Estado activo | |
| nombre | Yes | Nombre del Punto de Interés | |
| galeria | No | Lista de URLs de imágenes para la galería | |
| latitud | No | Coordenada latitud (ej. 38.3452) | |
| resumen | No | Resumen corto | |
| longitud | No | Coordenada longitud (ej. -0.4815) | |
| destacado | No | Si debe aparecer como destacado | |
| direccion | No | Dirección física | |
| descripcion | Yes | Descripción detallada del POI | |
| categoria_id | No | ID o slug de la categoría | |
| poblacion_id | No | ID de la población/municipio | |
| imagen_principal | No | URL de la imagen destacada (usa upload_media si está en local) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'creates or updates' without explaining side effects, idempotency, whether the update requires an 'id', or any authorization needs. This is a significant gap for a mutation tool.
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 description is a single, front-loaded sentence that conveys the core action and resource. There is zero wasted text; every word contributes to the message.
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?
Given the tool has 14 parameters, no output schema, and no annotations, a one-sentence description is incomplete. It does not explain return values, error conditions, or any post-publish behavior (e.g., whether the POI becomes immediately visible). The rich schema helps but does not compensate for the lack of behavioral context.
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 100%, so the baseline is 3. The description adds no parameter meaning beyond what the schema already provides, but the schema fully documents each parameter, including the optional 'id' for updates and coordinate examples.
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 states the action ('Crea o actualiza' = creates or updates) and the resource ('Punto de Interés (POI)'). It distinguishes itself from sibling publishing tools (blog post, event, business, guide) by targeting POIs specifically.
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 resource name (POI), making it clear when to use this over other publish tools. However, the description does not explicitly mention when not to use it, any prerequisites, or how it relates to list_pois or upload_media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaA
Suba una imagen (desde una ruta de archivo local en tu ordenador, base64 o URL remota) a Supabase Storage en el bucket 'assets'. Devuelve la URL pública CDN lista para usar en posts, POIs, eventos, guías o negocios.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Carpeta de destino dentro del bucket 'assets'. | general |
| source | Yes | Ruta local de la imagen en disco (ej. 'C:/Fotos/evento.jpg' o 'd:/fotos/poi.png'), string Base64 ('data:image/jpeg;base64,...') o URL pública remota. | |
| filename | No | Nombre personalizado para el archivo (opcional). Si se omite, se generará un identificador ULID único. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses core behavior: accepted input sources (local path, base64, remote URL), destination bucket, and the return of a public CDN URL. However, it omits important details like file type restrictions, size limits, overwrite behavior, or auth requirements, which are left unspecified.
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 concise sentences, front-loaded with the action and resource. Every phrase adds value and there is no redundancy or 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 simple upload tool, the description covers input formats and the output URL. It lacks details on error handling, file size limits, or content type restrictions, but these may be considered secondary for an upload tool with a clear schema.
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 100% with each parameter described in the schema. The description doesn't add significant parameter semantics beyond what the schema already provides, so the baseline of 3 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?
The description clearly states the tool uploads an image to a specific Supabase Storage bucket and returns a public CDN URL. It distinguishes itself from sibling tools, which focus on publishing content (posts, POIs, events, etc.) rather than media upload.
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 explains the tool is for uploading images and mentions the URL can be used in posts, POIs, events, guides, or businesses. It doesn't explicitly state when not to use it or mention alternatives, but the context is clear: use this before publishing content that requires media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: upload_media for media, list_* for reading, publish_* for creating/updating content types, and get_blog_post for a specific lookup. No two tools overlap in purpose.
All tool names follow a consistent verb_noun pattern in snake_case: upload_media, list_blog_posts, publish_poi, etc. The verbs are uniform (upload, list, publish, get) and the nouns are clear and consistent.
12 tools is well within the ideal range for a content publishing server. Each tool represents a necessary operation for managing media, blog posts, POIs, events, businesses, and guides without redundancy.
The toolset covers the core publishing workflow: media upload, create/update for all main content types, and list operations for each. Missing delete tools and detailed get operations for POIs, events, businesses, and guides are minor gaps that can be worked around via list operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for InsForge BaaS — database, storage, edge functions, and deployments
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server providing AI assistants with intelligent Supabase database access, featuring dynamic schema discovery, complete user management, and file storage operations.1MIT
- AlicenseBqualityBmaintenanceMCP server for the digihub.li content API, enabling Claude to read and write Stories, Solutions, and Sessions, and upload images for media.1712MIT
- AlicenseNot gradedqualityCmaintenanceAI-powered MCP server for managing a Supabase Upload App, enabling blog posts, newsletters, subscribers, and more via natural language commands.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Supabase database and storage operations, enabling querying, inserting, updating, deleting rows, schema introspection, and file storage management.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Roveeapp/rovee-publisher-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server