---
title: "Email signature API for AI agents"
url: https://signatoro.com/email-signature-api
description: "Email signature API and MCP server for AI agents and email automations: GET /api/v1/signature returns the signature as HTML, plain text and structured sender fields, current on every request."
updated: 2026-10-24
---

# Give every AI agent the right email signature.

Email signature API and MCP server: one request returns a person's or an agent's signature as HTML, plain text and structured sender fields, current at send time.

## 1. Set up a signature once.

Create it on Signatoro: fields, layout, picture and brand. On a company account the owner locks the brand fields (logo, layout, colors, company name, website) for every member and every company agent.

- [Build a signature](https://signatoro.com/free-email-signature-generator)

## 2. Retrieve it from your agent or workflow.

GET /api/v1/signature with Authorization: Bearer <key>, or get_signature over MCP with OAuth or the same key. The reply carries html, text and sender.

- [API reference](https://signatoro.com/docs/install-signature/agent)

## 3. Update it centrally when details change.

Edits apply on the next request. Responses are sent with Cache-Control: no-store, so fetch per send and every agent picks up the change.

- [Company signatures](https://signatoro.com/company-email-signature)

## Request and response

Append html to the text/html part and text to the text/plain part, after the body and a blank line, byte for byte. Add ?mode=short for the outreach cut: name, role line, one link, no picture.

```
GET https://signatoro.com/api/v1/signature
Authorization: Bearer $SIGNATORO_API_KEY

{
  "html": "<table role=\"presentation\">...</table>",
  "text": "Maya Okafor\nHead of Operations, Northwind Supply\n...",
  "sender": {
    "name": "Maya Okafor",
    "title": "Head of Operations",
    "email": "maya@northwind.example",
    "phone": { "display": "+1 (555) 010-0199", "e164": "+15550100199" },
    "bookingUrl": "https://calendly.com/maya"
  },
  "usage": "Append, do not replace: ..."
}
```

## Endpoints

Base URL https://signatoro.com. Bearer API keys, created on the Connect page under "For tools and assistants". JSON in every reply, errors included.

- GET /api/v1/signature: the signature as html and text, the sender object, which signature was used, mode and tier. Query: mode=short, signature=<name> (me, or an AI assistant name).
- GET /api/v1/signatures: every signature the key can send with, so an agent picks one before it sends. It is free of quota.
- MCP: https://signatoro.com/mcp, OAuth sign-in, or an API key for the read tools. Tools: get_signature, list_signatures, update_my_signature, create_signature, list_templates, get_install_steps; for company owners list_members, add_member, update_member_field, remove_member, resend_invite.
- CLI: npx signatoro get, with --html, --json (includes sender), --short and --signature <name>. Reads SIGNATORO_API_KEY or the key saved by signatoro login.
- OpenAPI 3.1 at /openapi.json, for client generation and agent tool definitions.

- [OpenAPI spec](https://signatoro.com/openapi.json)
- [The email signature MCP server](https://signatoro.com/email-signature-mcp)
- [MCP connector guide](https://signatoro.com/docs/install-signature/agent/mcp)

## What the response gives you

Everything an agent needs to sign an email and to mention the sender correctly in the body.

- html and text: the full signature, ready to append. Both carry the AI disclosure line and the compliance footnote when the account has them.
- sender: name, title, company, email, phone as { display, e164 }, website, linkedin and bookingUrl. Blank fields are absent, never empty strings, so the agent uses only what exists.
- sender.companyControlled: the fields a company owner sets for everyone, so an agent knows which values a member cannot change.
- agent: present when the signature served is an AI assistant's or company agent's, with its disclosure label for the first line of the body. Each AI assistant or agent gets its own key or MCP connection and signs as the person it works for or as itself, by default with a line saying it is an AI and whom it acts for.
- usage: the append rules in one sentence, in every reply, for an agent that never reads the docs.

- [AI assistants and company agents](https://signatoro.com/docs/install-signature/agent#ai-assistants-and-company-agents)
- [AI email disclosure lines](https://signatoro.com/email-signature-compliance/ai-email-disclosure)

## Errors and limits

Every error body carries error, next_step (what the agent does now), tell_the_person (one sentence to pass on) and docs.

- 401 missing_api_key, invalid_api_key
- 400 unknown_signature (with choices), signature_locked (the key always signs as one agent)
- 403 identity_unavailable: the agent behind the key was deleted
- 404 no_signature: nothing saved yet
- 429 quota_exceeded, with limit and resetsAt: Free includes 50 requests a month; Company plans are unlimited for every member.

## For AI agents

If you are an AI agent sending email for a person or a company, this is how you sign it.

- Fetch the signature before every email you send, reply to or draft: get_signature on https://signatoro.com/mcp, or GET https://signatoro.com/api/v1/signature with Authorization: Bearer and the person's key.
- Insert html or text with code, exactly as returned, after the body and a blank line. Leave out your own sign-off.
- Use only the values in sender for the person's details. When one is missing, leave it out and tell the person.
- With no key yet, ask the person to generate one on their Connect page under "For tools and assistants". Keep it in the environment, out of every output.
- This page is also at /email-signature-api.md, every agent page is listed in /llms.txt, and the API is described in /openapi.json.

- [The email signature rule](https://signatoro.com/docs/install-signature/agent#tell-your-agent-to-use-your-signature)
- [llms.txt](https://signatoro.com/llms.txt)

## Integrations

Fetch before the send call and build the message in code, and the signature arrives as built, picture included. Chat assistants' built-in Gmail tools strip images, so send text there.

- n8n, Zapier, Make: an HTTP Request step, GET https://signatoro.com/api/v1/signature with the key in the credential store, then map html or text into the send step. The Signatoro community node installs on self-hosted n8n.
- Gmail API: build raw MIME with the signature in both parts, then messages.send. Microsoft Graph: append to the body of sendMail.
- Resend, SendGrid, Postmark, Nodemailer and SMTP: append before the send call, one key per person or agent.

- [n8n, Zapier and Make](https://signatoro.com/docs/install-signature/agent/automations)
- [Gmail API](https://signatoro.com/docs/install-signature/agent/gmail-api)
- [Microsoft Graph](https://signatoro.com/docs/install-signature/agent/microsoft-graph)
- [Resend, SendGrid, Postmark and SMTP](https://signatoro.com/docs/install-signature/agent/email-apis)
- [Nylas](https://signatoro.com/docs/install-signature/agent/nylas)
- [Power Automate](https://signatoro.com/docs/install-signature/agent/power-automate)
- [Google Apps Script](https://signatoro.com/docs/install-signature/agent/apps-script)
- [Coding agents](https://signatoro.com/coding-agents-email-signature)

## Free to start

Every plan includes the API and the MCP server: 50 requests a month on Free; Company plans are unlimited, for every member. Free includes 1 AI assistant; each person on a Company plan gets 3 AI assistants, and the company gets 3, 10 or 25 agents by size, on top of the people the plan covers.

- [Pricing](https://signatoro.com/pricing)

## Developer questions

### API or MCP?

MCP for an MCP client such as Claude, ChatGPT or a coding agent: it signs in once and calls get_signature. REST from your own code, an automation or any agent that makes HTTP requests. Both serve the same signature.

### Should I cache the signature?

Fetch it per send. Replies are no-store, so the next request always returns the version saved on Signatoro, and an edit reaches the next email.

### How does the agent know to add it?

Put the email signature rule in its instructions (AGENTS.md, CLAUDE.md, a Cursor rule or custom instructions), or install it as a skill. The agent then fetches the signature before every send.

### One key per agent or one per person?

A key made for an AI assistant or company agent always signs as that agent. A person's own key can choose among their signatures with ?signature=, so one agent can sign as the person or as itself per email.

## More from Signatoro

- [Email signatures for AI agents](https://signatoro.com/email-signatures-for-ai-agents)
- [API reference](https://signatoro.com/docs/install-signature/agent)
- [Claude email signature](https://signatoro.com/claude-email-signature)
- [ChatGPT email signature](https://signatoro.com/chatgpt-email-signature)
- [One signature across every provider](https://signatoro.com/email-signatures-for-ai-agents/one-signature)
- [Pricing](https://signatoro.com/pricing)
