Dirección base
https://app.do-too.com/api/v1
Todas las operaciones documentadas pertenecen a la versión v1.
Referencia de API
Un contrato personal para que un cliente actúe en nombre de una cuenta de dotoo. Lee la cuenta y los retos de quien emite el token y escribe en su nombre: marca el día, crea retos y se apunta a ellos, escribe en el chat, gasta dotoos, lleva clubes y cambia ajustes.
Este corte existe para uso personal antes de abrir una plataforma para terceros.
| Recurso | Operación | Qué devuelve |
|---|---|---|
| Cuenta |
GET
/api/v1/yo
|
Tu nivel, XP, dotoos y días cumplidos, sin correo. |
| Retos |
GET
/api/v1/cohortes
|
Tus retos abiertos o en marcha, con su día y si hoy toca. |
| Retos |
GET
/api/v1/cohortes/{id}
|
La ficha completa de uno de tus retos, también si ya terminó; uno ajeno responde 404. |
| Retos |
GET
/api/v1/cohortes/publicas
|
Retos públicos por empezar, con plazas y en tu idioma. |
| Retos |
GET
/api/v1/cohortes/plantillas
|
Las plantillas disponibles para crear un reto. |
| Retos |
GET
/api/v1/cohortes/historial
|
Tus retos en curso, terminados o abandonados. |
| Retos |
GET
/api/v1/cohortes/{id}/invitables
|
Gente del reto anterior que puedes invitar a uno de tus retos. |
| Retos |
GET
/api/v1/hoy
|
Invitaciones pendientes y retos disueltos que aún no has visto. |
| Retos |
GET
/api/v1/invitaciones/{token}
|
Un reto visto desde su enlace de invitación. |
| Retos |
GET
/api/v1/temas
|
El tema vigente de retos, o uno pasado por su clave. |
| Retos |
POST
/api/v1/cohortes
|
Crea un reto; nace en revisión salvo las familias de textos fijos. |
| Retos |
PATCH
/api/v1/cohortes/{id}
|
Cambia descripción, categoría, plazas o los campos del diario de un reto. |
| Retos |
POST
/api/v1/cohortes/{id}/reintentar_revision
|
Vuelve a pasar por moderación un reto que se quedó sin veredicto. |
| Retos |
POST
/api/v1/cohortes/{id}/participacion
|
Te une a un reto público por su id. |
| Retos |
POST
/api/v1/invitaciones/{token}
|
Te une a un reto por su enlace de invitación, también privado. |
| Retos |
DELETE
/api/v1/cohortes/{id}/participacion
|
Sales de un reto, o lo disuelves si lo creaste. |
| Retos |
POST
/api/v1/cohortes/{id}/invitaciones
|
Invita a gente del reto anterior, con el resultado de cada uno. |
| Retos |
PUT
/api/v1/cohortes/{id}/voto_de_franja
|
Tu voto de franja del día mientras el reto está en su lobby. |
| Retos |
POST
/api/v1/cohortes/{id}/toques
|
Un toque a quien aún no ha hecho hoy su check-in. |
| Check-ins y juegos |
POST
/api/v1/subidas
|
Una subida reservada para la foto de un check-in. |
| Check-ins y juegos |
POST
/api/v1/cohortes/{id}/checkins
|
El check-in de hoy de un reto: nuevo o el que ya había. |
| Check-ins y juegos |
POST
/api/v1/cohortes/{id}/regla/intentos
|
Tu envío a la pizarra de La regla oculta, con su veredicto. |
| Check-ins y juegos |
POST
/api/v1/cohortes/{id}/regla/formulaciones
|
Tu propuesta de regla, pendiente del juez. |
| Check-ins y juegos |
GET
/api/v1/blurs_del_dia/{id}
|
Un día de Blur: turno, opciones y tu respuesta. |
| Check-ins y juegos |
POST
/api/v1/blurs_del_dia/{id}/respuesta
|
Tu respuesta al Blur del día y si acertaste. |
| Check-ins y juegos |
GET
/api/v1/fotos_de_blur/{id}
|
La foto desenfocada de un día de Blur. |
| Check-ins y juegos |
GET
/api/v1/fotos_de_blur/{id}/nitida
|
La foto nítida de un día de Blur, si ya puedes verla. |
| Atrevimientos |
GET
/api/v1/fotos_de_atrevimientos/{id}
|
La foto de un atrevimiento cumplido del grupo. |
| Atrevimientos |
POST
/api/v1/atrevimientos_del_dia/{id}/valoracion
|
Tu valoración (si/no) de un atrevimiento que ya cumpliste. |
| Chat |
GET
/api/v1/chat/mensajes
|
El hilo de un reto o de una sala compartida. |
| Chat |
POST
/api/v1/chat/novedades
|
Lo nuevo de todos tus chats desde la última llamada de esta app. |
| Chat |
POST
/api/v1/chat/mensajes
|
Escribe un mensaje en el chat de un reto o de una sala. |
| Chat |
DELETE
/api/v1/chat/mensajes/{id}
|
Borra un mensaje propio. |
| Chat |
PUT
/api/v1/chat/mensajes/{id}/reaccion
|
Pone, cambia o quita tu reacción sobre un mensaje. |
| Chat |
POST
/api/v1/chat/mensajes/{id}/denuncia
|
Deja un mensaje marcado para que se revise. |
| Economía |
GET
/api/v1/tesoreria
|
Saldo de dotoos y los últimos movimientos del ledger. |
| Economía |
GET
/api/v1/apuestas
|
Apuestas de dotoos pendientes y resueltas, con el balance. |
| Economía |
POST
/api/v1/cohortes/{id}/apuestas
|
Apuesta dotoos a cumplir la semana de un reto en marcha. |
| Economía |
GET
/api/v1/armario
|
Catálogo de prendas y pelajes, con lo comprado y lo puesto. |
| Economía |
POST
/api/v1/armario/compras
|
Compra una prenda del armario con dotoos. |
| Economía |
PATCH
/api/v1/armario/compras/{id}
|
Pone o quita una prenda ya comprada. |
| Economía |
PATCH
/api/v1/armario/pelaje
|
Pone un pelaje, comprándolo primero si es de pago. |
| Clubes |
GET
/api/v1/clubs
|
Tus clubes, con su estado de revisión y tu límite. |
| Clubes |
GET
/api/v1/clubs/publicos
|
Clubes abiertos cuyo nombre contiene un texto. |
| Clubes |
POST
/api/v1/clubs
|
Crea un club del que eres owner; queda en revisión. |
| Clubes |
GET
/api/v1/clubs/{id}
|
Un club tuyo: socios, revisión y, si eres owner, la bandeja. |
| Clubes |
POST
/api/v1/clubs/{id}/reintentar_revision
|
Vuelve a pedir la revisión de un club que quedó sin veredicto. |
| Clubes |
GET
/api/v1/clubs/invitaciones/{token}
|
La ficha pública que abre el enlace de un club. |
| Clubes |
POST
/api/v1/clubs/{id}/solicitudes
|
Pide entrar en un club abierto desde el buscador. |
| Clubes |
POST
/api/v1/clubs/invitaciones/{token}
|
Pide entrar en un club por su enlace. |
| Clubes |
POST
/api/v1/clubs/{id}/solicitudes/{solicitud_id}/aceptar
|
Admite en tu club a quien pidió entrar. |
| Clubes |
DELETE
/api/v1/clubs/{id}/solicitudes/{solicitud_id}
|
Rechaza a quien pidió entrar en tu club. |
| Clubes |
GET
/api/v1/clubs/{id}/personas
|
Un owner busca por username exacto a quién invitar. |
| Clubes |
POST
/api/v1/clubs/{id}/invitaciones
|
Un owner invita a una persona; si acepta, entra sin aprobación. |
| Clubes |
GET
/api/v1/clubs/invitaciones_recibidas
|
Las invitaciones a un club que tienes pendientes. |
| Clubes |
POST
/api/v1/clubs/{id}/invitaciones/{invitacion_id}/aceptar
|
Acepta una invitación y entra en el club. |
| Clubes |
DELETE
/api/v1/clubs/{id}/invitaciones/{invitacion_id}
|
Rechaza una invitación sin avisar a quien invitó. |
| Companion |
GET
/api/v1/cohortes/{id}/acompanamiento
|
La configuración del companion en un reto tuyo. |
| Companion |
GET
/api/v1/cohortes/{id}/acompanamiento/mensajes
|
La conversación de hoy y el estado del último consejo. |
| Companion |
GET
/api/v1/cohortes/{id}/acompanamiento/recuerdos
|
Lo que el companion recuerda de ti en ese reto. |
| Perfiles |
GET
/api/v1/usuarios/{username}
|
El perfil de una persona: el tuyo, completo. |
| Ajustes |
GET
/api/v1/ajustes
|
Idioma, recordatorio diario, avisos y franja de no molestar. |
| Ajustes |
PATCH
/api/v1/ajustes
|
Cambia idioma, recordatorio diario, avisos o franja de no molestar. |
| Ajustes |
PATCH
/api/v1/cohortes/{id}/recordatorio
|
Enciende o apaga el recordatorio de uno de tus retos. |
| Ajustes |
GET
/api/v1/ajustes/apps-conectadas
|
Las apps conectadas a tu cuenta. |
| Ajustes |
DELETE
/api/v1/ajustes/apps-conectadas/{id}
|
Desconecta una app conectada. |
| Dejar de fumar |
POST
/api/v1/cohortes/{id}/consumos
|
Suma una unidad fumada hoy. |
| Dejar de fumar |
DELETE
/api/v1/cohortes/{id}/consumos/ultimo
|
Resta el último consumo de hoy. |
| Dejar de fumar |
PATCH
/api/v1/cohortes/{id}/dejar_de_fumar/confianza
|
Guarda la confianza para mañana en el plan poco a poco. |
| Dejar de fumar |
POST
/api/v1/cohortes/{id}/antojos
|
Apunta un antojo y si lo superaste. |
| Dejar de fumar |
PATCH
/api/v1/cohortes/{id}/dejar_de_fumar/contador
|
Elige el contador que destaca tu ficha. |
| Greetings |
GET
/api/v1/saludos
|
El feed de Greetings Room, con tus apoyos y denuncias. |
| Greetings |
POST
/api/v1/saludos
|
Publica un greeting; queda en revisión. |
| Greetings |
GET
/api/v1/saludos/{id}
|
Un greeting tuyo y su revisión, también si la moderación lo borró. |
| Greetings |
POST
/api/v1/saludos/{id}/reintentar_revision
|
Vuelve a pedir la revisión de un greeting que quedó sin veredicto. |
| Greetings |
DELETE
/api/v1/saludos/{id}
|
Borra un greeting tuyo. |
| Greetings |
PUT
/api/v1/saludos/{id}/apoyo
|
Apoya un greeting del feed. |
| Greetings |
DELETE
/api/v1/saludos/{id}/apoyo
|
Quita tu apoyo a un greeting. |
| Greetings |
POST
/api/v1/saludos/{id}/denuncia
|
Marca un greeting del feed para que se revise. |
| Fogatas |
GET
/api/v1/fogatas
|
Tus fogatas vivas. |
| Fogatas |
POST
/api/v1/fogatas
|
Crea una fogata de 25 o 50 minutos. |
| Fogatas |
GET
/api/v1/fogatas/{id}
|
La sala: reloj, tu intención y tu resultado. |
| Fogatas |
POST
/api/v1/fogatas/{id}/empezar
|
Arranca una fogata que creaste. |
| Fogatas |
PATCH
/api/v1/fogatas/{id}/resultado
|
Cuenta cómo te fue al terminar. |
| Fogatas |
DELETE
/api/v1/fogatas/{id}
|
Borra una fogata que creaste. |
| Journal |
GET
/api/v1/journal
|
Lista tu diario, con sus cifras. |
| Journal |
GET
/api/v1/journal/hoy
|
Abre la entrada de hoy desde un reto Journal. |
| Journal |
PUT
/api/v1/journal/hoy
|
Guarda la entrada de hoy y marca el día. |
| Journal |
GET
/api/v1/journal/{fecha}
|
Lee una entrada por su fecha. |
| Journal |
GET
/api/v1/journal/ajustes
|
Mira si se rescata un agradecimiento. |
| Journal |
PATCH
/api/v1/journal/ajustes
|
Activa o apaga ese recordatorio. |
Antes de llamar
Cada petición representa al sujeto del token. Un identificador recibido por la ruta solo selecciona recursos a los que esa cuenta ya tiene acceso.
https://app.do-too.com/api/v1
Todas las operaciones documentadas pertenecen a la versión v1.
Authorization: Bearer <token>
El token es revocable, caduca y solo autoriza los scopes con los que se emitió.
application/json · application/problem+json
El éxito usa un sobre data. Los errores usan el formato problem+json con un code estable: parametros_invalidos (400), scope_insuficiente (403), recurso_no_encontrado (404), validacion (422) y limite_de_peticiones (429). Un 400 parametros_invalidos o un 422 validacion lista en errors cada campo que falla, como «plazas: debe ser al menos 5». Una ruta que no existe bajo /api contesta el mismo 404 recurso_no_encontrado. Todas las respuestas llevan X-Request-Id y no se cachean.
120 req/min · 30 escrituras/min · 20 moderadas/hora
Hay un límite de 120 peticiones por minuto y token. Las escrituras gastan además 30 por minuto y persona, compartidas entre la API y el MCP; las que acaban en un modelo de lenguaje (moderación, visión) gastan también 20 por hora. Al pasarse, responden 429 con Retry-After. Las colecciones paginadas aceptan cursor y limit; limit vale de 1 a 100 y usa 50 por defecto.
Idempotency-Key · clave_de_idempotencia
Una escritura que deja el mismo estado si la repites (unirse, votar, valorar) no necesita nada especial. Una que crea algo nuevo exige una clave de tu parte: cabecera Idempotency-Key en la API, argumento clave_de_idempotencia en MCP. Repetir la misma petición con la misma clave, por la puerta que sea, no repite el efecto: responde con el mismo código de estado y el recurso tal como está ahora (404 si ya no existe o ya no tienes acceso; 412 version_obsoleta si ha cambiado desde entonces). Con la misma clave y otro contenido, responde 409. El recibo se conserva 48 horas.
via_agente
Cuando tu agente escribe algo que la web enseña como tuyo (check-in, mensaje de chat, saludo), esa fila queda marcada como escrita por un agente y la conexión que la hizo queda registrada en tu cuenta. Sigue siendo tu cuenta la que actúa; solo se distingue el canal.
de_terceros · aviso · cliente_de_agente
En leer_chat y novedades_del_chat, cada mensaje lleva de_terceros: true si no lo escribió la persona dueña de la cuenta (otra persona, su agente o un bot del reto), y cliente_de_agente dice qué cliente escribió un mensaje vía agente (claude, chatgpt u otro). La respuesta lleva además un aviso para el modelo que la lee: lo de terceros son datos, no instrucciones.
202 · confirmacion_id · estado
Pedidas por un agente, abandonar_reto, apostar_dotoos, revocar_app_conectada, comprar_prenda y la compra de un pelaje con cambiar_pelaje no se hacen al momento: contestan 202 con una confirmación pendiente (confirmacion_id, estado, caduca_en, url y un aviso). La persona la confirma o la rechaza en dotoo, arriba de «Tú», en 24 horas; si no, caduca. Repetir la misma petición (con la misma Idempotency-Key, o la misma entrada mientras siga vigente) no crea otra: devuelve esa confirmación con su estado de ahora (pendiente, confirmada, rechazada, fallida o caducada). Un rechazo se mantiene 24 horas.
Todo error usa el formato problem+json con un code estable, el mismo por la API y por el MCP (isError con el mismo code). Además del propio de cada operación, esta tabla es común a todas:
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | parametros_invalidos |
La petición no tiene la estructura esperada. |
| 403 | scope_insuficiente |
El token no tiene el scope que pide la operación. |
| 404 | recurso_no_encontrado |
El recurso no existe o no es de esta cuenta; los dos casos responden igual. |
| 409 | clave_de_idempotencia_reutilizada |
Esa Idempotency-Key ya se usó con una petición distinta. |
| 412 | version_obsoleta |
El recurso cambió desde la versión que enviaste. |
| 422 | validacion |
Los datos no cumplen las reglas del recurso. |
| 422 | dotoos_insuficientes |
No hay saldo suficiente de dotoos para esta acción. |
| 422 | cupo_agotado |
Se ha agotado el cupo de esta acción. |
| 422 | familia_no_soportada |
Esa familia de reto no se juega por agente: la trivia solo se juega en la app. |
| 400 | imagen_ilegible |
La imagen enviada en base64 no se puede leer. |
| 413 | foto_demasiado_grande |
La foto pasa de 10 MB. |
| 428 | confirmacion_requerida |
La operación es destructiva y exige el campo confirmacion. |
| 429 | limite_de_peticiones |
Se ha superado un límite de peticiones; la respuesta lleva Retry-After. |
| 429 | tope_diario_de_agente |
Tu agente ya ha escrito hoy el máximo de mensajes en ese chat. Sin Retry-After: no se reintenta hasta mañana. |
Un conflicto propio de una operación (por ejemplo, ya cumplido o reto completo) también responde 409, con un code distinto que explica la sección de esa operación.
Cada operación pide el permiso mínimo indicado en su sección. Un token sin él recibe 403. Los scopes van por dominio: leer uno no permite escribir en él, y dotoos:gastar va aparte. Al conectar por OAuth das de golpe los que pida tu agente; si no pide ninguno, todos menos dotoos:gastar; una conexión anterior conserva solo los de lectura hasta que vuelvas a conectarla.
perfil:leer
cohortes:leer
chat:leer
social:leer
journal:leer
companion:leer
spa:leer
perfil:escribir
cohortes:escribir
checkins:escribir
chat:escribir
social:escribir
dotoos:gastar
journal:escribir
spa:escribir
Cuenta
Una lectura mínima del estado personal, sin correo ni credenciales.
GET
/api/v1/yo
perfil:leer
Resume la cuenta personal representada por el Bearer.
curl -s \
'https://app.do-too.com/api/v1/yo' \
-H 'Authorization: Bearer <token>'
Retos
Los retos abiertos o en marcha de la cuenta y la oferta pública: leerlos, crearlos, ajustarlos, unirse, invitar, votar la franja, dar toques y abandonarlos.
GET
/api/v1/cohortes
cohortes:leer
Devuelve los retos vivos a los que pertenece la cuenta.
curl -s \
'https://app.do-too.com/api/v1/cohortes' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/publicas
cohortes:leer
Descubre oferta pública futura a la que la cuenta todavía puede unirse.
curl -s \
'https://app.do-too.com/api/v1/cohortes/publicas?limit=20' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/{id}
cohortes:leer
Lee la ficha completa de un reto dentro de las pertenencias de la cuenta, en marcha o ya cerrado.
curl -s \
'https://app.do-too.com/api/v1/cohortes/42' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/plantillas
cohortes:leer
Devuelve las plantillas con las que se puede crear un reto nuevo.
curl -s \
'https://app.do-too.com/api/v1/cohortes/plantillas' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/historial
cohortes:leer
Devuelve las filas del historial de retos de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/cohortes/historial?estado=en_curso' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/{id}/invitables
cohortes:leer
Lista la gente del reto anterior que se puede invitar a uno de los retos de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/cohortes/42/invitables' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/hoy
cohortes:leer
Invitaciones pendientes y retos disueltos sin avisar de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/hoy' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/invitaciones/{token}
cohortes:leer
Consulta un reto desde su enlace de invitación.
curl -s \
'https://app.do-too.com/api/v1/invitaciones/abc123' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/temas
cohortes:leer
Consulta el tema vigente de retos, o uno pasado por su clave.
curl -s \
'https://app.do-too.com/api/v1/temas' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/cohortes
cohortes:escribir
Crea un reto con la cuenta como creadora: la misma alta que el formulario de la web.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"nombre":"Leer 20 minutos","categoria":"aprendizaje","duracion_dias":14,"tipo_de_check":"simple"}'
PATCH
/api/v1/cohortes/{id}
cohortes:escribir
Cambia los ajustes de un reto: los mismos que la rueda de ajustes de la web.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/cohortes/42' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"plazas":10}'
POST
/api/v1/cohortes/{id}/reintentar_revision
cohortes:escribir
Vuelve a pedir el veredicto de moderación de un reto sin_veredicto.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/reintentar_revision' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/cohortes/{id}/participacion
cohortes:escribir
Apunta a la cuenta a un reto público y aprobado por su id, sin enlace.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/participacion' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/invitaciones/{token}
cohortes:escribir
Apunta a la cuenta a un reto desde su enlace de invitación, como la web.
curl -s -X POST \
'https://app.do-too.com/api/v1/invitaciones/abc123' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/cohortes/{id}/participacion
cohortes:escribir
Saca a la cuenta de un reto; si lo creó, lo disuelve para todos.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/cohortes/42/participacion?confirmacion=true' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/cohortes/{id}/invitaciones
cohortes:escribir
Invita a varias personas a la vez y devuelve el resultado de cada una.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/invitaciones' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"user_ids":["7","12"]}'
PUT
/api/v1/cohortes/{id}/voto_de_franja
cohortes:escribir
Vota mañana, mediodía o tarde_noche como franja del día del reto.
curl -s -X PUT \
'https://app.do-too.com/api/v1/cohortes/42/voto_de_franja' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"opcion":"manana"}'
POST
/api/v1/cohortes/{id}/toques
cohortes:escribir
Avisa a alguien del reto que hoy aún no ha hecho su check-in.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/toques' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"user_id":"7"}'
Check-ins y juegos
Lo mismo que el botón del día y los juegos de la ficha del reto. Lo que marca tu agente se ve en el reto con la etiqueta «vía agente».
POST
/api/v1/subidas
checkins:escribir
Reserva la subida de una foto para marcar el día en un reto de foto, atrevimiento o Blur.
curl -s -X POST \
'https://app.do-too.com/api/v1/subidas' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"nombre_de_archivo":"foto.jpg","bytes":183422,"checksum":"1B2M2Y8AsgTpgAmY7PhCfg==","tipo_mime":"image/jpeg"}'
POST
/api/v1/cohortes/{id}/checkins
checkins:escribir
Marca el día de hoy de un reto tuyo, con lo que pida su familia, como el botón del día en la web.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/checkins' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"cantidad":30}'
POST
/api/v1/cohortes/{id}/regla/intentos
checkins:escribir
Prueba una palabra contra la regla oculta de hoy. Queda en la pizarra del grupo, como en la ficha.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/regla/intentos' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"texto":"perro"}'
POST
/api/v1/cohortes/{id}/regla/formulaciones
checkins:escribir
Propone cuál es la regla oculta de hoy. Si aciertas, cierras el día del grupo y cumples.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/regla/formulaciones' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"texto":"palabras de cinco letras"}'
GET
/api/v1/blurs_del_dia/{id}
cohortes:leer
Un día de Blur de un reto tuyo: de quién es el turno, las cuatro opciones y tu respuesta.
curl -s \
'https://app.do-too.com/api/v1/blurs_del_dia/42' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/blurs_del_dia/{id}/respuesta
checkins:escribir
Elige qué hay en la foto desenfocada del día, como la mesa de cuatro opciones de la web.
curl -s -X POST \
'https://app.do-too.com/api/v1/blurs_del_dia/42/respuesta' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"opcion":2}'
GET
/api/v1/fotos_de_blur/{id}
cohortes:leer
La foto desenfocada de un día de Blur de un reto tuyo, la que hay que adivinar.
curl -s \
'https://app.do-too.com/api/v1/fotos_de_blur/42' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/fotos_de_blur/{id}/nitida
cohortes:leer
La foto original de un día de Blur.
curl -s \
'https://app.do-too.com/api/v1/fotos_de_blur/42/nitida' \
-H 'Authorization: Bearer <token>'
Atrevimientos
Escrituras en nombre de la cuenta. Repetir la misma petición deja el mismo estado.
POST
/api/v1/atrevimientos_del_dia/{id}/valoracion
checkins:escribir
Guarda si te gustó (si o no) el atrevimiento del día que ya cumpliste, como el sí/no de la web.
curl -s -X POST \
'https://app.do-too.com/api/v1/atrevimientos_del_dia/42/valoracion' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"valoracion":"si"}'
GET
/api/v1/fotos_de_atrevimientos/{id}
cohortes:leer
La foto de un atrevimiento cumplido en un reto tuyo, como en la galería del reto.
curl -s \
'https://app.do-too.com/api/v1/fotos_de_atrevimientos/42' \
-H 'Authorization: Bearer <token>'
Chat
Escrituras en nombre de la cuenta. cohorte_id o sala_id, nunca los dos: el argumento discriminado según hables del chat de un reto o del de una sala.
GET
/api/v1/chat/mensajes
chat:leer
El hilo de un reto o de una sala compartida, paginado.
curl -s \
'https://app.do-too.com/api/v1/chat/mensajes?cohorte_id=42' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/chat/novedades
chat:leer
Los mensajes nuevos de todos los retos y salas de la persona desde la última llamada de esta app conectada, agrupados por chat.
curl -s -X POST \
'https://app.do-too.com/api/v1/chat/novedades' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"limite":50}'
POST
/api/v1/chat/mensajes
chat:escribir
Escribe un mensaje en el chat de un reto o de una sala compartida.
curl -s -X POST \
'https://app.do-too.com/api/v1/chat/mensajes' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"cohorte_id":"42","cuerpo":"¡Hola!"}'
DELETE
/api/v1/chat/mensajes/{id}
chat:escribir
Borra un mensaje propio del chat.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/chat/mensajes/99?cohorte_id=42' \
-H 'Authorization: Bearer <token>'
PUT
/api/v1/chat/mensajes/{id}/reaccion
chat:escribir
Pone, cambia o quita la reacción de la cuenta sobre un mensaje.
curl -s -X PUT \
'https://app.do-too.com/api/v1/chat/mensajes/99/reaccion?cohorte_id=42' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"tipo":"aplauso"}'
POST
/api/v1/chat/mensajes/{id}/denuncia
chat:escribir
Deja un mensaje del chat marcado para que se revise.
curl -s -X POST \
'https://app.do-too.com/api/v1/chat/mensajes/99/denuncia?cohorte_id=42' \
-H 'Authorization: Bearer <token>'
Economía
Lecturas del saldo de dotoos y del armario, y las escrituras que gastan dotoos: apostar, comprar una prenda, equiparla o cambiar el pelaje.
GET
/api/v1/tesoreria
perfil:leer
Saldo de dotoos de la cuenta y sus últimos movimientos, del más reciente al más antiguo.
curl -s \
'https://app.do-too.com/api/v1/tesoreria' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/apuestas
perfil:leer
Apuestas de dotoos pendientes y resueltas de la cuenta, con el balance ganado o perdido.
curl -s \
'https://app.do-too.com/api/v1/apuestas' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/cohortes/{id}/apuestas
dotoos:gastar
Apuesta 3 dotoos a cumplir 6 de los 7 días de la semana natural en marcha; premio 6, sin cancelación.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/apuestas' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/armario
perfil:leer
Catálogo de prendas y pelajes, con lo que la cuenta ya tiene comprado y lo que lleva puesto.
curl -s \
'https://app.do-too.com/api/v1/armario' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/armario/compras
dotoos:gastar
Compra una prenda del armario con dotoos; sin devolución.
curl -s -X POST \
'https://app.do-too.com/api/v1/armario/compras' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"prenda":"gorro_de_lana","confirmacion":20}'
PATCH
/api/v1/armario/compras/{id}
perfil:escribir
Pone (equipada: true) o quita (equipada: false) una prenda ya comprada por la cuenta.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/armario/compras/42' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"equipada":true}'
PATCH
/api/v1/armario/pelaje
perfil:escribir
Pone un pelaje ya desbloqueado por nivel, o lo compra con dotoos la primera vez si es de pago.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/armario/pelaje' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"tono":"a8edcb"}'
Clubes
Lecturas con social:leer y escrituras con social:escribir. Un club que no es tuyo, o que aún no está aprobado y no es tuyo, responde lo mismo que uno que no existe.
GET
/api/v1/clubs
social:leer
Los clubes de la cuenta, también los que siguen en revisión.
curl -s \
'https://app.do-too.com/api/v1/clubs' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/clubs/publicos
social:leer
Clubes aprobados cuyo nombre contiene el texto de busqueda.
curl -s \
'https://app.do-too.com/api/v1/clubs/publicos?busqueda=correr' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs
social:escribir
Crea un club del que la cuenta es owner.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"nombre":"Corremos a las nueve"}'
GET
/api/v1/clubs/{id}
social:leer
La ficha de un club de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/clubs/42' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/{id}/reintentar_revision
social:escribir
Vuelve a pedir la revisión de un club propio que quedó sin veredicto.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/42/reintentar_revision' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/clubs/invitaciones/{token}
social:leer
Lo que se ve al abrir el enlace de un club.
curl -s \
'https://app.do-too.com/api/v1/clubs/invitaciones/AbCdEfGhJkLmNpQrStUvWxYz' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/{id}/solicitudes
social:escribir
Pide entrar en un club abierto por su id.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/42/solicitudes' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/invitaciones/{token}
social:escribir
La misma petición, con el token del enlace del club en vez de su id.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/invitaciones/AbCdEfGhJkLmNpQrStUvWxYz' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/{id}/solicitudes/{solicitud_id}/aceptar
social:escribir
Un owner admite en su club a quien pidió entrar.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/42/solicitudes/7/aceptar' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/clubs/{id}/solicitudes/{solicitud_id}
social:escribir
Un owner rechaza a quien pidió entrar en su club.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/clubs/42/solicitudes/7' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/clubs/{id}/personas
social:leer
Un owner busca a una persona por su username exacto para invitarla.
curl -s \
'https://app.do-too.com/api/v1/clubs/42/personas?username=marta' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/{id}/invitaciones
social:escribir
Un owner invita a una persona por su username exacto.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/42/invitaciones' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"username":"marta"}'
GET
/api/v1/clubs/invitaciones_recibidas
social:leer
Las invitaciones que la cuenta tiene por aceptar o rechazar.
curl -s \
'https://app.do-too.com/api/v1/clubs/invitaciones_recibidas' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/clubs/{id}/invitaciones/{invitacion_id}/aceptar
social:escribir
Entra en el club sin esperar a que lo apruebe un owner.
curl -s -X POST \
'https://app.do-too.com/api/v1/clubs/42/invitaciones/9/aceptar' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/clubs/{id}/invitaciones/{invitacion_id}
social:escribir
Borra la invitación sin avisar a quien invitó.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/clubs/42/invitaciones/9' \
-H 'Authorization: Bearer <token>'
Companion
Solo lectura, con companion:leer. Un agente lee el companion pero no habla con él por ti: configurarlo, escribirle y corregir o borrar lo que recuerda se hace en la web. El companion es privado y vive en cada reto: un reto que no es tuyo, que ya terminó o que no admite companion responde lo mismo que uno que no existe.
GET
/api/v1/cohortes/{id}/acompanamiento
companion:leer
La configuración del companion en un reto de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/cohortes/42/acompanamiento' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/{id}/acompanamiento/mensajes
companion:leer
Los mensajes de hoy con el companion y el último consejo pedido.
curl -s \
'https://app.do-too.com/api/v1/cohortes/42/acompanamiento/mensajes' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/cohortes/{id}/acompanamiento/recuerdos
companion:leer
Lo que el companion recuerda de la cuenta en ese reto.
curl -s \
'https://app.do-too.com/api/v1/cohortes/42/acompanamiento/recuerdos' \
-H 'Authorization: Bearer <token>'
Perfiles
Lectura con social:leer. Un username que no existe responde 404.
GET
/api/v1/usuarios/{username}
social:leer
El perfil de una persona por su username.
curl -s \
'https://app.do-too.com/api/v1/usuarios/marta' \
-H 'Authorization: Bearer <token>'
Ajustes
Lecturas con perfil:leer y escrituras con perfil:escribir. Desconectar la app del propio agente le deja sin acceso.
GET
/api/v1/ajustes
perfil:leer
Los ajustes de la cuenta.
curl -s \
'https://app.do-too.com/api/v1/ajustes' \
-H 'Authorization: Bearer <token>'
PATCH
/api/v1/ajustes
perfil:escribir
Cambia los ajustes de la cuenta; solo lo que se manda.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/ajustes' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"idioma":"es","hora_de_recordatorio":20}'
PATCH
/api/v1/cohortes/{id}/recordatorio
perfil:escribir
Enciende o apaga el recordatorio de un reto de la cuenta.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/cohortes/42/recordatorio' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"activo":false}'
GET
/api/v1/ajustes/apps-conectadas
perfil:leer
Las apps conectadas a la cuenta, con sus permisos.
curl -s \
'https://app.do-too.com/api/v1/ajustes/apps-conectadas' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/ajustes/apps-conectadas/{id}
perfil:escribir
Desconecta una app: pierde el acceso a la cuenta.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/ajustes/apps-conectadas/7' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"confirmacion":"desconectar"}'
Dejar de fumar
Escrituras con checkins:escribir sobre un reto Dejar de fumar de la cuenta; uno ajeno o de otra familia responde lo mismo que uno que no existe. El estado de hoy se lee en dejar_de_fumar de la ficha del reto, y cada gesto lo devuelve.
POST
/api/v1/cohortes/{id}/consumos
checkins:escribir
Suma una unidad fumada hoy, como el «+1» de la ficha.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/consumos' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/cohortes/{id}/consumos/ultimo
checkins:escribir
Resta el último consumo de hoy, como el «-1» de la ficha.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/cohortes/42/consumos/ultimo?clave_de_consumo=<uuid>' \
-H 'Authorization: Bearer <token>'
PATCH
/api/v1/cohortes/{id}/dejar_de_fumar/confianza
checkins:escribir
Guarda tu confianza para mañana, de 1 a 10, en el plan poco a poco.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/cohortes/42/dejar_de_fumar/confianza' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"confianza":7}'
POST
/api/v1/cohortes/{id}/antojos
checkins:escribir
Apunta un antojo y si lo superaste.
curl -s -X POST \
'https://app.do-too.com/api/v1/cohortes/42/antojos' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"superado":true}'
PATCH
/api/v1/cohortes/{id}/dejar_de_fumar/contador
checkins:escribir
Elige qué contador destaca la ficha: dias, unidades, dinero o antojos, o null para ninguno.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/cohortes/42/dejar_de_fumar/contador' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"contador":"dias"}'
Greetings
Lecturas con spa:leer y escrituras con spa:escribir. Un greeting ajeno que no está en el feed responde lo mismo que uno que no existe.
GET
/api/v1/saludos
spa:leer
Los greetings aprobados de los últimos siete días, del más nuevo al más viejo.
curl -s \
'https://app.do-too.com/api/v1/saludos' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/saludos
spa:escribir
Publica un greeting de hasta 160 caracteres en Greetings Room.
curl -s -X POST \
'https://app.do-too.com/api/v1/saludos' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"texto":"Buenos días desde Girona"}'
GET
/api/v1/saludos/{id}
spa:leer
Un greeting de la cuenta y su revisión.
curl -s \
'https://app.do-too.com/api/v1/saludos/42' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/saludos/{id}/reintentar_revision
spa:escribir
Vuelve a pedir la revisión de un greeting propio que quedó sin veredicto.
curl -s -X POST \
'https://app.do-too.com/api/v1/saludos/42/reintentar_revision' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/saludos/{id}
spa:escribir
Borra un greeting de la cuenta, con sus apoyos.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/saludos/42' \
-H 'Authorization: Bearer <token>'
PUT
/api/v1/saludos/{id}/apoyo
spa:escribir
Deja el apoyo de la cuenta en un greeting del feed.
curl -s -X PUT \
'https://app.do-too.com/api/v1/saludos/42/apoyo' \
-H 'Authorization: Bearer <token>'
DELETE
/api/v1/saludos/{id}/apoyo
spa:escribir
Quita el apoyo de la cuenta a un greeting del feed.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/saludos/42/apoyo' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/saludos/{id}/denuncia
spa:escribir
Marca un greeting del feed para que se revise.
curl -s -X POST \
'https://app.do-too.com/api/v1/saludos/42/denuncia' \
-H 'Authorization: Bearer <token>'
Fogatas
Lecturas con spa:leer y escrituras con spa:escribir. Una fogata en la que no participas responde lo mismo que una que no existe. Cada fogata es individual: solo participa quien la creó.
GET
/api/v1/fogatas
spa:leer
Las fogatas que siguen pidiendo algo: esperando, en marcha o con tu resultado sin contar.
curl -s \
'https://app.do-too.com/api/v1/fogatas' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/fogatas
spa:escribir
Una fogata de 25 o 50 minutos con tu intención, que solo ves tú.
curl -s -X POST \
'https://app.do-too.com/api/v1/fogatas' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"duracion_minutos":25,"intencion":"Terminar el informe"}'
GET
/api/v1/fogatas/{id}
spa:leer
Estado, hora de fin, y tu intención y tu resultado.
curl -s \
'https://app.do-too.com/api/v1/fogatas/42' \
-H 'Authorization: Bearer <token>'
POST
/api/v1/fogatas/{id}/empezar
spa:escribir
Arranca el reloj de una fogata que creaste.
curl -s -X POST \
'https://app.do-too.com/api/v1/fogatas/42/empezar' \
-H 'Authorization: Bearer <token>'
PATCH
/api/v1/fogatas/{id}/resultado
spa:escribir
Al terminar, cuenta cómo te fue: hecho, sigo o cambio.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/fogatas/42/resultado' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"resultado":"hecho"}'
DELETE
/api/v1/fogatas/{id}
spa:escribir
Borra una fogata que creaste.
curl -s -X DELETE \
'https://app.do-too.com/api/v1/fogatas/42?confirmacion=borrar' \
-H 'Authorization: Bearer <token>'
Journal
Lecturas con journal:leer y escrituras con journal:escribir sobre el diario de la cuenta, que nadie más ve. El día es el natural de la persona: zona, como Europe/Madrid, o sin ella, la zona de la cuenta.
GET
/api/v1/journal
journal:leer
Tus entradas, más nuevas primero, con su primera línea, los días escritos y con agradecimientos.
curl -s \
'https://app.do-too.com/api/v1/journal?zona=Europe/Madrid' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/journal/hoy
journal:leer
Los bloques del reto desde el que escribes, lo ya escrito hoy y su version (0 si nada).
curl -s \
'https://app.do-too.com/api/v1/journal/hoy?cohorte_id=42&zona=Europe/Madrid' \
-H 'Authorization: Bearer <token>'
PUT
/api/v1/journal/hoy
journal:escribir
Guarda la entrada de hoy y marca el día de tus retos Journal, como el botón de la web.
curl -s -X PUT \
'https://app.do-too.com/api/v1/journal/hoy' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"cohorte_id":"42","version":0,"diario":"…","agradecimientos":"…"}'
GET
/api/v1/journal/{fecha}
journal:leer
Una entrada entera por su fecha (como 2026-09-24); sin entrada ese día, 404.
curl -s \
'https://app.do-too.com/api/v1/journal/2026-09-24' \
-H 'Authorization: Bearer <token>'
GET
/api/v1/journal/ajustes
journal:leer
Si la portada rescata cada día un agradecimiento anterior.
curl -s \
'https://app.do-too.com/api/v1/journal/ajustes' \
-H 'Authorization: Bearer <token>'
PATCH
/api/v1/journal/ajustes
journal:escribir
Activa o apaga el agradecimiento rescatado.
curl -s -X PATCH \
'https://app.do-too.com/api/v1/journal/ajustes' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{"recordar_agradecimientos":true}'
MCP remoto
Todas las operaciones también se sirven como servidor MCP. Tu agente se conecta con OAuth, sin token: te pide permiso en dotoo y hace lo mismo que con la API, por las mismas operaciones.
POST https://app.do-too.com/mcp
Transporte Streamable HTTP sin estado: cada POST lleva un mensaje JSON-RPC y recibe una respuesta JSON, sin sesión ni Mcp-Session-Id. GET y DELETE responden 405.
/.well-known/oauth-protected-resource/mcp
Sin token, /mcp responde 401 y anuncia el servidor de autorización de dotoo. El agente se registra solo, abre dotoo para que entres y des permiso, y canjea el código con PKCE. El access token dura una hora y solo vale en /mcp; el refresh rota en cada uso. Se corta en Ajustes → Apps conectadas.
Authorization: Bearer <token>
Alternativa avanzada: el token de la API personal, con su caducidad, su revocación y el mismo límite de 120 peticiones por minuto. Sin un token válido responde 401 en problem+json, igual que /api/v1.
content · structuredContent
Cada tool devuelve el mismo sobre data que su operación de la API, como texto JSON y como structuredContent.
readOnlyHint · idempotentHint
Las tools de lectura no cambian nada y las de escritura lo declaran en sus anotaciones, también si repetirlas deja el mismo estado. Los argumentos siguen el inputSchema de cada tool. Cada una exige su scope y los mismos controles que su operación de la API: un error responde isError con el mismo code, como scope_insuficiente o parametros_invalidos, y los mismos errors.
TOOL
quien_soy
perfil:leer
Tu perfil: el mismo cuerpo que GET /api/v1/yo. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"quien_soy","arguments":{}}}'
TOOL
retos_activos
cohortes:leer
Tus retos abiertos o en marcha: el mismo cuerpo que GET /api/v1/cohortes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"retos_activos","arguments":{}}}'
TOOL
ver_reto
cohortes:leer
La ficha completa de uno de tus retos: el mismo cuerpo que GET /api/v1/cohortes/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_reto","arguments":{}}}'
TOOL
buscar_retos_publicos
cohortes:leer
Oferta pública a la que todavía puedes unirte: el mismo cuerpo que GET /api/v1/cohortes/publicas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"buscar_retos_publicos","arguments":{}}}'
TOOL
resumen_de_hoy
cohortes:leer
Invitaciones pendientes y retos disueltos: el mismo cuerpo que GET /api/v1/hoy. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"resumen_de_hoy","arguments":{}}}'
TOOL
listar_plantillas_de_reto
cohortes:leer
Las plantillas para crear un reto: el mismo cuerpo que GET /api/v1/cohortes/plantillas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_plantillas_de_reto","arguments":{}}}'
TOOL
historial_de_retos
cohortes:leer
El historial de retos de la cuenta: el mismo cuerpo que GET /api/v1/cohortes/historial. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"historial_de_retos","arguments":{}}}'
TOOL
ver_tema_de_retos
cohortes:leer
El tema vigente o uno pasado: el mismo cuerpo que GET /api/v1/temas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_tema_de_retos","arguments":{}}}'
TOOL
ver_invitacion_a_reto
cohortes:leer
Un reto visto desde su enlace: el mismo cuerpo que GET /api/v1/invitaciones/{token}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_invitacion_a_reto","arguments":{}}}'
TOOL
listar_invitables_a_reto
cohortes:leer
Gente del reto anterior que se puede invitar: el mismo cuerpo que GET /api/v1/cohortes/{id}/invitables. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_invitables_a_reto","arguments":{}}}'
TOOL
crear_reto
cohortes:escribir
Crea un reto: la misma operación que POST /api/v1/cohortes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"crear_reto","arguments":{"nombre":"Leer 20 minutos","duracion_dias":14,"tipo_de_check":"simple","clave_de_idempotencia":"<uuid>"}}}'
TOOL
editar_reto
cohortes:escribir
Cambia los ajustes de un reto: la misma operación que PATCH /api/v1/cohortes/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"editar_reto","arguments":{"id":"42","plazas":10}}}'
TOOL
reintentar_revision_de_reto
cohortes:escribir
Vuelve a pedir el veredicto de moderación: la misma operación que POST /api/v1/cohortes/{id}/reintentar_revision. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reintentar_revision_de_reto","arguments":{"id":"42"}}}'
TOOL
unirse_a_reto
cohortes:escribir
Te une a un reto por id (público) o por token (su enlace): las mismas operaciones que POST /api/v1/cohortes/{id}/participacion y POST /api/v1/invitaciones/{token}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"unirse_a_reto","arguments":{"id":"42"}}}'
TOOL
abandonar_reto
cohortes:escribir
Sales de un reto o lo disuelves si lo creaste: la misma operación que DELETE /api/v1/cohortes/{id}/participacion. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"abandonar_reto","arguments":{"id":"42","confirmacion":true,"clave_de_idempotencia":"<uuid>"}}}'
TOOL
invitar_a_reto
cohortes:escribir
Invita a varias personas: la misma operación que POST /api/v1/cohortes/{id}/invitaciones. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"invitar_a_reto","arguments":{"id":"42","user_ids":["7","12"]}}}'
TOOL
votar_franja
cohortes:escribir
Tu voto de franja del día: la misma operación que PUT /api/v1/cohortes/{id}/voto_de_franja. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"votar_franja","arguments":{"id":"42","opcion":"manana"}}}'
TOOL
dar_toque
cohortes:escribir
Un toque a alguien del reto: la misma operación que POST /api/v1/cohortes/{id}/toques. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"dar_toque","arguments":{"id":"42","user_id":"7"}}}'
TOOL
preparar_subida
checkins:escribir
Reserva una subida: la misma operación que POST /api/v1/subidas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"preparar_subida","arguments":{"nombre_de_archivo":"foto.jpg","bytes":183422,"checksum":"1B2M2Y8AsgTpgAmY7PhCfg==","tipo_mime":"image/jpeg","clave_de_idempotencia":"<uuid>"}}}'
TOOL
hacer_checkin
checkins:escribir
El check-in de hoy de un reto tuyo: la misma operación que POST /api/v1/cohortes/{id}/checkins. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hacer_checkin","arguments":{"id":"42","cantidad":30}}}'
TOOL
probar_palabra
checkins:escribir
Una palabra contra la regla oculta de hoy: la misma operación que POST /api/v1/cohortes/{id}/regla/intentos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"probar_palabra","arguments":{"id":"42","texto":"perro"}}}'
TOOL
formular_regla
checkins:escribir
Tu propuesta de regla oculta: la misma operación que POST /api/v1/cohortes/{id}/regla/formulaciones. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"formular_regla","arguments":{"id":"42","texto":"palabras de cinco letras"}}}'
TOOL
ver_blur
cohortes:leer
Turno, opciones y tu respuesta: la misma operación que GET /api/v1/blurs_del_dia/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_blur","arguments":{"id":"42"}}}'
TOOL
responder_blur
checkins:escribir
Tu respuesta al Blur del día: la misma operación que POST /api/v1/blurs_del_dia/{id}/respuesta. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"responder_blur","arguments":{"id":"42","opcion":2}}}'
TOOL
ver_foto_de_blur
cohortes:leer
La foto desenfocada de un día de Blur: la misma operación que GET /api/v1/fotos_de_blur/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_foto_de_blur","arguments":{"id":"42"}}}'
TOOL
ver_foto_nitida_de_blur
cohortes:leer
La foto original de un día de Blur: la misma operación que GET /api/v1/fotos_de_blur/{id}/nitida. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_foto_nitida_de_blur","arguments":{"id":"42"}}}'
TOOL
valorar_atrevimiento
checkins:escribir
Tu sí o no a un atrevimiento que ya cumpliste: la misma operación que POST /api/v1/atrevimientos_del_dia/{id}/valoracion. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"valorar_atrevimiento","arguments":{"id":"42","valoracion":"si"}}}'
TOOL
ver_foto_de_atrevimiento
cohortes:leer
La foto de un atrevimiento cumplido: la misma operación que GET /api/v1/fotos_de_atrevimientos/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_foto_de_atrevimiento","arguments":{"id":"42"}}}'
TOOL
leer_chat
chat:leer
El hilo de un reto o de una sala: la misma operación que GET /api/v1/chat/mensajes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"leer_chat","arguments":{"cohorte_id":"42"}}}'
TOOL
novedades_del_chat
chat:leer
Lo nuevo de todos los chats de la persona desde la última llamada de esta app: la misma operación que POST /api/v1/chat/novedades. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"novedades_del_chat","arguments":{"limite":50}}}'
TOOL
escribir_mensaje
chat:escribir
Escribe en el chat de un reto o de una sala: la misma operación que POST /api/v1/chat/mensajes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"escribir_mensaje","arguments":{"cohorte_id":"42","cuerpo":"¡Hola!","clave_de_idempotencia":"<uuid>"}}}'
TOOL
borrar_mensaje
chat:escribir
Borra un mensaje propio: la misma operación que DELETE /api/v1/chat/mensajes/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"borrar_mensaje","arguments":{"id":"99","cohorte_id":"42","clave_de_idempotencia":"<uuid>"}}}'
TOOL
reaccionar_a_mensaje
chat:escribir
Pone, cambia o quita la reacción de la cuenta: la misma operación que PUT /api/v1/chat/mensajes/{id}/reaccion. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reaccionar_a_mensaje","arguments":{"id":"99","cohorte_id":"42","tipo":"aplauso"}}}'
TOOL
denunciar_mensaje
chat:escribir
Deja un mensaje marcado para revisión: la misma operación que POST /api/v1/chat/mensajes/{id}/denuncia. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"denunciar_mensaje","arguments":{"id":"99","cohorte_id":"42"}}}'
TOOL
ver_tesoreria
perfil:leer
Saldo y últimos movimientos de dotoos: el mismo cuerpo que GET /api/v1/tesoreria. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_tesoreria","arguments":{}}}'
TOOL
listar_apuestas
perfil:leer
Apuestas pendientes y resueltas con el balance: el mismo cuerpo que GET /api/v1/apuestas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_apuestas","arguments":{}}}'
TOOL
apostar_dotoos
dotoos:gastar
Apuesta 3 dotoos en un reto en marcha; premio 6. Exige clave_de_idempotencia. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apostar_dotoos","arguments":{}}}'
TOOL
ver_armario
perfil:leer
Catálogo de prendas y pelajes con lo comprado y lo puesto: el mismo cuerpo que GET /api/v1/armario. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_armario","arguments":{}}}'
TOOL
comprar_prenda
dotoos:gastar
Compra una prenda con dotoos. Exige clave_de_idempotencia y confirmacion con el precio leído. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"comprar_prenda","arguments":{}}}'
TOOL
equipar_prenda
perfil:escribir
Pone o quita una prenda ya comprada, con el id de su fila de compras. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"equipar_prenda","arguments":{}}}'
TOOL
cambiar_pelaje
perfil:escribir
Pone un pelaje; si es de pago y aún no lo tiene, lo compra (exige dotoos:gastar). Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cambiar_pelaje","arguments":{}}}'
TOOL
mis_clubs
social:leer
Los clubes de la cuenta: la misma operación que GET /api/v1/clubs. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mis_clubs","arguments":{}}}'
TOOL
buscar_clubs
social:leer
Clubes abiertos por nombre: la misma operación que GET /api/v1/clubs/publicos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"buscar_clubs","arguments":{"busqueda":"correr"}}}'
TOOL
crear_club
social:escribir
Crea un club en revisión: la misma operación que POST /api/v1/clubs. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"crear_club","arguments":{"nombre":"Corremos a las nueve","clave_de_idempotencia":"<uuid>"}}}'
TOOL
ver_club
social:leer
La ficha de un club propio y su revisión: la misma operación que GET /api/v1/clubs/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_club","arguments":{"id":"42"}}}'
TOOL
reintentar_revision_de_club
social:escribir
Vuelve a pedir la revisión de un club sin veredicto: la misma operación que POST /api/v1/clubs/{id}/reintentar_revision. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reintentar_revision_de_club","arguments":{"id":"42"}}}'
TOOL
ver_invitacion_a_club
social:leer
La ficha pública del enlace: la misma operación que GET /api/v1/clubs/invitaciones/{token}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_invitacion_a_club","arguments":{"token":"<token>"}}}'
TOOL
pedir_entrar_en_club
social:escribir
Pide entrar por id o por el token del enlace: la misma operación que POST /api/v1/clubs/{id}/solicitudes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"pedir_entrar_en_club","arguments":{"id":"42"}}}'
TOOL
aceptar_solicitud_de_club
social:escribir
Un owner admite a quien pidió entrar: la misma operación que POST /api/v1/clubs/{id}/solicitudes/{solicitud_id}/aceptar. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"aceptar_solicitud_de_club","arguments":{"id":"42","solicitud_id":"7","clave_de_idempotencia":"<uuid>"}}}'
TOOL
rechazar_solicitud_de_club
social:escribir
Un owner rechaza a quien pidió entrar: la misma operación que DELETE /api/v1/clubs/{id}/solicitudes/{solicitud_id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rechazar_solicitud_de_club","arguments":{"id":"42","solicitud_id":"7","clave_de_idempotencia":"<uuid>"}}}'
TOOL
buscar_persona_para_club
social:leer
Username exacto, solo para owners: la misma operación que GET /api/v1/clubs/{id}/personas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"buscar_persona_para_club","arguments":{"id":"42","username":"marta"}}}'
TOOL
invitar_a_club
social:escribir
Un owner invita por username: la misma operación que POST /api/v1/clubs/{id}/invitaciones. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"invitar_a_club","arguments":{"id":"42","username":"marta"}}}'
TOOL
mis_invitaciones_a_clubs
social:leer
Las invitaciones pendientes: la misma operación que GET /api/v1/clubs/invitaciones_recibidas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mis_invitaciones_a_clubs","arguments":{}}}'
TOOL
aceptar_invitacion_a_club
social:escribir
Entra en el club sin aprobación: la misma operación que POST /api/v1/clubs/{id}/invitaciones/{invitacion_id}/aceptar. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"aceptar_invitacion_a_club","arguments":{"id":"42","invitacion_id":"9","clave_de_idempotencia":"<uuid>"}}}'
TOOL
rechazar_invitacion_a_club
social:escribir
Borra la invitación sin avisar: la misma operación que DELETE /api/v1/clubs/{id}/invitaciones/{invitacion_id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rechazar_invitacion_a_club","arguments":{"id":"42","invitacion_id":"9","clave_de_idempotencia":"<uuid>"}}}'
TOOL
ver_companion
companion:leer
La configuración del companion: la misma operación que GET /api/v1/cohortes/{id}/acompanamiento. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_companion","arguments":{"id":"42"}}}'
TOOL
leer_conversacion_con_companion
companion:leer
Los mensajes de hoy y el último consejo: la misma operación que GET /api/v1/cohortes/{id}/acompanamiento/mensajes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"leer_conversacion_con_companion","arguments":{"id":"42"}}}'
TOOL
listar_recuerdos
companion:leer
Lo que recuerda el companion: la misma operación que GET /api/v1/cohortes/{id}/acompanamiento/recuerdos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_recuerdos","arguments":{"id":"42"}}}'
TOOL
ver_perfil
social:leer
El perfil de una persona: la misma operación que GET /api/v1/usuarios/{username}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_perfil","arguments":{"username":"marta"}}}'
TOOL
ver_ajustes
perfil:leer
Los ajustes: la misma operación que GET /api/v1/ajustes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_ajustes","arguments":{}}}'
TOOL
cambiar_ajustes
perfil:escribir
Cambia los ajustes: la misma operación que PATCH /api/v1/ajustes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cambiar_ajustes","arguments":{"avisos":{"toque":false}}}}'
TOOL
configurar_recordatorio_de_reto
perfil:escribir
El recordatorio de un reto: la misma operación que PATCH /api/v1/cohortes/{id}/recordatorio. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"configurar_recordatorio_de_reto","arguments":{"id":"42","activo":false}}}'
TOOL
listar_apps_conectadas
perfil:leer
Las apps conectadas: la misma operación que GET /api/v1/ajustes/apps-conectadas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_apps_conectadas","arguments":{}}}'
TOOL
revocar_app_conectada
perfil:escribir
Desconecta una app: la misma operación que DELETE /api/v1/ajustes/apps-conectadas/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"revocar_app_conectada","arguments":{"id":"7","confirmacion":"desconectar"}}}'
TOOL
registrar_consumo
checkins:escribir
Suma una unidad fumada hoy: la misma operación que POST /api/v1/cohortes/{id}/consumos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"registrar_consumo","arguments":{"id":"42","clave_de_idempotencia":"<uuid>"}}}'
TOOL
deshacer_ultimo_consumo
checkins:escribir
Resta el último consumo de hoy: la misma operación que DELETE /api/v1/cohortes/{id}/consumos/ultimo. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"deshacer_ultimo_consumo","arguments":{"id":"42","clave_de_consumo":"<uuid>"}}}'
TOOL
fijar_confianza_de_fumar
checkins:escribir
Guarda la confianza para mañana: la misma operación que PATCH /api/v1/cohortes/{id}/dejar_de_fumar/confianza. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"fijar_confianza_de_fumar","arguments":{"id":"42","confianza":7}}}'
TOOL
registrar_antojo
checkins:escribir
Apunta un antojo: la misma operación que POST /api/v1/cohortes/{id}/antojos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"registrar_antojo","arguments":{"id":"42","superado":true,"clave_de_idempotencia":"<uuid>"}}}'
TOOL
fijar_contador_de_fumar
checkins:escribir
Elige el contador de la ficha: la misma operación que PATCH /api/v1/cohortes/{id}/dejar_de_fumar/contador. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"fijar_contador_de_fumar","arguments":{"id":"42","contador":"dias"}}}'
TOOL
leer_saludos
spa:leer
El feed de Greetings Room: la misma operación que GET /api/v1/saludos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"leer_saludos","arguments":{}}}'
TOOL
publicar_saludo
spa:escribir
Publica un greeting en revisión: la misma operación que POST /api/v1/saludos. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"publicar_saludo","arguments":{"texto":"Buenos días desde Girona","clave_de_idempotencia":"<uuid>"}}}'
TOOL
ver_saludo
spa:leer
Un greeting propio y su revisión: la misma operación que GET /api/v1/saludos/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_saludo","arguments":{"id":"42"}}}'
TOOL
reintentar_revision_de_saludo
spa:escribir
Vuelve a pedir la revisión de un greeting sin veredicto: la misma operación que POST /api/v1/saludos/{id}/reintentar_revision. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reintentar_revision_de_saludo","arguments":{"id":"42"}}}'
TOOL
borrar_saludo
spa:escribir
Borra un greeting propio: la misma operación que DELETE /api/v1/saludos/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"borrar_saludo","arguments":{"id":"42","clave_de_idempotencia":"<uuid>"}}}'
TOOL
apoyar_saludo
spa:escribir
Apoya un greeting del feed: la misma operación que PUT /api/v1/saludos/{id}/apoyo. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apoyar_saludo","arguments":{"id":"42"}}}'
TOOL
retirar_apoyo_a_saludo
spa:escribir
Quita el apoyo a un greeting: la misma operación que DELETE /api/v1/saludos/{id}/apoyo. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"retirar_apoyo_a_saludo","arguments":{"id":"42"}}}'
TOOL
denunciar_saludo
spa:escribir
Marca un greeting para revisión: la misma operación que POST /api/v1/saludos/{id}/denuncia. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"denunciar_saludo","arguments":{"id":"42"}}}'
TOOL
mis_fogatas
spa:leer
Tus fogatas vivas: la misma operación que GET /api/v1/fogatas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mis_fogatas","arguments":{}}}'
TOOL
crear_fogata
spa:escribir
Crea una fogata: la misma operación que POST /api/v1/fogatas. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"crear_fogata","arguments":{"duracion_minutos":25,"intencion":"Terminar el informe","clave_de_idempotencia":"<uuid>"}}}'
TOOL
ver_fogata
spa:leer
La sala, sin marcarte como presente: la misma operación que GET /api/v1/fogatas/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_fogata","arguments":{"id":"42"}}}'
TOOL
empezar_fogata
spa:escribir
Arranca una fogata que creaste: la misma operación que POST /api/v1/fogatas/{id}/empezar. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"empezar_fogata","arguments":{"id":"42"}}}'
TOOL
registrar_resultado_de_fogata
spa:escribir
Tu resultado al terminar: la misma operación que PATCH /api/v1/fogatas/{id}/resultado. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"registrar_resultado_de_fogata","arguments":{"id":"42","resultado":"hecho"}}}'
TOOL
borrar_fogata
spa:escribir
Borra una fogata que creaste: la misma operación que DELETE /api/v1/fogatas/{id}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"borrar_fogata","arguments":{"id":"42","confirmacion":"borrar","clave_de_idempotencia":"<uuid>"}}}'
TOOL
listar_entradas_de_journal
journal:leer
Tus entradas con su primera línea y tus cifras: la misma operación que GET /api/v1/journal. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"listar_entradas_de_journal","arguments":{"zona":"Europe/Madrid"}}}'
TOOL
ver_journal_de_hoy
journal:leer
Bloques, texto y version de hoy: la misma operación que GET /api/v1/journal/hoy. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_journal_de_hoy","arguments":{"cohorte_id":"42","zona":"Europe/Madrid"}}}'
TOOL
escribir_journal_de_hoy
journal:escribir
Guarda la entrada de hoy: la misma operación que PUT /api/v1/journal/hoy. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"escribir_journal_de_hoy","arguments":{"cohorte_id":"42","version":0,"diario":"…","agradecimientos":"…"}}}'
TOOL
leer_entrada_de_journal
journal:leer
Una entrada por su fecha: la misma operación que GET /api/v1/journal/{fecha}. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"leer_entrada_de_journal","arguments":{"fecha":"2026-09-24"}}}'
TOOL
ver_ajustes_de_journal
journal:leer
El recordatorio de agradecimientos: la misma operación que GET /api/v1/journal/ajustes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_ajustes_de_journal","arguments":{}}}'
TOOL
cambiar_ajustes_de_journal
journal:escribir
Activa o apaga el recordatorio: la misma operación que PATCH /api/v1/journal/ajustes. Ver la operación equivalente.
curl -s -X POST \
'https://app.do-too.com/mcp' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"cambiar_ajustes_de_journal","arguments":{"recordar_agradecimientos":true}}}'
Cuéntanos el cliente que quieres conectar. El acceso sigue siendo manual mientras validamos este primer contrato.