# CoreSign > Electronic signatures anyone can verify. Software and AI agents prepare documents for signature through the API; a signed-in person reviews and sends them. Every completed document is sealed with Ed25519 and can be checked offline. ## Docs - [API reference](https://sign.coresignapp.com/api-reference): every route an API key can use, with examples - [OpenAPI document](https://sign.coresignapp.com/api/v1/openapi.json): the same routes, machine-readable - [Check a sealed record](https://sign.coresignapp.com/verifier): how anyone verifies a signed document ## For agents - An agent prepares; only a signed-in person sends. A draft an agent prepares waits for the person's approval, who may send it or reject it with a reason the agent can read (approval_state, rejected_reason on the envelope). - Every live API key belongs to a registered client (an AI agent, a script or an integration), registered by a person at https://sign.coresignapp.com/settings/agents, with limits set there (templates, recipient domains, drafts a day, an expiry). A live key bound to no client is refused (401, client_not_registered). A test key (csk_test_) belongs to none and works on test envelopes only. - A client's key prepares and reads, nothing else: it reads envelopes, templates and the signed records, prepares drafts and templates (and their fields), and deletes the drafts it prepared. Every other route (sending, voiding, resending, reminders, deleting a template, webhooks, the plan, the account) answers it 403 client_route_not_allowed: a person does those in the console. - The plan sets how many clients may be active (Free 0, Essentials 1, Pro 2, Business 10); each client has its own rate limit. Each draft a client prepares, and each of its requests refused for its grant or for a route it may not use, is recorded under its agt_ id. - A client's key works as a Bearer token, unless the person required signed requests: then each request carries the key and is signed with the client's own Ed25519 key pair: X-CoreSign-Agent, X-CoreSign-Timestamp, X-CoreSign-Nonce, X-CoreSign-Signature. - An app a person connects through OAuth uses its token at /mcp: it sees templates, prepares drafts and reads the drafts it prepared. - Limits, per 15 minutes: 600 requests per client, by its key or at /mcp, where every request counts (tool calls also have their own 120 within it); 300 requests per account by its test keys. Each answer carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix seconds); a 429 carries Retry-After, the seconds to wait. - Use an Idempotency-Key header when creating envelopes, so a retry never makes a second draft.