Security and limits
How SerpPal keeps MCP connections safe: key handling, roles, origin checks, about 120 calls a minute per key, the 1 MB request limit and error codes.
Connecting an AI assistant gives it real power over your articles and your sites, so SerpPal keeps the connection narrow and predictable. This page explains the safeguards, the limits, and what to do if a key leaks.
What protects your account
- Keys are stored as hashes. SerpPal saves only a scrambled form of each key (a SHA-256 hash) and its first 8 characters to tell keys apart. The full key exists only where you pasted it.
- Only API keys work on the MCP server. Your browser's sign-in cookie is never accepted at
/mcp. A key must be sent in theAuthorization: Bearerheader. - Keys can't manage keys. Making, listing and revoking keys only works when you are signed in on the website. A leaked key can't make more keys or revoke yours.
- Keys can't touch your account. There are no tools for your password, profile, plan, billing, team members or connected sites. An assistant can publish to sites that are already connected, but it can't add, change or remove them, and it never sees their passwords or tokens.
- Same roles as the app. An assistant has your role in each project. As a viewer it can only read; as an editor it can edit and publish but not change connected sites.
- Origin checks. If a request comes from a web page (it carries an
Originheader) and that page is not SerpPal itself, it is refused with "Forbidden origin". This stops a malicious website from using a key through your browser. Desktop apps, editors and command-line tools don't send that header and are not affected. - Disabled accounts stop at once. If an account is disabled, its keys stop working. If a paid plan ends, the key keeps working with the plan's new limits.
- Every edit is reversible. Before an assistant changes an article, the previous version is saved in its history.
Limits
| Limit | Value | What happens |
|---|---|---|
| Calls per minute | About 120 per key | A fixed one-minute window per key. Over it, requests get HTTP 429 with "Too many requests: up to 120 calls a minute per key. Try again in N seconds." and a Retry-After header. |
| Request size | 1 MB | Bigger requests get HTTP 413 with "Request too large (1 MB at most)". Very long articles sent with update_article must fit in this. |
| Batch size | 50 messages | A JSON-RPC batch can hold up to 50 messages. Each one counts as a call. |
| Keys per account | 10 | Revoke one to make another. |
| Transport | HTTP POST, JSON answers | No SSE stream. Other methods get HTTP 405. |
Plan limits still apply: analyze_keyword uses your monthly analyses, and add_media_from_url uses your media storage. See Plans and limits.
Each tool also has its own size limits (titles up to 300 characters, up to 40 media items per post and so on), listed in the Tools reference.
Error codes
These come back before a tool runs:
| HTTP | Message | What to do |
|---|---|---|
| 401 | "Missing API key. Send Authorization: Bearer <your SerpPal API key>." | Add the header to your client's settings. |
| 401 | "Invalid or revoked API key. Make a new one on the SerpPal Account page." | Make a new key and update your client. |
| 403 | "Forbidden origin" | Use a desktop or command-line client, not a web page. |
| 405 | "Method not allowed: this server answers POST requests with JSON (no SSE stream)." | Set the client to HTTP (Streamable HTTP), not SSE. |
| 413 | "Request too large (1 MB at most)" | Send less content in one call. |
| 429 | "Too many requests: up to 120 calls a minute per key..." | Wait the seconds shown. |
Errors inside a tool (a wrong id, a missing permission, a plan limit) come back as the tool's answer, so the assistant can read them and tell you.
Good habits
- One key per assistant or computer, named after where it is used. Revoking one then breaks nothing else.
- Approve publishing yourself. Keep your client's approval prompt on for
publish_article,reschedule_postandretry_post. SerpPal also tells assistants to ask you first. - Check before you trust. Read what the assistant changed in the editor before you publish. Restore the previous version if needed.
- Watch out for instructions hidden in content. If you ask an assistant to read web pages or documents, they may contain text that tries to steer it. Don't let an assistant publish without your approval.
- Keep keys out of shared files. Don't commit config files with keys to Git, and don't paste keys into chats, tickets or screenshots.
- Review your keys now and then. On the Account page, revoke keys that say "last used never" or that you don't recognize.
If a key leaks
- Go to Account, API keys and MCP, and click Revoke next to the key. It stops working at once.
- Make a new key and update your assistant.
- Check the Publishing page for posts you didn't schedule, and cancel them.
- Check recently changed articles, and restore earlier versions from their history if needed.
- If you think your password was also exposed, change it on the Account page (see Account settings).
- Tell us at [email protected] if you need help.