Cargando…
Estamos cargando el contenido.
Estamos cargando el contenido.
Antes de cotizar, desde el agente de IA que ya usás. ScopeProfit es un servidor MCP que convierte la idea desordenada de un cliente en un documento de alcance versionado.
create_project · add_client_inputget_conversation · update_scope_section · get_tldr · list_pending_questionsanswer_question · get_scope_document · approve_scope · export_documentPrimero cargás lo que dijo el cliente: tu asistente crea el proyecto y pega el brief y las URLs de sus capturas.
Después se arma el alcance: lo redacta el modelo de tu asistente, sin otra clave de IA, o el agente del servidor (LangGraph + Gemini) con la clave de Gemini del dueño.
Al final cerrás dudas, revisás la plantilla 7.1, aprobás y descargás PDF y DOCX con un link firmado.
Cada requerimiento cita al cliente
, lo que falta queda como pregunta bloquea y las horas salen en rango 24–40 h, nunca como precio.
Requerimientos con cita textual. Cada requerimiento funcional o no funcional cita, palabra por palabra, el mensaje del cliente del que sale. Si la cita no coincide, el servidor lo rechaza.
Preguntas bloqueantes y riesgos. Lo que falta definir queda por escrito. Los riesgos llevan semáforo, y no se puede aprobar con preguntas que bloqueen la estimación o riesgos en rojo sin mitigación.
Alcance, horas y próximos pasos. Qué incluye, qué no incluye, supuestos y criterios de aceptación. La estimación es un rango de horas por módulo, nunca un precio. Todo sale en la plantilla fija 7.1 y se exporta a Markdown, PDF y Word (.docx) editable.
Ya no hay una app web de chat. La conversación con el material del cliente pasa en el asistente que ya tenés abierto; ScopeProfit guarda el brief, arma el documento y exporta PDF y Word. El bot de Telegram para el profesional sigue funcionando.
Cómo conectarlo
Son 15 herramientas MCP. Cada una indica si solo lee, si escribe o si es destructiva, para que el asistente te pida confirmación cuando corresponde.

| Proyectos | |
|---|---|
| Crear, encontrar y seguir el estado de cada relevamiento. | |
list_projectsLista tus proyectos con estado, resumen y cuántas preguntas bloqueantes quedan. | lectura |
create_projectCrea un proyecto nuevo con un nombre y, opcional, el email del cliente. | escritura |
get_projectEstado del proyecto y del agente, versiones del brief y del documento. Sirve para consultar el avance. | lectura |
archive_projectArchiva y bloquea un proyecto. | pide confirmación |
| Lo que dijo el cliente | |
| El material original queda guardado tal cual, para poder citarlo. | |
add_client_inputGuarda texto del cliente y/o hasta 5 imágenes públicas (JPEG, PNG o WebP, hasta 10 MB) como mensajes citables. | escritura |
get_conversationDevuelve los mensajes guardados con su id, que es lo que cita cada requerimiento. | lectura |
| Diagnóstico y preguntas | |
| Lo que falta definir antes de poder estimar. | |
get_tldrResumen corto: requerimientos, preguntas bloqueantes principales, riesgos en rojo y rango total de horas. | lectura |
list_pending_questionsPreguntas abiertas. Las que bloquean la estimación impiden aprobar. | lectura |
answer_questionGuarda la respuesta del cliente, cierra la pregunta y regenera el documento. | escritura |
| Documento de alcance | |
| La plantilla 7.1, editable sección por sección y exportable. | |
get_scope_documentEl documento en Markdown más el brief estructurado y su versión. | lectura |
update_scope_sectionReemplaza una sección, la valida y regenera el documento. Usa la versión leída para no pisar cambios. | escritura |
approve_scopeAprueba la versión actual y, si está configurado el email, le manda PDF y DOCX al cliente. | pide confirmación |
export_documentLink de descarga firmado y con vencimiento en PDF, DOCX o Markdown. | lectura |
| Cambios después del alcance | |
| Para que lo nuevo no entre como favor. | |
log_change_requestRegistra un pedido nuevo y lo clasifica como dentro del alcance, fuera del alcance o ambiguo. | escritura |
list_change_requestsLista los pedidos de cambio de un proyecto. | lectura |
Escribí lo que le pedirías a tu asistente y mirá qué herramienta de ScopeProfit usaría.
approve_scopepide confirmaciónAprueba la versión actual y, si está configurado el email, le manda PDF y DOCX al cliente.
Documento de alcance
get_scope_documentlecturaEl documento en Markdown más el brief estructurado y su versión.
Documento de alcance
update_scope_sectionescrituraReemplaza una sección, la valida y regenera el documento. Usa la versión leída para no pisar cambios.
Documento de alcance
El servidor habla MCP por Streamable HTTP y también por stdio para correrlo local.
https://api.<tu-dominio>/api/mcpEs un ejemplo: reemplazalo por la URL pública de tu API (PUBLIC_API_URL) seguida de /api/mcp. La API tiene que estar expuesta directo por HTTPS, porque el descubrimiento OAuth vive en la raíz del dominio.

Las keys (sp_live_…) se asocian a tu Telegram id autorizado. Solo se guarda su hash, y revocar una key corta todos los conectores que la usan.
pnpm --filter @scopeprofit/api run build
pnpm --filter @scopeprofit/api run mcp:keys create \
--telegram-id <tu-telegram-id> --label chatgptSe conecta por OAuth: ChatGPT se registra solo y vos pegás tu API key en la pantalla de consentimiento de ScopeProfit.
ScopeProfit, la URL del endpoint y autenticación OAuth. Dejá vacíos client id y secret: ChatGPT se registra solo.En Settings → Connectors → Add custom connector cargás la URL del endpoint. Podés dejar OAuth (la misma pantalla de consentimiento que en ChatGPT) o, si tu plan ofrece Request headers, mandar Authorization: Bearer sp_live_…. En Claude Code alcanza con un comando.
claude mcp add --transport http scopeprofit \
https://api.<tu-dominio>/api/mcp \
--header "Authorization: Bearer sp_live_..."Opción local para Cursor, Claude Desktop y cualquier host stdio: el proceso corre las herramientas contra tu propia base de datos. Primero compilás la API y después lo agregás a la config MCP del host. Para usar el servidor remoto desde un host que solo soporta stdio, hacé de puente con mcp-remote.
{
"mcpServers": {
"scopeprofit": {
"command": "node",
"args": ["/ruta/a/ScopeProfit/apps/api/dist/src/mcp-stdio.js"],
"env": {
"DATABASE_URL": "postgresql://...",
"ENCRYPTION_KEY": "...",
"TELEGRAM_AUTHORIZED_USER_IDS": "123456789",
"STORAGE_ROOT": "/ruta/a/storage",
"PUBLIC_API_URL": "https://api.<tu-dominio>",
"SCOPEPROFIT_API_KEY": "sp_live_..."
}
}
}
}npx mcp-remote https://api.<tu-dominio>/api/mcp \
--header "Authorization: Bearer sp_live_..."Cualquier host o agente que hable MCP por Streamable HTTP con un header Authorization: Bearer funciona: el SDK oficial de TypeScript, la Responses API o el Agents SDK de OpenAI, el MCP Inspector, o HTTP directo. Los ejemplos completos están en docs/mcp.md.
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({ name: 'mi-agente', version: '1.0.0' });
await client.connect(
new StreamableHTTPClientTransport(new URL('https://api.<tu-dominio>/api/mcp'), {
requestInit: { headers: { Authorization: `Bearer ${process.env.SCOPEPROFIT_API_KEY}` } },
}),
);
const { tools } = await client.listTools();curl -s https://api.<tu-dominio>/api/mcp \
-H "Authorization: Bearer sp_live_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Si ya usabas Telegram, nada cambia: el bot usa el mismo backend que el servidor MCP.

¿Qué hacés desde el bot?
Creás y listás proyectos, mirás el resumen y el documento, mandás texto o imágenes, archivás y aprobás o rechazás con los botones del bot.
/createproject/projects/tldr/doc/ask/archive/help