Example
facet.json
stdio server names a command and its ordered arguments. An http server names an absolute URL. Declaration objects are closed: an unrecognized member is rejected rather than ignored.
Approval
Configuring a server lets your coding tool run a command or open a connection, so a new or changed declaration needs your approval before anything is written. Interactive runs show one screen with Decline selected by default. Non-interactive runs need--accept-mcp.
Approval is machine-local. It is never recorded in facets.json or facets.lock, so a teammate who clones your project approves on their own machine.
Naming and refusal
Servers are aliased and omitted per project exactly like text assets, under theservers group in facets.json. They occupy their own identity space, so a server named deploy never collides with a skill, command, or agent named deploy.
Two facets declaring the same server identically agree and produce one entry. Two facets declaring different servers at one name is a collision you resolve like any other.