Summary
Add a nuts_services_list tool to MCP/grub-crawler.py that returns the known N.U.T.S. service directory — URLs, capabilities, auth requirements, and health status for each service.
Motivation
Agents using the grub-crawler MCP have no way to discover what other N.U.T.S. services exist or how to reach them. A discovery tool closes that gap and lets agents self-route to the right service (e.g. shivvr for ephemeral compute, auth for token exchange).
Proposed tool
@mcp.tool()
async def nuts_services_list(
check_health: bool = False,
ctx: Context = None,
) -> Dict[str, Any]:
"""
List all known N.U.T.S. (Network Utilities and Tool Services) endpoints.
Returns the service directory for the nuts.services fleet: URLs, purpose,
auth requirements, and optionally live health status for each service.
Args:
check_health: If True, ping each service /health endpoint and include status.
ctx: MCP context (optional).
"""
Services to advertise
Notes
- Static directory is fine initially;
check_health=True pings /health on each
- Auth token (
WRAITH_AUTH_TOKEN) should be passed through to services that require it
GRUB_BASE_URL override should still apply for self-hosted deployments
Summary
Add a
nuts_services_listtool toMCP/grub-crawler.pythat returns the known N.U.T.S. service directory — URLs, capabilities, auth requirements, and health status for each service.Motivation
Agents using the grub-crawler MCP have no way to discover what other N.U.T.S. services exist or how to reach them. A discovery tool closes that gap and lets agents self-route to the right service (e.g. shivvr for ephemeral compute, auth for token exchange).
Proposed tool
Services to advertise
Notes
check_health=Truepings/healthon eachWRAITH_AUTH_TOKEN) should be passed through to services that require itGRUB_BASE_URLoverride should still apply for self-hosted deployments