Installare Sending nel tuo agente
Aggiungere il server MCP di Sending a Claude, ChatGPT, Cursor, VS Code e agli altri client.
Sending non si installa: è un server MCP remoto. Non c'è niente da scaricare, nessun pacchetto npm, nessun processo da tenere acceso. Al client servono due informazioni:
| Endpoint | https://sending.dev/api/mcp |
| Transport | Streamable HTTP |
| Auth | Authorization: Bearer sk_... (API key) oppure OAuth 2.1 |
mcp-remote.Quale credenziale scegliere
API key se il client accetta header personalizzati (Claude Code, Cursor, VS Code, mcp-remote). La crei in Impostazioni › API Keys, scegli lì gli scope, e la vedi in chiaro solo alla creazione. Punta sempre allo stesso workspace: è la scelta giusta per un progetto o una macchina di build.
OAuth 2.1 se il client apre una schermata di consenso nel browser (ChatGPT, claude.ai, Claude Desktop). Non incolli nessun segreto: autorizzi con il tuo account e i permessi li scegli nella schermata di consenso. È anche l'unica strada nei client che non permettono di mandare header.
Nessuna delle due aggira i guardrail d'invio (dominio verificato, suppression, idempotenza, quota di piano).
Claude Code
# con API key
claude mcp add --transport http sending https://sending.dev/api/mcp \
--header "Authorization: Bearer sk_la_tua_api_key"Aggiungi --scope user per averlo in tutti i progetti, --scope project per scriverlo nel
.mcp.json del repo (condiviso col team: in quel caso non metterci la key in chiaro).
Verifica con claude mcp list: deve rispondere ✔ Connected.
A mano, in .mcp.json o ~/.claude.json:
{
"mcpServers": {
"sending": {
"type": "http",
"url": "https://sending.dev/api/mcp",
"headers": { "Authorization": "Bearer sk_la_tua_api_key" }
}
}
}type non è opzionale: una voce con url ma senza type viene letta
come server stdio e saltata. Se metti l'header Authorization e la key è sbagliata, Claude Code
segnala la connessione come fallita e non ripiega su OAuth: togli l'header per usare il consenso.Claude Desktop e claude.ai
Vanno per connettore, quindi OAuth.
Apri i connettori
Incolla l'endpoint
https://sending.dev/api/mcp, con nome Sending.Autorizza
Il client si registra da solo (RFC 7591), quindi non devi creare nessuna app OAuth.
ChatGPT
I connettori personalizzati stanno dietro il developer mode e accettano solo OAuth o nessuna autenticazione: non c'è modo di passare una API key, usa il consenso.
Abilita il developer mode
Aggiungi il server
https://sending.dev/api/mcp, autenticazione OAuth.Autorizza e scegli i permessi
Da API (Responses) l'endpoint si passa come tool, e lì la API key torna utilizzabile:
{
"model": "gpt-5",
"tools": [{
"type": "mcp",
"server_label": "sending",
"server_url": "https://sending.dev/api/mcp",
"authorization": "sk_la_tua_api_key",
"require_approval": "always"
}],
"input": "Quante email mi restano questo mese?"
}require_approval: "never" toglie il passaggio umano davanti a tool che spediscono
davvero. Se lo fai, tieni la key su scope di sola lettura oppure limita gli invii con i cap del piano.Cursor
In .cursor/mcp.json (progetto) o ~/.cursor/mcp.json (globale):
{
"mcpServers": {
"sending": {
"url": "https://sending.dev/api/mcp",
"headers": { "Authorization": "Bearer sk_la_tua_api_key" }
}
}
}Poi Settings › MCP: il server deve comparire verde con i tool elencati.
VS Code (GitHub Copilot)
In .vscode/mcp.json. La chiave è servers, non mcpServers, e con inputs la key la
digiti al primo avvio invece di committarla:
{
"inputs": [
{ "id": "sending-key", "type": "promptString", "description": "Sending API key", "password": true }
],
"servers": {
"sending": {
"type": "http",
"url": "https://sending.dev/api/mcp",
"headers": { "Authorization": "Bearer ${input:sending-key}" }
}
}
}Client solo stdio (Cline, Windsurf, Gemini CLI)
Chi non parla HTTP remoto passa da mcp-remote,
che fa da ponte: stdio da una parte, il nostro endpoint dall'altra.
{
"mcpServers": {
"sending": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://sending.dev/api/mcp",
"--header", "Authorization: Bearer sk_la_tua_api_key"
]
}
}
}Senza --header il ponte avvia il flusso OAuth nel browser al primo collegamento.
Un client qualsiasi
Se il tuo agente non è nell'elenco, i parametri sono questi e bastano: URL
https://sending.dev/api/mcp, transport streamable HTTP, header
Authorization: Bearer <api key o access token>. Chi implementa MCP per intero trova tutto
in automatico:
/.well-known/mcp/server-card.jsondescrive server, transport e autenticazione/.well-known/oauth-protected-resourcee/.well-known/oauth-authorization-serverespongono la metadata OAuth (registrazione dinamica RFC 7591,authorization_code+ PKCES256)/auth.mdspiega le credenziali in prosa, per un agente che legge/.well-known/agent-skills/pubblica le skill, fra cuiconnect-mcp
Per dare all'agente REST e MCP in un colpo solo c'è il prompt pronto.
Prompt pronto per il tuo agente
Tutta la conoscenza REST + MCP in un blocco, da incollare in Cursor o Claude Code. Oppure leggi /llms-full.txt.
Verifica che funzioni
Chiedi all'agente di chiamare get_usage: è read-only, non spedisce niente e risponde con
piano, quota del mese e limiti di capacità. Se torna un JSON, l'installazione è a posto.
Permessi
Con una API key i permessi sono gli scope scelti alla creazione, in API Keys.
Con il collegamento OAuth (il client apre la schermata di consenso) i permessi li scegli
tu al momento dell'autorizzazione: la schermata elenca il catalogo completo, con
pre-selezionato ciò che il client ha richiesto. Serve perché i client MCP non conoscono gli
scope di Sending e in genere chiedono solo l'identità: senza spuntare nulla, i tool
rispondono forbidden: {"need":"..."}.
Puoi cambiare i permessi di una connessione già attiva da Connessioni MCP, senza revocare e ricollegare: valgono dalla chiamata successiva.
campaigns:write (creazione), contacts:read (per
risalire al listId della lista) ed email:send (invio).Se qualcosa non va
| Sintomo | Causa | Rimedio |
|---|---|---|
| Il server non compare fra i tool | voce JSON senza type: "http" | aggiungi type, riavvia il client |
401 | key revocata, o header assente | rigenera la key, o completa il flusso OAuth |
forbidden: {"need":"..."} | permessi mancanti sul binding | Connessioni MCP, spunta l'area richiesta; non ricollegare il client |
402 | quota del piano superata | vedi get_usage e Piani |
Connessione fallita subito dopo claude mcp add | header Authorization con key non valida | correggi la key, oppure toglila e usa OAuth |