Webhound
Otorga a los agentes un presupuesto de investigación y obtén informes o conjuntos de datos citados e inspeccionables.
Documentación
Webhound MCP
Sitio web · Tesis · Configuración de MCP · npm · Registro oficial
La investigación no tiene un punto de parada natural. Un prompt le dice a un agente qué investigar, pero no le dice al agente cuánto trabajo merece la pregunta.
Webhound añade ese control que falta. Dale un prompt y un presupuesto en dólares; gasta ese esfuerzo buscando, leyendo, verificando y ensamblando un informe citado o un conjunto de datos estructurado. El resultado final incluye los documentos de trabajo, fuentes, rastros de afirmaciones, limitaciones y el paquete de evidencia detrás de la respuesta.
Ejecuta Webhound desde cualquier agente que hable MCP. Webhound crea informes y conjuntos de datos privados y presupuestados, funciona como sidecar de investigación del agente, acepta notas respaldadas por fuentes sin interrupciones, diagnostica fallos y devuelve salidas citadas con fuentes y rastros de afirmaciones.
Este paquete es el transporte local stdio. Webhound también admite MCP alojado en:
https://api.webhound.ai/api/v2/mcp
Paquetes nativos para clientes
Este repositorio también empaqueta el MCP alojado y la habilidad webhound-research
para GitHub Copilot, Claude Code, Cursor y Kiro:
- GitHub Copilot usa
plugin.json,.mcp.jsonyskills/webhound-research/SKILL.md. - Claude Code usa
.claude-plugin/plugin.json,.mcp.jsony la misma habilidad. El marketplace incluido se puede probar conclaude plugin marketplace add WebhoundAI/webhound-mcp, luegoclaude plugin install webhound@webhound. - Cursor usa
.cursor-plugin/plugin.json,mcp.jsony la misma habilidad. - Kiro usa
POWER.mdymcp.json.
Ambos archivos MCP apuntan al endpoint remoto de producción de Webhound y no contienen
ninguna clave API, token de portador, cliente OAuth estático ni credencial de publicador
compartida. Cada persona autoriza su propia cuenta de Webhound mediante OAuth.
La entrada oauthScopes en mcp.json es requerida por Kiro para que solicite
los dos alcances compatibles de Webhound en lugar de los predeterminados no relacionados de Kiro. Cursor
ignora ese campo específico de Kiro y completa OAuth desde los metadatos de autorización
publicados de Webhound.
La habilidad compartida enseña a cada cliente el mismo contrato público:
- Hound es el arnés de investigación de Webhound, construido con DeepSeek V4 Pro y GPT-5.4 en planificación, ejecución, verificación y ensamblaje.
- El prompt define la investigación. El presupuesto en dólares controla el esfuerzo de investigación.
done=truees la puerta de finalización. El agente luego inspecciona el paquete de evidencia cuando la respuesta depende del rastro de investigación.
Modo desarrollador de ChatGPT:
- Activa el Modo desarrollador en Configuración → Seguridad e inicio de sesión.
- Abre Configuración → Plugins, crea una aplicación y usa la URL de MCP alojado anterior.
- Haz clic en Conectar. ChatGPT abre la página de autorización de Webhound.
- Inicia sesión en Webhound y aprueba los alcances de MCP solicitados. No pegues una clave API en el flujo de OAuth.
La aplicación de ChatGPT puede aceptar archivos adjuntos y devolver estado normal de MCP, salida, documentos de trabajo, afirmaciones y fuentes. Webhound deliberadamente no adjunta un panel interactivo personalizado debajo de las llamadas a herramientas. La distribución pública aún requiere el envío del plugin a través de OpenAI.
Replit Agent:
El enlace de instalación proporciona solo la URL de MCP alojado de Webhound. Replit descubre los metadatos de OAuth de Webhound y cada persona autoriza su propia cuenta; el payload no contiene clave API, token de portador, secreto de cliente OAuth ni credencial de publicador compartida.
n8n:
Instala n8n-nodes-webhound
a través de Configuración → Nodos de la comunidad. Expone operaciones nativas de informe,
conjunto de datos, observación/espera, salida, paquete de evidencia, cuenta y ayuda. Los inicios
que generan gastos requieren tanto un presupuesto explícito en dólares como una confirmación
separada. Cada usuario o espacio de trabajo de n8n proporciona su propia clave API de Webhound
cifrada; el paquete no contiene ninguna credencial de publicador compartida.
Instalación
Crea una clave API de Webhound y luego agrega el servidor stdio a tu agente:
{
"mcpServers": {
"webhound": {
"command": "npx",
"args": ["-y", "webhound-mcp@0.5.3"],
"env": {
"WEBHOUND_KEY": "wh_..."
}
}
}
}
Conector alojado de Claude:
https://api.webhound.ai/api/v2/mcp
Pega la URL en el flujo de conector personalizado de Claude. El servidor alojado expone los endpoints de descubrimiento, autorización y token de OAuth para ese flujo de conexión.
Smithery:
- Agrega el servidor público
webhound/webhounda tu propia caja de herramientas de Smithery. - Cada nueva conexión de Smithery comienza en
auth_requiredy abre una pantalla de configuración de Webhound que solicita a ese usuario su propia clave API de Webhound. - Webhound intercambia esa clave por un token MCP con alcance almacenado en esa conexión de Smithery.
- Conectar otro cliente a la misma caja de herramientas ya autorizada puede no volver a solicitar; eso es la reutilización de la conexión guardada del mismo usuario, no una credencial de publicador compartida con otros usuarios.
No distribuyas el endpoint privado de la caja de herramientas de un usuario como si fuera una credencial compartida de Webhound. Otros usuarios deben agregar Webhound a su propia caja de herramientas o conectarse directamente a la URL de MCP alojado de Webhound.
Manus:
Open: https://manus.im/app/plugins
Choose: Create → Add MCP by URL
Server name: Webhound
Server URL: https://api.webhound.ai/api/v2/mcp
Advanced settings: leave empty
Guarda, inicia sesión en Webhound, aprueba la conexión y luego comienza una nueva tarea de Manus y envía:
Call webhound_onboarding once with client set to hosted. Send its
immediate_next_message exactly once. Treat agent_playbook.conversation_flow as
the canonical sequence; the matching first entry is already consumed, so after
I reply continue with the next unconsumed entry. setup_flow is reference-only
and next_action is only the entry instruction. Do not repeatedly call
onboarding to advance it. Continue the first run through done=true and return
the output with sources and provenance. If I change the subject, drop
onboarding immediately. Do not create or edit workspace rules unless I
explicitly ask.
Otros clientes alojados deben usar la misma URL de servidor con OAuth cuando sea compatible.
Solo los clientes que no admiten OAuth deben usar una clave de Webhound generada manualmente
en su configuración avanzada de token de portador o Authorization.
Claude Code:
claude mcp add --transport http webhound https://api.webhound.ai/api/v2/mcp
# Local stdio alternative:
claude mcp add --transport stdio webhound --env WEBHOUND_KEY=wh_... -- npx -y webhound-mcp@0.5.3
Codex:
[mcp_servers.webhound]
command = "npx"
args = ["-y", "webhound-mcp@0.5.3"]
[mcp_servers.webhound.env]
WEBHOUND_KEY = "wh_..."
Cursor y Claude Desktop usan la forma JSON anterior.
Cline CLI:
cline mcp add webhound \
--transport streamable-http \
--header "Authorization: Bearer wh_..." \
--yes \
https://api.webhound.ai/api/v2/mcp
También puedes usar la forma JSON local stdio anterior en la configuración de MCP de Cline. Después de guardar la configuración local stdio, reinicia la sesión del agente o abre una nueva si las herramientas de Webhound no aparecen. Muchos clientes cargan servidores MCP solo cuando comienza una sesión.
VS Code:
{
"servers": {
"webhound": {
"type": "stdio",
"command": "npx",
"args": ["-y", "webhound-mcp@0.5.3"],
"env": {
"WEBHOUND_KEY": "wh_..."
}
}
}
}
Usa la misma forma de servidor stdio para Windsurf. Windsurf comúnmente lo almacena en
~/.codeium/windsurf/mcp_config.json.
Hound
Hound es el arnés de investigación expuesto por Webhound, no un modelo de fundación seleccionable ni un modo. Está construido con DeepSeek V4 Pro y GPT-5.4 en planificación, ejecución, verificación y ensamblaje. No es un paso directo a un solo modelo y no debe describirse como "resolviendo" a un único backend de proveedor.
El prompt define qué investigar. El presupuesto en dólares del usuario define cuánto esfuerzo de investigación puede gastar Hound buscando, leyendo, escribiendo y verificando antes del ensamblaje. El MCP no expone niveles de modelo ni modos alternativos.
Valores predeterminados
Valores predeterminados recomendados de configuración:
- presupuesto:
$5 - producto:
report - ejecución gratuita: respeta la preferencia guardada; úsala automáticamente solo cuando esté habilitada, o
después de un consentimiento explícito de una sola ejecución para un informe o conjunto de datos exacto de
$5
Como regla general, $1 compra aproximadamente 15 minutos de investigación, por lo que el valor predeterminado de $5
es de aproximadamente 75 minutos. Los puntos de partida recomendados son $2 rápido, $5
estándar, $10 profundo y $20 exhaustivo/de mayor riesgo (aproximadamente 300 minutos
o cinco horas). Estos no son límites; los usuarios pueden elegir un presupuesto personalizado mayor o
decir cuánto tiempo quieren que Webhound investigue, usando aproximadamente $1 por cada 15 minutos.
webhound_onboarding devuelve el flujo guiado de primera ejecución consciente del cliente, incluido
el estado de cuenta y de ejecuciones incluidas, el modelo de presupuesto, configuración-primero versus
entrar-directo, orientación informe-versus-conjunto-de-datos, espera a través de done=true, procedencia,
exportación y seguimiento de facturación. Los clientes alojados como Manus reciben el flujo completo
de investigación pero ningún flujo de escritura en el espacio de trabajo a menos que el usuario solicite
explícitamente esa acción separada. Iniciar un informe o conjunto de datos normal nunca activa la
configuración de reglas del espacio de trabajo.
Los nuevos usuarios pueden tener un pase de ejecución gratuita no divisible. Cubre un informe o conjunto de datos exacto de $5. Se puede usar desde la interfaz de usuario de Webhound, API, MCP alojado o este paquete MCP stdio.
Los agentes pueden leer y actualizar los valores predeterminados con:
webhound_onboardingwebhound_helpwebhound_uninstallwebhound_get_defaultswebhound_set_defaults
Si un usuario solicita explícitamente reglas del espacio de trabajo, el agente debe mostrar el contenido propuesto completo y el destino exacto antes de escribir. Después de la aprobación, lee el archivo de nuevo y rechaza contenido vacío o solo de frontmatter.
Flujo de herramientas
El ciclo de vida central está separado y es visible:
- Comienza el trabajo con
webhound_start_reportowebhound_start_dataset. - Observa con
webhound_watchowebhound_wait. - Mientras Webhound se ejecuta, sigue haciendo trabajo independiente útil cuando pueda mejorar
el resultado. Si el agente que llama encuentra una nota concreta respaldada por fuentes, guárdala
con
webhound_add_sidecar_notes. Esto no interrumpe el ciclo actual Planificador -> Ejecutor -> Verificador. - Las notas sidecar son estado compartido. Usa
webhound_list_sidecar_notespara inspeccionar lo que ya se ha guardado ywebhound_update_sidecar_notepara corregir, restaurar o descartar una nota sin dirigir la sesión. - Trata
done=truecomo la señal autoritativa de finalización. - Si una ejecución aún está saludable y tu entorno puede dormir, programa un
registro, crea un recordatorio o ejecuta un latido único, usa
runtime_estimate.recommended_next_check_secondsy llama awebhound_watchentonces. Si aún se está ejecutando, repite usando la estimación actualizada. Si solo quedan unos minutos, usawebhound_wait. - Si una acción que genera gastos devuelve
billing_requiredo una sesión en ejecución devuelvecredit_exhausted, envía al usuario ahttps://www.webhound.ai/billingpara agregar créditos, agregar una tarjeta o habilitar la recarga automática. Pídeles que te avisen cuando terminen. Después de que respondan, llama awebhound_accountpara confirmar que la facturación está lista, luego reintenta la acción original de inicio/agregar-presupuesto/reanudar. - Si
awaiting_input, responde conwebhound_send_messageusandoreason="awaiting_input"; eso reanuda la sesión. - Usa
webhound_send_messageconreason="user_guidance"solo cuando el usuario cambie el objetivo, el alcance, las restricciones o el entregable. No uses la dirección para sugerencias ordinarias de fuentes. - Solo cuando el usuario solicite explícitamente reducir el alcance restante del informe o
terminar con la investigación ya recopilada, llama a
webhound_set_budget. Leebudget_control.minimum_target_budgetdel estado de observación/sesión cuando quieran terminar en el límite seguro más cercano. Reducir el presupuesto no omite el ensamblaje: el presupuesto revisado se convierte en el límite de parada, y Webhound ejecuta el ensamblaje final normal después. Nunca hagas esto solo porque las notas parciales parezcan suficientes o la ejecución esté tomando tiempo. - Cuando
done=trueyoutput_ready=true, llama awebhound_get_sessionpara la sesión canónica completa en una respuesta. Si una ejecución terminal no tiene salida, trata su alerta escrita deEMPTY_OUTPUToDATASET_ZERO_ROWScomo un fallo en lugar de afirmar éxito. webhound_get_evidence_packdevuelve esa misma sesión completa más orientación de seguimiento de evidencia. Úsala cuando la respuesta dependa del rastro de investigación.- Usa
webhound_get_outputpara el resultado pulido completo owebhound_export_sessioncuando el usuario necesite un archivo. Usa las herramientas de afirmaciones y fuentes cuando necesites una superficie enfocada. - Para conjuntos de datos, inspecciona filas/esquema más fuentes; exporta CSV/JSON cuando el usuario necesite usar los datos en otro lugar.
- Después de leer/exportar la salida final y el paquete de evidencia, usa tu propio criterio para mostrar algunos hilos enfocados que el usuario podría seguir después. Basalos en cosas concretas que la sesión descubrió: entidades inexplicadas, brechas de fuentes, rastros de documentos, afirmaciones disputadas, filas faltantes o comparaciones estrechas. Estos deben ser seguimientos más profundos opcionales, no sugerencias genéricas de "investigar más". Si varios son independientes, se pueden iniciar en paralelo como ejecuciones separadas de Webhound.
- Si el usuario pide un enlace compartible, usa
webhound_get_shareable_link. Eso hace que ese informe o conjunto de datos sea público para cualquier persona con el enlace y devuelve la URL de compartir correcta:/document/:idpara informes,/dataset/:idpara conjuntos de datos. No es publicación de Explore y no crea una publicación de/p/:slug. El presupuesto controla la profundidad. Como regla general,$1compra aproximadamente 15 minutos de investigación. Una ejecución saludable puede seguir buscando, leyendo, escribiendo y verificando a través de varias esperas mientras utiliza el presupuesto. Más presupuesto significa más espacio para investigación antes del ensamblaje final; no es una señal para que el agente llamador apresure la ejecución. No envíes orientación de finalización/cierre ni detengas la sesión solo porque las notas de trabajo parciales parezcan utilizables.
Formas de esquema de dataset
Omite schema para permitir que Webhound infiera un esquema conciso. Cuando los campos importan, usa
exactamente una de estas formas.
Esquema nativo de Webhound:
{
"entity_name": "Company",
"attributes": [
{ "name": "company_name", "type": "string", "is_primary": true },
{ "name": "website", "type": "string", "standard_format": "url" },
{ "name": "employee_count", "type": "number" }
]
}
Esquema JSON de objeto:
{
"type": "object",
"title": "Company",
"required": ["company_name"],
"properties": {
"company_name": {
"type": "string",
"description": "Official company name",
"x-webhound-primary": true
},
"website": { "type": "string", "format": "uri" },
"employee_count": { "type": "integer" }
}
}
Los esquemas nativos requieren al menos un campo is_primary: true. Para JSON Schema,
x-webhound-primary: true tiene prioridad; de lo contrario, la primera propiedad requerida, luego
la primera propiedad, se convierte en el campo primario determinista. La respuesta de inicio
hace eco de normalized_schema antes de que comience el dataset.
Herramientas públicas
webhound_healthwebhound_onboardingwebhound_helpwebhound_uninstallwebhound_get_defaultswebhound_set_defaultswebhound_start_reportwebhound_start_datasetwebhound_watchwebhound_waitwebhound_add_sidecar_noteswebhound_list_sidecar_noteswebhound_update_sidecar_notewebhound_send_messagewebhound_stopwebhound_resumewebhound_add_budgetwebhound_set_budgetwebhound_get_outputwebhound_export_sessionwebhound_get_evidence_packwebhound_get_shareable_linkwebhound_get_claimswebhound_get_sourceswebhound_search_sessionswebhound_list_sessionswebhound_get_sessionwebhound_upload_filewebhound_accountwebhound_diagnose
Los formatos de carga admitidos son CSV, XLSX, PDF, DOCX, TXT, Markdown y VTT. Convierte archivos XLS/DOC heredados a XLSX/DOCX antes de cargarlos. El tipo MIME, la extensión del nombre de archivo y los bytes de archivo reconocibles se verifican antes de que la carga llegue a Webhound.
Finalización y diagnóstico
webhound_watch devuelve:
done: estado terminaloutput_ready: existe un artefacto; espera adone=trueantes de tratarlo como finalcompletion_reason:budget_complete,natural_complete,awaiting_input,user_stopped,credit_exhausted,failedostuck_or_emptyalerts: problemas estructurados con próximas accionesbudget_control: si se puede reducir un presupuesto de informe, el gasto actual y el presupuesto, y el objetivo inferior seguro más cercanonext_research_instruction: orientación para que el agente llamador derive investigaciones siguientes enfocadas a partir de la salida final y el paquete de evidencia subyacente
No presentes una ejecución como exitosa si alerts contiene un error como empty_output, dataset_zero_rows o credit_exhausted. Para credit_exhausted, usa el billing_url y user_message_template devueltos; no dejes al usuario con un error sin procesar.
Si webhound_wait devuelve still_running=true, eso es normal. Usa la
estimación de tiempo de ejecución devuelta para programar el próximo control cuando el entorno
del agente admita temporizadores/recordatorios/automatizaciones, luego llama a webhound_watch
en ese momento. Usa webhound_add_sidecar_notes para notas respaldadas por fuentes encontradas por
el agente llamador. Usa webhound_send_message(reason="awaiting_input") para
respuestas de puntos de control y webhound_send_message(reason="user_guidance") para
cambios reales de intención del usuario, no para tiempo transcurrido normal o sugerencias de fuentes.
Usa webhound_stop solo cuando el usuario pida explícitamente detener, pausar o
cancelar la ejecución.
CLI
webhound-mcp --help
webhound-mcp --version
webhound-mcp --self-test
--self-test verifica que el paquete se cargue y que la lista de herramientas de lanzamiento esté presente. Usa webhound_health desde un cliente MCP para verificar la autenticación en vivo y el estado de la cuenta.
Desarrollo local
git clone https://github.com/WebhoundAI/webhound-mcp.git
cd webhound-mcp
npm install
WEBHOUND_KEY=wh_... WEBHOUND_API_BASE=http://localhost:5000/api/v2 node bin/server.mjs
Ejecuta la autoprueba del paquete sin credenciales:
npm run self-test
npm test
npm run test:coverage
npm run verify
npm run release:check
El conjunto de pruebas es completamente sin conexión y exige una cobertura de línea del 91 %, de rama del 75 % y de función del 88 % en todo el runtime de MCP. npm run verify también reconstruye el paquete publicado, verifica la autoprueba de CLI, verifica la paridad del runtime canónico, inspecciona el artefacto empaquetado y lo instala en un proyecto de consumidor temporal.
Antes de publicar, compara este checkout con el runtime canónico webhound-server/mcp:
npm run parity:compare -- /absolute/path/to/webhound-server/mcp
Licencia
MIT