create_event
Manda una propuesta. La respuesta trae id, slug, status: "pending" y el aviso de que falta la revisión. Un dato inválido vuelve como error de la tool, con el mismo mensaje que el formulario, y no crea la fila.
El MCP oficial recibe la misma propuesta que el formulario público. Queda pendiente hasta que alguien la revise. No se publica sola.
create_eventManda una propuesta. La respuesta trae id, slug, status: "pending" y el aviso de que falta la revisión. Un dato inválido vuelve como error de la tool, con el mismo mensaje que el formulario, y no crea la fila.
list_upcoming_eventsLista eventos ya aprobados y próximos: title, slug, startsAt, city y kind. limit es opcional, el default es 10 y el máximo es 50. No incluye propuestas pendientes. Sirve para mirar la agenda antes de proponer una fecha repetida.
No hay tools para aprobar, rechazar, editar ni borrar. Esa revisión sigue en administración.
El cliente habla por POST a https://hornero.tech/api/mcp con Authorization: Bearer <HORNERO_MCP_TOKEN>. El token lo entrega quien administra Hornero. Tiene que tener al menos 32 caracteres y no se publica en esta página.
Si el token no está configurado, la ruta responde 503. Un bearer inválido responde 401. Un GET autenticado responde 405: no abre una sesión SSE.
En Cursor, esta es la configuración. En local el mismo servidor está en http://localhost:3000/api/mcp.
{
"mcpServers": {
"hornero": {
"url": "https://hornero.tech/api/mcp",
"headers": {
"Authorization": "Bearer <HORNERO_MCP_TOKEN>"
}
}
}
}create_event usa el contrato de proponer un evento. Este ejemplo es ilustrativo y no representa una fecha publicada.
{
"title": "Meetup de agents",
"kind": "meetup",
"format": "online",
"description": "Una charla abierta sobre agentes y la agenda de la comunidad.",
"imageUrl": "https://images.example.org/meetup.jpg",
"primaryUrl": "https://luma.com/meetup-agents",
"startsAt": "2026-11-20T19:00",
"city": "Buenos Aires",
"requiresTeam": false
}titlekindformatdescriptionimageUrlprimaryUrlstartsAtendsAtcityprovincevenueNameaddressorganizerEmailrequiresTeamteamSize