{
  "markdown": "# @palisadeemail/mcp\n\nConnect an MCP client to the [Palisade Email Authentication MCP](https://www.palisade.email/mcp), which monitors and manages SPF, DKIM, DMARC, MTA-STS, and BIMI for your domains.\n\nPalisade's MCP server is remote (Streamable HTTP at `https://api.palisade.email/mcp`). This package is a thin local bridge for stdio-based clients, using [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) under the hood. Clients that support remote HTTP MCP servers with a bearer token can point at the URL directly and skip this package.\n\n## Get an API key\n\nCreate one at [app.palisade.email](https://app.palisade.email) → Settings → API keys, or programmatically via headless signup. See the [Palisade MCP guide](https://www.palisade.email/mcp).\n\n## Use it\n\nSet `PALISADE_API_KEY` and run:\n\n```bash\nPALISADE_API_KEY=secret_... npx -y @palisadeemail/mcp\n```\n\n### Client config (stdio)\n\n```json\n{\n  \"mcpServers\": {\n    \"palisade\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@palisadeemail/mcp\"],\n      \"env\": { \"PALISADE_API_KEY\": \"secret_...\" }\n    }\n  }\n}\n```\n\n### Direct (clients that support remote HTTP MCP)\n\n```json\n{\n  \"mcpServers\": {\n    \"palisade\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.palisade.email/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer secret_...\" }\n    }\n  }\n}\n```\n\nWhen `headers.Authorization` is set, the client authenticates with that API key and does not fall back to OAuth. The server replies `401` with a `WWW-Authenticate` challenge whenever credentials are missing or rejected, so a bad key surfaces as a connection error rather than silently starting an OAuth flow. The one exception is [API-key-only discovery](#api-key-only-discovery) below, where a client opts out of that challenge on purpose.\n\n### API-key-only discovery\n\nSome MCP directories probe an endpoint before they forward a configured API key. For those\nclients, use `https://api.palisade.email/mcp?auth=api-key`. It keeps API-key authentication\nenabled but omits the OAuth discovery challenge from an unauthenticated probe. Send the same\n`Authorization: Bearer secret_...` header after connecting.\n\n### If the server connects but the Palisade tools are missing\n\nA session that offers only `authenticate` / `complete_authentication` is using an OAuth-based entry, not your API-key entry. The Palisade server has no reduced tool set: any authenticated caller gets the full list under [Tools](#tools). Those two tools come from the client's own pending-OAuth state.\n\nThis usually means a same-named server is configured somewhere else and is the one in effect. In Claude Code, `--scope local` applies only to the directory it was run in, and a `palisade` entry in user scope (from a previous OAuth connection) applies everywhere else. Check which entry actually wins:\n\n```bash\nclaude mcp get palisade\n```\n\nThe reported scope is the one in effect. If it is not the entry holding your API key, remove the other one, for example `claude mcp remove palisade -s user`, or give the API-key entry a distinct name.\n\n## Tools\n\nAccounts (`get_account`), domains (`list_domains`, `get_domain`, `create_domain`, `update_domain`, `delete_domain`, `verify_domain`), DNS setup (`get_dns_records`, which returns the exact records to publish at your own DNS provider), SPF diagnostics (`get_spf`, which reads the live record, its DNS lookup count against the 10-lookup limit, and the problems found), hosted DMARC (`enable_hosted_dmarc`), MTA-STS (`get_mta_sts`, `enable_mta_sts`, `disable_mta_sts`), remediation tasks (`list_tasks`, `get_task`, `complete_task`, `dismiss_task`), DMARC reporting (`get_dmarc_summary`, `list_dmarc_senders`, which report aggregate figures and per-source breakdowns rather than raw report XML), groups (`list_groups`, `create_group`, `update_group`, `delete_group`), billing (`get_subscription`, `start_checkout`, `start_billing_portal`), and webhooks (`list_webhook_events`, `list_webhook_endpoints`, `create_webhook_endpoint`, `delete_webhook_endpoint`).\n\nPalisade tells you which DNS records to publish; you apply them at whatever DNS provider hosts the domain. Payment happens on Stripe-hosted pages. Webhooks are the alternative to polling for long-running state changes: `create_webhook_endpoint` returns the signing secret once and never again, so store it when it is issued.\n\n## Environment\n\n- `PALISADE_API_KEY` (required) — your Palisade API key.\n- `PALISADE_MCP_URL` (optional) — override the server URL (defaults to `https://api.palisade.email/mcp`).\n",
  "bytes": 4499,
  "sha": "803267b7cbcfec4fbad49dfc5cd92448caee0cc5788634b67f9e3e6716347265",
  "repo_slug": "palisadeemail/palisade-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_email_palisade_palisade_55564228/readme"
}