Named
A server lives on a node with a name, a port with a number & a power draw with a figure. When someone asks where a tool call went, the answer is a2-02, not "the cloud". Placement is written into the deploy record & shown on the dashboard; it changes only with a deploy.
Protocol-shaped
Transports are not a feature. Streamable HTTP for the clients across the network, stdio for the one on your desk, nothing invented in between. Tools, resources & prompts are the ones the SDK registers; the fabric adds an endpoint & a registry, never a dialect.
Reversible
A version is a version. When a server rolls back, its tool schemas & its secrets scope come back with it, or it did not roll back. Schema changes between versions are diffed before you promote, so a client never discovers a renamed tool by failing.
Explicit about GPUs
If a tool needs a GPU it says which pool, how much of it, & what happens when the pool is full. Pools are named shares in 288 GB steps, whole nodes, or CPU-only; quotas are visible; the client should never find out by waiting.
Scoped
Secrets are attached to a tool at call time & nowhere else. Nothing lands in an environment variable a neighbouring tool can read. The registry shows which tool holds which scope, because a secret you cannot locate is a secret you cannot rotate.
Honest in numbers
Per-call latency, GPU occupancy & fabric throughput are measured at the node, not estimated at the edge, & streamed to your own collector if you have one. A dashboard that rounds up is worse than no dashboard.