> For the complete documentation index, see [llms.txt](https://docs.zipwire.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zipwire.io/use-cases/for-agents/mcp-agent-authorization.md).

# MCP Servers: Agent Authorization

An MCP server needs to know whether a connecting wallet is authorized by a real human. The agent connects with its wallet; the server uses ProofPack to verify the IsDelegate chain back to an IsAHuman attestation—no identity data is exposed, just a yes/no.

**Flow:** Agent connects → server calls `verifyByWallet(agentWallet)` (or [IsDelegate REST API](/fundamentals/security/attestations/is-delegate-rest-api.md)) → server grants or restricts access.

## Implementation (canonical)

All code lives in [**ProofPack Examples**](/tools-and-integrations/proofpack-agent-delegation/proofpack-examples.md) and the main [**ProofPack & Agent Delegation**](/tools-and-integrations/proofpack-agent-delegation.md) guide. Use:

* [Path 1: Wallet-only (JavaScript)](/tools-and-integrations/proofpack-agent-delegation/path1-wallet-only-javascript.md) — `verifyByWallet(agentWallet)`
* [Express.js middleware](/tools-and-integrations/proofpack-agent-delegation/express-middleware.md) — middleware that reads `x-agent-wallet` and returns 403 when not authorized
* [Common use cases → MCP Server](/tools-and-integrations/proofpack-agent-delegation/common-use-cases.md#1-mcp-server-integration) — same check for granting or restricting MCP access
