Guides
Discover services
How agents find services by capability on the host.
Discovery is the primary job of ASMP. Agents should never grep the filesystem for ports.
By capability (preferred)
asmp find --capability email.classify
Or via HTTP:
curl "http://127.0.0.1:7700/capabilities?provides=email.classify"
Returns all services providing email.classify with health state. See CLI reference.
Via MCP
service_find(capability="email.classify")
service_find(query="email")
Searches name, description, and capability keywords.
List everything
asmp list
service_list()
curl http://127.0.0.1:7700/services
Filter by section:
curl "http://127.0.0.1:7700/services?section=tools"
Check health
service_health(name="director-daemon")
service_health() # summary of all services
Wiring discovery into every session
Discovery only works if every agent session can reach the registry. Options:
Per-repo MCP config
Add the registry MCP server to .mcp.json:
{
"mcpServers": {
"asmp-registry": {
"command": "python3",
"args": ["/path/to/registry/mcp_server/server.py"]
}
}
}
Host-level config (goal)
A global MCP config or bootstrap snippet every session inherits — so discovery is ambient, not per-repo.
Scan for new shipped manifests
After cloning a repo or on session start:
asmp scan
Or MCP: service_scan()
When lookup misses — self-heal
If asmp find, asmp get, or service_find returns nothing but you know the service exists, drop a breadcrumb:
asmp todo <name> --note "what you observed" [--repo PATH] [--hint "how to register"]
asmp todos
MCP equivalent:
service_todo(name="...", note="...", repo="...")
service_todos()
This appends to ~/.asmp/discoveries.jsonl via POST /discoveries. It is not a registration — it flags that the service should be documented. A later pass authors asmp.yaml and runs asmp announce.
What to do with results
Once you find a service:
- Read its
endpointsfor the URL - Check
healthstatus before calling - Use MCP tools on that service (if it exposes MCP)
- Read
repofor source code context - Check
data.sensitivitybefore sending sensitive input