Viene eseguita autonomamente
La chiamata passa direttamente. Per le letture e le scritture ordinarie di cui hai già deciso di fidarti.
gmail.list_messages
Connetti uno strumento una volta, per tutta l’azienda. Gli agenti lo raggiungono tramite un unico token con ambito limitato, mediato da Kortix lato server: così la credenziale grezza non arriva mai sulla macchina controllata dal modello.
connector.call("gmail", "send_email", {…})
KORTIX_TOKEN=kortix_pat_…
Un token limitato, e nient’altro
Ogni azione esposta da un connettore riceve una di tre risposte, che stabilisci tu. Uno strumento alla volta oppure un pattern che ne copre cento: un glob per impostazione predefinita o una regular expression racchiusa tra slash.
La chiamata passa direttamente. Per le letture e le scritture ordinarie di cui hai già deciso di fidarti.
gmail.list_messages
L’esecuzione si ferma sulla chiamata e attende. Una persona la approva una volta, per il resto della sessione oppure la rifiuta.
gmail.send_email
L’azione non è disponibile e nessuna approvazione può abilitarla sul momento. Eliminare un cliente resta fuori discussione.
stripe.delete_customer
Uno strumento lasciato su Default non ha una propria regola e ricade sul valore predefinito del progetto. Finché non imposti quel valore su rischio — le letture passano, le scritture e le azioni distruttive chiedono conferma — un progetto non modificato esegue tutto.

Un gate che restituisce un errore insegna all’agente a ritentare aggirandolo. Un gate Kortix mantiene aperta la chiamata, così l’agente è ancora nel mezzo dell’attività quando rispondi e riprende esattamente da dove si era fermato.
running
L’agente prepara la risposta e arriva a send_email.
waiting
La chiamata resta in attesa. Vedi l’azione e i suoi argomenti.
approved
Approvi. La stessa chiamata viene completata e l’esecuzione continua.
Una regola basata sul nome dello strumento può chiedere solo “l’agente può inviare email?” — che raramente è la domanda giusta. Una condizione individua un valore nella chiamata e lo confronta con un glob o una regular expression, così una regola può consentire l’invio al tuo dominio e fermare tutto il resto. Un argomento elenco passa solo quando ogni elemento passa, quindi un solo destinatario fuori elenco basta a sospendere la chiamata. Se la regola non può decidere, l’esito è sempre quello con meno accesso, mai quello con più accesso.
Le regole a livello di progetto vengono valutate per prime e non possono essere ignorate da chi aggiunge successivamente un connettore.
Un connettore appartiene al progetto, non a un laptop o a un accesso. Aggiungilo una volta e ogni sessione avviata da quel progetto potrà raggiungerlo, senza una seconda configurazione né chiavi condivise in un messaggio diretto.
Scegli l’app, completa la schermata OAuth e il gioco è fatto. Kortix conserva la connessione, non la password: Gmail, Notion, Linear, Salesforce, HubSpot, Zendesk, Google Drive e migliaia di altre.
Indica a Kortix una specifica OpenAPI o Postman, un endpoint GraphQL, un server MCP remoto o un semplice URL di base HTTP. Legge la fonte, determina l’autenticazione e trasforma ogni operazione in uno strumento.
Slack ed email si collegano allo stesso modo, così un agente può essere raggiunto e rispondere dove il lavoro avviene già.

Una sandbox è una vera macchina Linux su cui il modello può eseguire qualsiasi cosa. Per questo non vi inseriamo le tue credenziali. La sandbox contiene esattamente un token Kortix, limitato al progetto, e ogni chiamata in uscita viene assemblata dalla nostra parte del confine.
Ogni chiave si trova nell’ambiente che il modello legge. Revocarne una significa sostituirla ovunque sia stata copiata, e qualunque chiave può finire in una riga di log.
Limitato a un progetto e ulteriormente ristretto in base a ciò che l’agente può utilizzare. Disattivare un connettore ha effetto sulla chiamata successiva. Nella sandbox non serve ruotare nulla, perché non vi è mai stato inserito alcun tuo segreto.
connector.call("gmail", "send_email", {…})
L’agente chiama uno strumento. Indica il connettore e l’azione: non conosce URL, host o chiavi.
POST /v1/connectors/call
Il gateway verifica che questo agente possa usare questo connettore, applica la policy, decritta la credenziale lato server e la allega alla richiesta in uscita.
Authorization: Bearer ••••••••
L’API di terze parti vede una normale richiesta autenticata. La risposta torna all’agente. La credenziale resta protetta.
Le credenziali dei connettori sono crittografate con una chiave per progetto e archiviate separatamente dai valori che una sandbox può leggere.
Il segreto viene allegato a una singola richiesta in uscita e poi eliminato. Non viene mai scritto nell’ambiente della sandbox.
Il modello non vede mai una credenziale e il registro conserva un hash degli input, non gli input stessi.
L’accesso viene concesso, non ereditato. Un agente riceve i connettori che gli assegni e nient’altro; l’accesso effettivo è sempre l’intersezione tra ciò che la persona può fare e ciò che è stato concesso all’agente.
Un connettore vive in un solo progetto. Un altro progetto non può vederlo, chiamarlo o leggerne la credenziale: ogni progetto ha il proprio raggio d’impatto.
Ogni agente elenca i connettori che può usare. L’agente di supporto raggiunge Zendesk e Gmail; quello dei report non raggiunge nessuno dei due e non può scoprire che esistono.
Scegli a chi appartiene la connessione: un account gestito dal progetto e condiviso da tutti, oppure un’autorizzazione personale in cui ogni membro agisce per sé e un’entità automatizzata non può agire affatto.
[[agents]]
name = "support"
connectors = ["zendesk", "gmail"]
[[agents]]
name = "recruiting"
connectors = ["greenhouse", "gmail"]
[[agents]]
name = "reporting"
connectors = ["warehouse"]Le autorizzazioni sono testo nel repository, quindi una modifica a chi può raggiungere cosa è un diff che qualcuno esamina, non un’impostazione cambiata in silenzio.
Il gateway che risolve la credenziale è anche ciò che scrive il record. Non esiste un percorso verso uno strumento collegato che lo aggiri.
Il connettore e l’azione esatta chiamata.
L’agente e la persona o il trigger dietro la sessione.
Eseguita, negata, in attesa di approvazione o in errore.
Indica se l’azione legge, scrive o distrugge.
Chi ha autorizzato una chiamata in attesa e quando.
Un hash degli argomenti e un risultato oscurato: mai un segreto in chiaro.
Leggi il percorso di qualsiasi sessione nell’app. L’accesso all’audit fa parte di Enterprise.