1. Architecture
Single responsibility
One verb per tool.
Layered auth
Per-client + per-tool.
Idempotent
Safe to retry.
Observable
Logs + traces.
2. Naming & descriptions
Tools read as noun.verb. Descriptions explain intent + side effects. Don't repeat the schema.
3. Versioning
Bump the server's version on every breaking change. Maintain old tool aliases for one release cycle.
4. Testing
Unit tests per tool. Replay tests from recorded JSON-RPC sessions. Eval suite that asserts expected tool sequences for canonical prompts.
5. Release & monitoring
Canary release behind a flag. Watch latency p95 + error rate. Roll back fast.