Skip to content

One Sign-In, Two Jobs: How DocsGPT Connectors Work

One DocsGPT 1.0 connection syncs Drive, SharePoint or GitHub into Knowledge, gives agents actions, or both, with per-action permissions and admin control.

Pavel Torbin11 min readknowledgetoolssecurity

A connections panel with five rows, each a connected account: Google Drive syncing into Knowledge daily with no tools; GitHub syncing daily, its reads set to Allow and its writes to Ask first, the Ask first control highlighted in accent; Linear syncing weekly with reads Allow and writes Ask first; Telegram, Alerts bot, with no sync and writes Ask first; and PostgreSQL, Shipment database (read-only), with reads Allow and writes Off. Illustrative settings.

An agent that reads your Google Drive and files issues in Linear is holding credentials for you. Before DocsGPT 1.0, those lived wherever they were first needed: OAuth tokens on the Drive, SharePoint and Confluence sources, an API key on each tool, a sign-in on each MCP server. Each one was set up, renewed and revoked on its own.

1.0 moves all of them onto connections: one signed-in account, or one saved key, for one service. Synced knowledge and agent tools both point at it, so you sign in once, reconnect once and disconnect in one place. The 1.0 release post gave the overview. This is the detail, from the first sign-in to rotating the key that encrypts it all.

One connection, knowledge and tools1.0 · connectors
An account becomes one connection that feeds Knowledge and agent toolsA Your account box points to a highlighted Connection box, which branches to a Knowledge box above and an Agent tools box below.Your accountConnectionKnowledgeAgent toolsoauth · token · api keyencrypted · bound to ownerseveral per service · namednever · daily · weekly · monthlyreads · writes · per action
Text version

You sign in to a service once, with OAuth, a token or an API key. That creates a connection, highlighted, which holds the encrypted credential and is bound to the person who connected it; you can hold several per service, each named. The connection feeds two things: Knowledge, which syncs never, daily, weekly or monthly, and agent tools, whose reads and writes are each set to Allow, Ask first or Off.

Connect Once, Then Choose What It Sets Up

Open Settings › Connectors, pick a service and sign in. OAuth services open the provider's sign-in page in a pop-up; the rest ask for a key or a token. DocsGPT then asks what the connection should set up. One switch lets agents use the service's tools. The other, Sync into Knowledge, picks the files, folders or repositories to sync, how often (never, daily, weekly or monthly) and the same chunking options as an upload.

After that, the connector's page is where you manage it. Sync now runs a sync on demand, Sync more content adds folders later, and Reconnect, Rename and Disconnect act on the account. Disconnecting stops the sync and keeps what already arrived.

GitHub and Linear do both jobs from one sign-in. A GitHub connection syncs repositories into Knowledge and gives agents GitHub's own MCP server, read-only until you also let agents make changes. A Linear connection syncs issues with their comments, and project documents, and lets agents find, create and update issues.

app.docsgpt.cloud — Connectors
app.docsgpt.cloud — Connectors

Built-In Connectors, MCP Presets and Custom Ones

The catalog has three kinds of connector. Built-in connectors ship with DocsGPT: Google Drive, SharePoint and OneDrive, Confluence, GitHub, Amazon S3, Brave Search, Telegram, ntfy and PostgreSQL. MCP presets are vendor-run MCP servers that sign in with OAuth and need no admin setup: Notion, Linear, Jira & Confluence, Sentry, Stripe, ClickUp, Zapier, Trello, Miro and Resend. Anything else connects as a custom MCP server or an OpenAPI / REST spec.

Amazon S3 also takes an S3-compatible endpoint, so a MinIO or Cloudflare R2 bucket syncs the same way. And Confluence does two jobs under two names: the built-in connector syncs pages, while the Jira & Confluence preset gives agents actions.

Connector Kind Syncs into Knowledge Agent tools
Google Drive built-in yes no
SharePoint / OneDrive built-in yes no
Amazon S3 built-in yes no
Confluence built-in yes no
GitHub built-in yes reads, opt-in writes
Brave Search built-in no reads
Telegram built-in no writes
ntfy built-in no writes
PostgreSQL built-in no reads, writes
Notion preset no reads, writes
Linear preset yes reads, writes
Jira & Confluence preset no reads, writes
Sentry preset no reads, writes
Stripe preset no reads, writes
ClickUp preset no reads, writes
Zapier preset no reads, writes
Trello preset no reads, writes
Miro preset no reads, writes
Resend preset no reads, writes
MCP server custom no reads, writes
OpenAPI / REST custom no reads, writes

Allow, Ask First or Off, Per Action

Every action a connection offers is a read, which looks something up, or a write, which changes or sends something. DocsGPT sorts them from what the service tells it: an MCP server's read-only hint, an API endpoint's HTTP method (GET is a read), and failing those, the action's name. Anything that isn't plainly a lookup counts as a write.

Each action is then set to Allow, Ask first or Off. Reads start at Allow and writes at Ask first, which asks you in the chat before anything changes. So an agent can search Notion freely and still has to ask before it edits a page.

Under Customize, each parameter of an action is either Let AI decide or Always use a value you set. A fixed value is sent on every call. The model never sees it and can't change it, even when a prompt asks it to. Give a Telegram connection a default chat, for example, and every message goes to that chat whatever the conversation says. Only the tool's owner can change a fixed value.

You can also connect one service more than once and name each account: two Telegram bots, or a database login that writes beside one that only reads. Tools then show as "Telegram · Alerts bot", and the model sees each account's actions under its name, so it picks the right one.

app.docsgpt.cloud — Settings › Connectors › PostgreSQL
The PostgreSQL connector panel: two connected accounts, Shipment updates and Shipment database (read-only), and the tools from this connection with Looks things up set to Off and Takes actions set to Ask first.
app.docsgpt.cloud — Settings › Connectors › PostgreSQL
The PostgreSQL connector panel: two connected accounts, Shipment updates and Shipment database (read-only), and the tools from this connection with Looks things up set to Off and Takes actions set to Ask first.

What a Connection Looks Like in the Chat

When an agent needs a service you haven't connected, or a connection whose token has expired, the answer shows a Connect prompt instead of failing. Connect, and the answer carries on from where it stopped.

Each step names the service that ran it: "Searched Notion", "Read from Google Drive", "Used Linear: create issue". A citation from a synced file says where the file lives: "From Google Drive". Answers never show which account was used.

app.docsgpt.cloud — Chat › Sources
A chat answer with ten sources; the Sources panel beside it lists each cited document with the start of its passage, and source 7, Pricing guidelines 2026.docx, is marked From Google Drive.
app.docsgpt.cloud — Chat › Sources
A chat answer with ten sources; the Sources panel beside it lists each cited document with the start of its passage, and source 7, Pricing guidelines 2026.docx, is marked From Google Drive.

Whose Account a Shared Tool Uses

Sharing a connected tool with a team asks one question: whose account do members use? With Your account, everyone acts as you on that service. If the tool can write, you confirm that before sharing, and members' writes always need approval. With Each person's own, every member connects their own account the first time they use the tool, through the same Connect prompt. Tools from OAuth MCP servers default to each person's own.

Agents add two cases. When a team editor adds a tool to an agent whose owner can't use it, the tool runs with the editor's access, and the editor becomes its sponsor. That's never implied: before the editor confirms, a dialog names the tool and who will reach it through the agent. And an agent called through its API key or widget runs with its owner's connections. Nobody is there to approve, so it can read, but writes only where the owner allows it under Access Details › Changes others can make as you.

app.docsgpt.cloud — Settings › Tools › Share
Share Telegram dialog: whose account it runs with is set to Each person's own, chosen by an admin for every share of this connector; the Network Operations team has Viewer access.
app.docsgpt.cloud — Settings › Tools › Share
Share Telegram dialog: whose account it runs with is set to Each person's own, chosen by an admin for every share of this connector; the Network Operations team has Viewer access.

What Admins Decide in Admin › Connectors

Admin › Connectors lists every connector with its status and how many connections use it. For each one, an admin sets:

  • Enabled. Turned off, the connector disappears for members, its tools stop and its syncs pause. Existing connections are kept.
  • Shared tools use. The sharer decides per share (the default), or it's always the sharer's account, or always each person's own.
  • Write access, where a connector's tools can opt into changes. Today that's GitHub: turn off Let agents make changes through GitHub and every GitHub tool only reads, including the ones already set up to write.
  • Custom MCP servers. The MCP server row decides whether members can add their own; presets are switched one by one.

On an OAuth connector, Setup guide shows the redirect URI to register with the provider and which server settings are still missing. A connector without its settings starts turned off and hidden from members. Every change on this page is recorded in Admin › Activity as connector_policy_set, with each setting's old and new value.

app.docsgpt.cloud — Admin › Connectors
Admin › Connectors: a table of connectors with status, number of connections, an Enabled switch and Shared tools use for each; Telegram is set to Each person's own and the rest to Sharer decides.
app.docsgpt.cloud — Admin › Connectors
Admin › Connectors: a table of connectors with status, number of connections, an Enabled switch and Shared tools use for each; Telegram is set to Each person's own and the rest to Sharer decides.

Where the Credentials Live

Credentials are encrypted with AES-GCM under a key derived from ENCRYPTION_SECRET_KEY, and bound to the person who connected them. They're never sent to the browser, so nobody can read a token back out of the app. A fresh install generates its own key, and with authentication on, DocsGPT won't create connections while the key is still the public default. On your own deployment, the key is yours.

Rotating it takes four steps and one command, docsgpt connectors reencrypt. Connections that neither the old key nor the new one can open are marked Reconnect needed for their owners. That's the same state an expired sign-in lands in: when a provider rejects a token DocsGPT can't refresh, the connection's syncs pause and its owner gets a notification. Reconnecting the same account resumes them.

One more boundary: custom MCP servers, the API tool and S3 endpoints reach public hosts only, so a connector can't be pointed at localhost or a private address inside your network.

  1. 01

    Keep the old key readable

    Move the current value to the previous-key setting.

    ENCRYPTION_SECRET_KEY_PREVIOUS

  2. 02

    Set the new key and restart

    Set the new value, then restart the API and the worker.

    ENCRYPTION_SECRET_KEY

  3. 03

    Re-encrypt

    Rewrites every connection and the secrets saved on tools and custom models, and prints how many it rewrote.

    docsgpt connectors reencrypt

  4. 04

    Drop the previous key

    Remove the previous key once the command reports nothing unreadable.

Rotating the encryption key. Full procedure: Connectors › Encryption key.

Bring Your Own, in Either Direction

The catalog is a starting point. Any remote MCP server, or any API with an OpenAPI spec through the API tool, becomes a connector with the same per-action permissions, sharing and encryption as the built-in ones. An imported OpenAPI spec is sorted by method, so its GET endpoints start at Allow and the rest at Ask first.

MCP runs both ways in DocsGPT. Presets and custom servers make DocsGPT an MCP client, calling out to your tools. The MCP server at /mcp makes it a server: Claude, Cursor and other clients call its search_docs tool to search the knowledge an agent uses.

The full catalog, with what each connector syncs and which actions it offers, is on Connectors, and setup for every service is in the connectors docs. If you're deciding where DocsGPT should run, see Deploy. Next in this series: answers you can check.

← All posts

See DocsGPT on your documents

A 30-minute demo on your use case, or a free on-premises review with an engineer.