ChatGPT può pubblicare con Shager? Sì: collegalo con un accesso, o usa una delle altre tre strade
I connettori MCP di ChatGPT accedono con OAuth, e Shager lo supporta: aggiungi Shager in modalità sviluppatore, accedi e approva. In più Codex, l'API e uno script.

Sì. I connettori MCP personalizzati di ChatGPT si autenticano con OAuth, e il server MCP di Shager supporta l'accesso OAuth. Aggiungi https://app.shager.ai/api/mcp come connettore in modalità sviluppatore, accedi a Shager e approva, senza chiavi da copiare. Puoi anche far lavorare i modelli OpenAI su Shager con Codex, con l'API di OpenAI, oppure usando ChatGPT per scrivere e un breve script per la consegna.
Questo articolo mostra come aggiungere il connettore e fornisce codice funzionante per ciascuna delle altre strade.
Come si aggiunge Shager come connettore di ChatGPT?
La guida di OpenAI sull'autenticazione per le app in ChatGPT descrive il modello supportato: i server che richiedono autenticazione implementano un flusso OAuth 2.1 conforme alla specifica di autorizzazione MCP, con i Client ID Metadata Documents come opzione preferita e il supporto anche alla registrazione dinamica dei client. I server possono anche funzionare senza autenticazione. La stessa guida precisa che ChatGPT non può presentare chiavi API personalizzate.
Il server di Shager su https://app.shager.ai/api/mcp segue questa specifica, con i Client ID Metadata Documents e con la registrazione dinamica dei client. Per collegarlo:
- In ChatGPT, apri Settings, poi Apps & Connectors, attiva Developer mode e fai clic su Create.
- Chiamalo
Shager, inseriscihttps://app.shager.ai/api/mcpe scegli OAuth. - Fai clic su Connect. Si apre Shager: accedi, scegli l'organizzazione e approva.
La modalità sviluppatore è disponibile sui piani a pagamento di ChatGPT. Il collegamento può leggere e creare bozze. Programmare e pubblicare è una casella separata nella schermata di approvazione, disattivata finché non la selezioni, e puoi scollegarlo in qualsiasi momento da https://app.shager.ai/dashboard/agents.
Perché non mettere un proxy senza autenticazione davanti a una chiave API?
C'è chi lo propone, ed è una pessima idea, soprattutto ora che non serve. Un proxy che accetta richieste non autenticate e inserisce la tua chiave Shager trasforma i permessi di pubblicazione della tua agenzia in un endpoint pubblico. Chiunque trovi l'URL può creare bozze nei workspace dei clienti e, con una chiave publish, programmarle. Non farlo.

Strada 1: Codex, l'agente di programmazione di OpenAI
Se quello che cerchi è «un modello OpenAI che gestisce Shager», Codex lo fa già in modo pulito. Supporta i bearer token letti da una variabile d'ambiente per i server MCP HTTP in streaming, quindi la configurazione si riduce a poche righe in ~/.codex/config.toml:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
La documentazione MCP di OpenAI fa notare che l'app desktop di ChatGPT, la Codex CLI e l'estensione per IDE condividono questo file di configurazione. La guida completa, con un elenco degli strumenti consentiti, è in collegare Shager a Codex.
Strada 2: la Responses API di OpenAI con uno strumento MCP remoto
Se stai costruendo il tuo agente sull'API di OpenAI, la Responses API può chiamare da sola i server MCP remoti. La guida a connettori e MCP documenta uno strumento mcp con server_url, un campo authorization per il token di accesso, allowed_tools e require_approval. La documentazione precisa anche che l'API non memorizza il valore di authorization, quindi va inviato a ogni richiesta.
import os
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model=os.environ["OPENAI_MODEL"],
input=(
"In the Shager workspace 'Cedar Clinics', list the channels, then create a "
"DRAFT post to all active channels announcing Saturday walk-in hours. "
"Use a different caption per channel that names the clinic's town. "
"cta_url https://cedarclinics.example/walk-in, campaign 'walk-in-sat'. "
"Do not pass schedule_at."
),
tools=[{
"type": "mcp",
"server_label": "shager",
"server_url": "https://app.shager.ai/api/mcp",
"authorization": os.environ["SHAGER_API_KEY"],
"allowed_tools": [
"whoami", "list_workspaces", "list_channels",
"list_groups", "create_post", "get_post",
],
"require_approval": {
"never": {"tool_names": ["whoami", "list_workspaces", "list_channels", "list_groups", "get_post"]}
},
}],
)
print(response.output_text)
Tre osservazioni, nate dall'uso di configurazioni di questo tipo.
Primo, verifica l'autenticazione con whoami prima di qualsiasi altra cosa. La documentazione di OpenAI presenta authorization come campo per un token di accesso OAuth; la chiave di Shager è un bearer token, quindi la prima chiamata ti dice subito se l'header arriva come Shager se lo aspetta. Se nell'output dello strumento ricevi un 401, passa alla strada 3.
Secondo, create_post è escluso di proposito dalla lista never, quindi l'API restituisce una richiesta di approvazione prima di eseguirlo. Il tuo codice controlla gli argomenti e risponde con un'approvazione. È un punto di controllo economico, umano o basato su regole, prima che venga scritta una bozza.
Terzo, non dare il permesso publish a questa chiave. Così anche una chiamata approvata può solo creare bozze.
Strada 3: ChatGPT scrive, il tuo script consegna
È lo schema più diffuso tra le agenzie che vivono dentro ChatGPT. Il modello fa ciò che gli riesce meglio, cioè scrivere quaranta varianti di un testo. Uno script di venti righe si occupa della consegna tramite la REST API di Shager su https://app.shager.ai/api/v1, descritta per intero nel documento OpenAPI.
Chiedi a ChatGPT un output strutturato da incollare in un file:
For each account below, write a caption for our Saturday walk-in hours post.
Vary the opening line and mention the town. Keep facts identical.
Return only JSON: [{"channel_id": "...", "caption": "..."}]
Accounts: <paste the id and name list from list_channels>
Poi invialo come bozza:
import json, os, requests
API = "https://app.shager.ai/api/v1"
H = {"Authorization": f"Bearer {os.environ['SHAGER_API_KEY']}"}
WS = os.environ["SHAGER_WORKSPACE_ID"]
captions = json.load(open("captions.json"))
r = requests.post(f"{API}/workspaces/{WS}/posts", headers=H, json={
"caption": captions[0]["caption"],
"channel_ids": [c["channel_id"] for c in captions],
"per_channel": captions,
"cta_url": "https://cedarclinics.example/walk-in",
"campaign": "walk-in-sat",
"first_comment": "Hours and directions: https://cedarclinics.example/walk-in",
}, timeout=60)
body = r.json()
if not r.ok:
raise SystemExit(f"{body['error']['code']}: {body['error']['message']}")
print("draft", body["data"]["id"], body["data"]["status"])
L'array per_channel accetta oggetti con channel_id e caption (più first_comment e format facoltativi), quindi il JSON di ChatGPT si inserisce così com'è. Il cta_url riceve un link breve e UTM separati per ogni account, con utm_content che riporta il nome dell'account: è questo che in seguito rende i risultati attribuibili.

Quale strada per quale team?
| Situazione | Strada |
|---|---|
| Vuoi già oggi un agente con strumenti nel terminale o nell'IDE | Codex con bearer_token_env_var |
| Stai costruendo un tuo prodotto o agente sui modelli OpenAI | Responses API con lo strumento mcp, oppure REST semplice |
| Il tuo team scrive in ChatGPT e non vuole uscirne | ChatGPT per i testi, uno script per la consegna |
| Vuoi Shager dentro l'app di ChatGPT | Un connettore personalizzato in modalità sviluppatore, con accesso OAuth |
Cosa ti dà l'accesso?
Aggiungi https://app.shager.ai/api/mcp come server MCP personalizzato in ChatGPT e accedi con il tuo account Shager, come descrive la guida di OpenAI al collegamento da ChatGPT per i server con autenticazione. Ogni persona si collega con il proprio account invece di condividere una chiave. Il registro funziona allo stesso modo, così come gli strumenti, che corrispondono uno a uno alle operazioni REST.
Domande frequenti
C'è un modo per usare una chiave API nelle impostazioni dei connettori di ChatGPT?
Non secondo la guida di OpenAI sull'autenticazione per le app in ChatGPT, che elenca le modalità OAuth e senza autenticazione e afferma che ChatGPT non può presentare chiavi API personalizzate. Non ti serve: scegli OAuth e accedi. Considera qualsiasi scorciatoia che espone la tua chiave dietro un endpoint aperto come un problema di sicurezza, non come una soluzione.
Shager funziona in ChatGPT da mobile?
Dipende da dove ChatGPT consente i server MCP personalizzati: è una decisione di OpenAI e durante il rilascio è già cambiata. Controlla la documentazione aggiornata di OpenAI invece di basarti su come funzionava prima.
Mi serve un piano a pagamento di Shager per provare queste strade?
No. L'accesso ad API e MCP è incluso in ogni piano e, durante il periodo di lancio, Shager è gratuito e senza carta; prima di iniziare a far pagare ti avviseremo in anticipo. Nella pagina dei prezzi trovi i limiti di account per ogni piano.
Il prossimo passo
Se scegli la strada del codice, il modo più rapido per orientarti è il quickstart della REST API, che in sei chiamate ti porta da una chiave nuova a una bozza tracciata su più account.


