mesh.doctor
Every prerequisite proved on this machine alone — the declaration parses, the identity loads and, under an allowlist, is on it, the repository has a mesh identity, a UDP socket binds, the multicast group joins, broadcast enables, and the discovery and link protocols sign and verify end to end in memory — and then the server's own verdict: in a shared server, whether an enabled declaration actually activated the mesh and, when it did not, the server's reason, which fails the report. Each failed check names its impact and its remedy. Deterministic, no second node required.
Every prerequisite proved on this machine alone — the declaration parses, the identity loads and, under an allowlist, is on it, the repository has a mesh identity, a UDP socket binds, the multicast group joins, broadcast enables, and the discovery and link protocols sign and verify end to end in memory — and then the server's own verdict: in a shared server, whether an enabled declaration actually activated the mesh and, when it did not, the server's reason, which fails the report. Each failed check names its impact and its remedy. Deterministic, no second node required.
- query
- experimental
- module mesh
- #mesh
- #diagnostics
Exposure
Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.
| surface | as |
|---|---|
| MCP | tool majordomus_mesh_doctor |
| HTTP | GET /api/v1/mesh/doctor operationId mesh.doctor |
| command line | majordomus mesh doctor |
Schemas
The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.
input · Empty
No properties: the capability takes no input.
JSON Schema
{
"additionalProperties": false,
"description": "No input.",
"title": "Empty",
"type": "object"
}output · MeshDoctorReport
| property | type | required | description |
|---|---|---|---|
| checks | array | yes | The checks, in the order they ran. |
| ok | boolean | yes | Whether every check holds. |
JSON Schema
{
"$defs": {
"DoctorCheck": {
"description": "One check's verdict.",
"properties": {
"check": {
"description": "What was checked.",
"type": "string"
},
"detail": {
"description": "The evidence: a path, an address, an error.",
"type": "string"
},
"impact": {
"description": "What a failure or a limitation means for the mesh.",
"type": [
"string",
"null"
]
},
"ok": {
"description": "Whether it holds.",
"type": "boolean"
},
"remediation": {
"description": "What to do about it.",
"type": [
"string",
"null"
]
}
},
"required": [
"check",
"ok",
"detail"
],
"type": "object"
}
},
"description": "The whole self-check.",
"properties": {
"checks": {
"description": "The checks, in the order they ran.",
"items": {
"$ref": "#/$defs/DoctorCheck"
},
"type": "array"
},
"ok": {
"description": "Whether every check holds.",
"type": "boolean"
}
},
"required": [
"ok",
"checks"
],
"title": "MeshDoctorReport",
"type": "object"
}Policies
- benchmark
- required — a target on every transport the exposure declares; the cases are the input type's
- cache
- disabled — every call runs the handler
Benchmark targets
Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.