HairDora Salon Scheduling
Consulta los horarios disponibles de tu salón, citas, estilistas, servicios, clientes, presupuestos y pagos.
Servidor MCP alojado
npx add-mcp 'https://mcp.hairdora.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Lee y escribe los datos de tu salón desde tu propio código: una API REST con claves de alcance limitado y límites de tasa por clave para citas, clientes, servicios y salones, y webhooks firmados cuando algo cambia.
Claves de API
Obtén una clave y autentícate
La API REST de HairDora permite que tu propio backend trabaje con los mismos registros que muestra el panel: las citas en tu calendario, los clientes que las reservan, los servicios que ofreces y los salones a los que pertenecen.
Un administrador de tu organización crea una clave de API en el panel de HairDora. El secreto se muestra una sola vez, cuando se crea la clave, y nunca más — guárdalo en un lugar seguro. Una clave pertenece a una sola organización, por lo que la organización está implícita en la clave y nunca es necesario enviarla; además, una clave puede estar bloqueada a un solo salón.
Autentica cada solicitud con autenticación básica HTTP que lleve solo el secreto de la clave, codificado en base64, en el encabezado Authorization.
# The Authorization header is HTTP Basic auth carrying only the key secret,
# with no username and no colon.
Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)
Cada endpoint se encuentra bajo https://api.hairdora.com. Las solicitudes realizadas con una clave tienen límites de tasa por clave; superar el límite devuelve 429.
Inicio rápido
Tus primeras tres llamadas
Encuentra tu salón, lee la semana siguiente en su calendario y luego agrega un cliente.
# List the salons the key can reach
curl https://api.hairdora.com/api/salons \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
# List next week's appointments for one salon.
# startTime and endTime are ISO 8601 instants.
curl -G https://api.hairdora.com/api/appointments \
--data-urlencode "salonId=SALON_ID" \
--data-urlencode "startTime=2026-01-06T00:00:00.000Z" \
--data-urlencode "endTime=2026-01-13T00:00:00.000Z" \
--data-urlencode "sortField=startTime" \
--data-urlencode "sortDirection=ASC" \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
# Create a client in that salon
curl -X POST https://api.hairdora.com/api/clients \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)" \
-H "Content-Type: application/json" \
-d '{
"salonId": "SALON_ID",
"firstName": "Ada",
"lastName": "Lovelace",
"email": "ada@example.com"
}'
Explora la referencia completa de la API — cada endpoint con sus parámetros, cuerpo de solicitud, respuestas y alcance requerido.
CLI
Interfaz de línea de comandos
Los mismos salones, clientes, servicios y citas están disponibles desde tu terminal a través del CLI de hairdora. Instálalo globalmente con npm, o ejecútalo ad hoc con npx.
Ni siquiera necesitas una cuenta primero: hairdora signup crea una, con tu organización y primer salón, y te inicia sesión. Para una cuenta existente, hairdora login abre tu navegador y guarda una sesión, o pega un secreto de clave de API con --with-key. Los scripts y agentes sin interfaz pueden omitir el inicio de sesión por completo exportando HAIRDORA_API_KEY.
# Install once, globally
npm install -g hairdora
# or run it ad hoc without installing
npx hairdora --help
# Create an account from the terminal — no browser needed
hairdora signup --email owner@example.com
# Or log in to an existing account: opens your browser, stores a session
hairdora login
# The salons this account can reach
hairdora salons list
# Next week in one salon's calendar
hairdora appointments list --salonId SALON_ID \
--startTime 2026-01-06T00:00:00.000Z \
--endTime 2026-01-13T00:00:00.000Z --sortField startTime --sortDirection ASC
# Add a client to that salon
hairdora clients add --salonId SALON_ID --name "Ada Lovelace" --email ada@example.com
Cada comando acepta --json para una salida analizable, y hairdora schema imprime todo el árbol de comandos como JSON para que un script nunca tenga que extraer texto de ayuda. El CLI es de código abierto en github.com/hairdora/cli y se publica como hairdora en npm. Ejecuta cualquier comando con --help para ver sus opciones.
Conector de IA
Usa HairDora desde tu cliente de IA
Conecta HairDora a Claude, ChatGPT, Codex, VS Code u otro cliente MCP compatible para revisar los salones, horarios, disponibilidad, clientes, citas, servicios, estado de cotizaciones y estado de pagos en tu organización. La misma URL remota funciona para cada usuario; tu cuenta de HairDora con sesión iniciada determina qué organización está disponible.
Agrega la URL HTTP Streamable a continuación a tu cliente. Te envía a HairDora para iniciar sesión y aprobar el alcance de solo lectura hairdora:read. Puedes revocar la conexión desde la configuración de la cuenta de HairDora o desconectarla en el cliente.
# Add this remote MCP URL in Claude, ChatGPT, Codex, VS Code,
# or another Streamable HTTP MCP client:
https://mcp.hairdora.com/mcp
# Sign in to HairDora when your client opens the OAuth flow and approve the
# read-only hairdora:read scope.
# Example: "Show my salon overview and explain the next two weeks of availability."
Instala el Agent Plugin portátil para combinar este conector de solo lectura con su guía de flujo de trabajo de producto, o inspecciona el catálogo de descubrimiento público. Manifiesto del Agent Plugin Catálogo de IA
El conector tiene trece herramientas de solo lectura y dos tarjetas compactas entre hosts: una visión general limitada del salón y un detalle de cita. No puede reservar, reprogramar, cancelar ni eliminar una cita; editar un cliente; crear una cotización; cobrar o reembolsar un pago; ni mover fondos de otra manera.
Los nombres de visualización del cliente y los identificadores seudónimos de cliente, cita, salón, servicio, cotización y pago se devuelven solo donde es necesario para encontrar y encadenar registros. El correo electrónico, teléfono y dirección del cliente, notas de texto libre, razones privadas del calendario, identificadores de personal, datos de tarjeta de pago o procesador, identificadores de organización y registros sin procesar ilimitados están excluidos. Solo conecta cuentas y conversaciones autorizadas para manejar los datos de tu salón.
Agent Skills
Enseña a tu agente de codificación HairDora
HairDora incluye Agent Skills — guías que siguen el estándar agentskills.io que enseñan a los agentes de codificación cómo ejecutar flujos de trabajo de salón con el CLI de hairdora y el conector MCP, en lugar de adivinar comandos y herramientas.
# Install the HairDora skills into your coding agent
npx skills add hairdora/skills
Un comando instala las habilidades en Claude Code, Cursor, Codex, Gemini CLI y cualquier otro agente que siga el estándar de Skills. El CLI también incluye las mismas guías, con versiones coincidentes con los comandos que incluye: hairdora skills get <name> imprime una bajo demanda.
Las habilidades son de código abierto en github.com/hairdora/skills. Los usuarios de Claude también pueden instalar el plugin de Claude de HairDora, que combina el conector junto con las habilidades: github.com/hairdora/claude-plugin.
Alcances
Privilegio mínimo por defecto
Cada clave lleva una lista de alcances, por lo que una integración que solo necesita leer tu calendario nunca obtiene la capacidad de cambiarlo. Las nuevas claves comienzan con solo lectura; amplíalas explícitamente en el panel. Una solicitud cuya clave no tenga el alcance que requiere un endpoint se rechaza con 403.
- appointments:readLista citas y lee una cita individual.
- appointments:writeCrea, actualiza y elimina citas.
- clients:readLista clientes y lee un cliente individual.
- clients:writeCrea, actualiza y elimina clientes.
- services:readLista servicios y lee un servicio individual.
- services:writeCrea, actualiza y elimina servicios.
- salons:readLista los salones de tu organización y lee uno.
No hay alcance salons:write: un salón es el contenedor donde viven tus datos, creado cuando te registras, no algo que una integración crea.
Webhooks
Webhooks firmados
Agrega una suscripción de webhook a tu salón y HairDora envía por POST los eventos que elijas a tu servidor a medida que ocurren. Una lista de eventos vacía se suscribe a todos ellos.
- appointment.createdSe reservó una cita.
- appointment.updatedSe movió, reprogramó o editó una cita.
- appointment.deletedSe eliminó una cita.
- client.createdSe agregó un cliente.
- client.updatedCambiaron los detalles de un cliente.
- service.createdSe agregó un servicio.
- service.updatedSe editó un servicio.
POST https://your-server.com/hairdora-webhook
{
"event": "appointment.created",
"timestamp": 1719000000,
"data": { "...": "..." }
}
Verifica la firma
Cada entrega lleva un encabezado X-Hairdora-Signature de la forma t=timestamp,v1=firma, donde la firma es un HMAC-SHA256 de timestamp.cuerpo con la clave del secreto de suscripción que se te mostró una vez cuando se creó la suscripción. Recalcúlalo sobre el cuerpo sin procesar y compara antes de confiar en el payload.
import crypto from 'node:crypto'
// body must be the RAW request body, byte for byte
function verify(header, body, secret) {
const [t, v1] = (header || '').split(',').map(part => part.split('=')[1])
if (!t || !v1) return false
const expected = crypto
.createHmac('sha256', secret)
.update(\`${t}.${body}\`)
.digest('hex')
// timingSafeEqual throws on a length mismatch, so a malformed signature
// has to be rejected before the comparison rather than by it.
if (v1.length !== expected.length) return false
return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
}
La entrega es un intento de mejor esfuerzo con un tiempo de espera de cinco segundos y sin reintentos, así que responde 2xx rápidamente y haz el trabajo de forma asíncrona. Un endpoint que falla veinte veces seguidas se desactiva automáticamente y debe reactivarse en el panel.