webhound-mcp
v0.3.8
Published
MCP server that lets agents run Webhound reports and datasets as a research sidecar, save shared sidecar notes, diagnose failures, and read cited outputs.
Maintainers
Readme
webhound-mcp
Run Webhound from any MCP-speaking agent. Webhound creates private, budgeted reports and datasets, runs as the agent's research sidecar, accepts non-interrupting source-backed notes, diagnoses failures, and returns cited outputs with sources and claim traces.
This package is the local stdio transport. Webhound also supports hosted MCP at:
https://api.webhound.ai/api/v2/mcpInstall
Create a Webhound API key, then add the stdio server to your agent:
{
"mcpServers": {
"webhound": {
"command": "npx",
"args": ["-y", "webhound-mcp"],
"env": {
"WEBHOUND_KEY": "wh_..."
}
}
}
}Claude hosted connector:
https://api.webhound.ai/api/v2/mcpPaste the URL into Claude's custom connector flow. The hosted server exposes OAuth discovery, authorize, and token endpoints for that connect flow.
Manus or generic hosted MCP:
Server URL: https://api.webhound.ai/api/v2/mcp
Auth type: HTTP header
Header name: Authorization
Header value: Bearer wh_...
If the MCP app has a dedicated bearer-token field that automatically adds
`Bearer`, paste only `wh_...` in that token field.Claude Code:
claude mcp add --transport http webhound https://api.webhound.ai/api/v2/mcp --header "Authorization: Bearer wh_..."
# Local stdio alternative:
claude mcp add --transport stdio webhound --env WEBHOUND_KEY=wh_... -- npx -y webhound-mcpCodex:
[mcp_servers.webhound]
command = "npx"
args = ["-y", "webhound-mcp"]
[mcp_servers.webhound.env]
WEBHOUND_KEY = "wh_..."Cursor and Claude Desktop use the JSON shape above.
After saving local stdio config, restart the agent session or open a new one if the Webhound tools do not appear. Many clients load MCP servers only when a session starts.
VS Code:
{
"servers": {
"webhound": {
"type": "stdio",
"command": "npx",
"args": ["-y", "webhound-mcp"],
"env": {
"WEBHOUND_KEY": "wh_..."
}
}
}
}Use the same stdio server shape for Windsurf, Cline, and Roo Code. Windsurf commonly stores it in ~/.codeium/windsurf/mcp_config.json; Roo Code supports global MCP settings or project-level .roo/mcp.json.
Defaults
Recommended setup defaults:
- budget:
$5 - product:
report - free run: enabled when available
Onboarding can also help the calling agent save a local budget policy. The
recommended lightweight policy is $2 for quick scouting, $5 for normal cited
research, and $10 for deeper or decision-driving work. The agent should ask
where those rules should apply before writing anything: the current project,
another accessible project, all relevant accessible projects with per-project
rules, or global agent rules. It should not silently write Webhound rules into a
temporary onboarding chat directory. Webhound itself still stores a single
account default budget.
New users may have one non-divisible free run pass. It covers one exact $5 report or dataset. It can be used from the Webhound UI, API, hosted MCP, or this stdio MCP package.
Agents can read and update defaults with:
webhound_onboardingwebhound_helpwebhound_uninstallwebhound_get_defaultswebhound_set_defaults
During onboarding, agents should mention webhound_help for future questions
about Webhound and webhound_uninstall if the user later wants to remove the
MCP setup and local Webhound rules.
Onboarding should ask one setup-timing question before the first run:
- Set up this workspace first: ask where rules should apply, inspect only the approved local context, propose Webhound usage rules plus a short budget policy, save only approved rules, then start the first report or dataset.
- Jump right in: ask what the user wants researched or extracted, start the first report or dataset, then offer the same local setup pass while Webhound works in the background.
In both branches, onboarding should still walk the user all the way through starting the first Webhound session. After a first session starts, do not fall into a visible polling loop before handling the setup choice or scheduling a later check-in.
Tool Flow
The core lifecycle is detached and visible:
- Start work with
webhound_start_reportorwebhound_start_dataset. - Watch with
webhound_watchorwebhound_wait. - While Webhound runs, keep doing useful independent work when it can improve
the result. If the calling agent finds a concrete source-backed note, save
it with
webhound_add_sidecar_notes. This does not interrupt the current Planner -> Executor -> Verifier cycle. - Sidecar notes are shared state. Use
webhound_list_sidecar_notesto inspect what has already been saved andwebhound_update_sidecar_noteto correct, restore, or dismiss a note without steering the session. - Treat
done=trueas the authoritative finished signal. - If a run is still healthy and your environment can sleep, schedule a
check-in, create a reminder, or run a one-time heartbeat, use
runtime_estimate.recommended_next_check_secondsand callwebhound_watchthen. If it is still running, repeat using the updated estimate. If only a few minutes remain, usewebhound_wait. - If
awaiting_input, reply withwebhound_send_messageusingreason="awaiting_input"; that resumes the session. - Use
webhound_send_messagewithreason="user_guidance"only when the user changes the objective, scope, constraints, or deliverable. Do not use steering for ordinary source suggestions. - When
done=trueandoutput_ready=true, read withwebhound_get_outputor download an artifact withwebhound_export_session. - Use the full evidence pack before giving serious answers: inspect provenance
with
webhound_get_claims, inspect source coverage withwebhound_get_sources, and read working docs when depth matters. For reports, usewebhound_export_session(select="all", format="md")orwebhound_get_output(select="working")for follow-up analysis, story pitches, critique, diligence, or investigations. The final output is the synthesis entry point, not the whole information payload. - For datasets, inspect rows/schema plus sources; export CSV/JSON when the user needs to use the data elsewhere.
- After reading/exporting the final output and evidence pack, use your own judgment to surface a few focused threads the user could pull next. Ground them in concrete things the session uncovered: unexplained entities, source gaps, paper trails, contested claims, missing rows, or narrow comparisons. These should be optional deeper follow-ups, not generic "research more" suggestions. If several are independent, they can be started in parallel as separate Webhound runs.
Budget controls depth. As a rule of thumb, $1 buys about 15 minutes of
research. A healthy run may keep searching, reading, writing, and verifying
through several waits while it uses the budget. More budget means more room for
research before final assembly; it is not a signal for the calling agent to
hurry the run. Do not send finalize/wrap-up guidance or stop the session just
because partial working notes look usable.
Public Tools
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_get_outputwebhound_export_sessionwebhound_get_claimswebhound_get_sourceswebhound_search_sessionswebhound_list_sessionswebhound_get_sessionwebhound_upload_filewebhound_accountwebhound_diagnose
Completion And Diagnostics
webhound_watch returns:
done: terminal statusoutput_ready: an artifact exists; wait fordone=truebefore treating it as finalcompletion_reason:budget_complete,natural_complete,awaiting_input,user_stopped,credit_exhausted,failed, orstuck_or_emptyalerts: structured issues with next actionsnext_research_instruction: guidance for the calling agent to derive focused next investigations from the final output and underlying evidence pack
Do not present a run as successful if alerts contains an error such as empty_output, dataset_zero_rows, or credit_exhausted.
If webhound_wait returns still_running=true, that is normal. Use the
returned runtime estimate to schedule the next check-in when the agent
environment supports timers/reminders/automations, then call webhound_watch
at that time. Use webhound_add_sidecar_notes for source-backed notes found by
the calling agent. Use webhound_send_message(reason="awaiting_input") for
checkpoint replies and webhound_send_message(reason="user_guidance") for
real user intent changes, not for normal elapsed time or source suggestions.
Use webhound_stop only when the user explicitly asks to stop, pause, or
cancel the run.
CLI
webhound-mcp --help
webhound-mcp --version
webhound-mcp --self-test--self-test checks that the package loads and that the launch tool list is present. Use webhound_health from an MCP client to verify live auth and account state.
Local Development
cd webhound-server/mcp
npm install
WEBHOUND_KEY=wh_... WEBHOUND_API_BASE=http://localhost:5000/api/v2 node bin/server.mjsNo npm publish is performed by this repo change. Publish only after the production server and docs are approved.
