A guard is the interceptor that Provely puts between the agent and the provider. It compares each tool call with the confirmed permission envelope before the call runs. A call outside the envelope is refused, and the provider receives nothing.
The SDK wraps an MCP client with guardMcpClient, and any dispatching caller with guardDispatch. The agent code does not change. The wrapper reads the tool name from each call, so one guard covers every tool of the server, including a tool that the server added after the process started.
The check compares two documents. It reads no text as an instruction, and it asks no language model. A declared schema that the checker cannot evaluate refuses the call, so the check fails closed.
The guard answers permission, and the completion contract answers completion. A guarded call to a provider that no skill covers runs and ends in UNVERIFIABLE, never VERIFIED. Read what Provely refuses when your agent calls an MCP server.