> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terminus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Claude, ChatGPT, and Other AI Apps

> Connect an AI app to Terminus Hub over MCP so it can look up your taxonomies and records, build links in a draft submission, and submit them as you.

<Info>
  You can connect Claude, ChatGPT, or another app that supports MCP (Model Context Protocol) to Terminus Hub. Once connected, you can ask it things like "build the tagged URLs for next week's newsletter" or "find the short link for the spring launch". The app looks up the right taxonomy, fills in the fields, and shows you the draft before anything goes live. It acts as you, with your permissions, in one account. Connected apps are available on every plan.
</Info>

## Before you start

* You need a Terminus Hub account and a member role that lets you do what you plan to ask for. A connected app can do nothing you cannot do in Terminus yourself. For example, a viewer's app cannot create submissions.
* Your account must allow app connections. Owners and admins control this with **Allow members to connect apps** on the [Security](/account/security) page.
* If your account requires two-factor authentication, set it up first, unless you sign in to that account through its single sign-on. See [Profile settings](/account/profile#two-factor-authentication).
* Claude (on the web, Claude Desktop, and Claude Code) and ChatGPT can connect. Cursor cannot connect yet.

## Connect an app

<Steps>
  <Step title="Copy the Terminus MCP URL">
    The URL is `https://mcp.terminus.app/mcp`. You can also copy it in Terminus: open the user menu at the bottom of the sidebar and choose **Connected apps**. Until you connect an app, that page shows the URL with a copy button.
  </Step>

  <Step title="Add Terminus as a connector in your AI app">
    In your AI app's settings, add a custom connector (it may be called an MCP server or an app) and paste the URL. The app then sends you to Terminus. Each app's own help explains where to add it:

    * **Claude on the web and Claude Desktop:** [Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp). On Claude Team and Enterprise plans, an owner adds the connector for the organization first.

    * **Claude Code:** [Connect Claude Code to tools via MCP](https://code.claude.com/docs/en/mcp). Run the command below, then run `/mcp` inside Claude Code and choose Terminus to sign in.

      ```bash theme={null}
      claude mcp add --transport http terminus https://mcp.terminus.app/mcp
      ```

    * **ChatGPT:** [Developer mode and MCP apps in ChatGPT](https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt). ChatGPT adds MCP servers as custom apps in developer mode, and your ChatGPT plan decides who can turn that on and whether the app may take write actions such as creating submissions.

    <Note>
      Terminus connects with OAuth: you sign in to Terminus and approve the app, and it never needs a password, token, or key from you. If your AI app offers a choice of authentication, choose **OAuth**. Leave any **OAuth Client ID** and **OAuth Client Secret** fields empty, because the app identifies itself to Terminus and Terminus does not issue client IDs or secrets. Don't add an authorization header or an [API key](/account/api-keys): API keys do not work for connected apps.
    </Note>
  </Step>

  <Step title="Sign in and review the request">
    If you are not signed in to Terminus, sign in first (with your password, two-factor code, or SSO). The consent page, headed **Connect** *app name* **to Terminus**, shows the domain the app identifies itself from and lists **What it can do**. For Claude and ChatGPT, that is:

    * View your governance models, taxonomies, and allowed values
    * Create submissions and submit them as you
    * View the links and records you can access

    If Terminus does not recognize the app, you also see an **Unverified app** badge and "Terminus does not recognize this app. Only allow apps you trust." Terminus recognizes Claude and ChatGPT.
  </Step>

  <Step title="Choose an account">
    Under **Account**, pick the account the app works in. If you belong to only one account that can connect, it is already selected. An account that cannot connect is greyed out with the reason (see [Troubleshooting](#troubleshooting)).
  </Step>

  <Step title="Allow">
    Click **Allow**. You return to your AI app, which is now connected. Click **Deny** to cancel instead.
  </Step>
</Steps>

A connection covers one app in one account. To use the same app with a second account, add Terminus again in your AI app and choose the other account. Every surface of the same product shares one connection: connecting Claude on the web also connects Claude Desktop, and you see a single **Claude** row.

## What you can ask it to do

The app decides which tool to use based on what you ask. Your AI app may ask you to approve each tool call, and it shows these names when it does.

| Tool                  | What it does                                                                                                                                                                                            | Access it needs    |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| `list_taxonomies`     | Lists the taxonomies you can use and the workspaces each is active in, including whether the workspace requires review.                                                                                 | Read governance    |
| `describe_taxonomy`   | Explains how to fill a taxonomy: its fields, which are required, their rules and help text, default values, and which fields Terminus computes.                                                         | Read governance    |
| `list_allowed_values` | Lists the values a dropdown accepts, given what is already chosen in the row. Works for cascades, conditional lists, and automated picklists, and applies the workspace's option filter to fixed lists. | Read governance    |
| `create_submission`   | Creates a draft submission and returns a preview of every row, including the computed links and any errors. Nothing goes live.                                                                          | Create submissions |
| `update_submission`   | Replaces a draft's rows. Also works on a submission a reviewer rejected, which returns it to draft.                                                                                                     | Create submissions |
| `submit_submission`   | Makes a draft live, or sends it to review when the workspace requires review.                                                                                                                           | Create submissions |
| `get_submission`      | Reads a submission's status and values.                                                                                                                                                                 | Create submissions |
| `list_records`        | Lists the records in one taxonomy that you can access, newest first, with filters for workspace, status, creation date, and exact field values.                                                         | Read records       |
| `get_record`          | Looks up one record by its Terminus ID (`trm0...`).                                                                                                                                                     | Read records       |
| `render_qr_code`      | Shows a QR code image (PNG or JPG) from a record or submission the app read, and gives links to view or download it as PNG, SVG, JPG, or PDF.                                                           | Read governance    |

The app only sees what is published. Unpublished edits to a governance model stay invisible to it until you [publish a revision](/guides/publish-revision), and a taxonomy added since the last publish does not appear at all.

## Review what the app creates

The app works through the same [submission pipeline](/concepts/submission-pipeline) as you do in Terminus:

* `create_submission` only builds a draft. Ask the app to show you the preview, and check it before you tell it to submit.
* When you ask it to submit, `submit_submission` refuses if the draft changed since the preview or if the published rules would now produce different values. Terminus updates the draft and asks the app to show it to you again.
* Workspace review rules and [plan limits](/reference/plans-and-limits) apply exactly as they do in the app. Only the submission's author or a workspace admin can edit or submit it.

Terminus has no confirmation step of its own before a submit. If you want to approve each submit, turn on tool approval in your AI app.

Everything the app writes is recorded as you "via" the app, for example "Priya via Claude (claude.ai)" in the activity feed. Submissions it created show a **via Claude** badge in the **Submissions** list and on the submission page. Hover the badge to see the app's domain. An unrecognized app's badge reads **via** *app name* **(unverified)**.

## QR codes from an app

When the app reads a record or submission with a [QR Code](/reference/fields/qr-code) field, it gets the QR code's content and a link to its image. The app can show the image or give you the link to open or download it.

* The image link works without signing in for **7 days** after the app read it. After that, ask the app to look up the record again for a fresh link.
* Anyone with the link can view that one image. The link cannot be changed to encode something else, but its contents (the QR content, its caption or the record's Terminus ID, and account and QR style IDs) are readable by anyone holding it.
* A link already handed out keeps working until it expires, even after the app is disconnected.
* If your account is locked for billing, its QR image links stop working right away, the same as its short links.

## How long a connection lasts

A connection ends 30 days after the app last used it, or 90 days after you connected it, whichever comes first. The consent page tells you the maximum before you click **Allow**. When a connection ends, connect the app again from the AI app.

A connection also stops working:

* **Right away** when you are suspended or removed from the account, or when an admin turns off **Allow members to connect apps**.
* **The next time the app uses it** after an admin resets your two-factor authentication.
* **Temporarily** while the account is locked for billing, or while the account requires two-factor authentication and you have not set it up (a connection you approved while signed in through the account's SSO is not affected). It resumes once that is fixed, unless it reached its 30 or 90 day limit meanwhile.

Connecting an app you already connected replaces the old connection.

## See and disconnect your apps

Open the user menu at the bottom of the sidebar and choose **Connected apps**. The list shows each app with its **Access** (the permissions it has), **Last used**, and **Expires**. To disconnect one, click its delete icon, then **Disconnect**. The app loses access right away. You can connect it again later.

If a row says "New: record access. Reconnect this app from *app name* to enable.", the app was connected without that access, usually because you connected it before Terminus offered it. Disconnect the app, then connect it again from the AI app to grant it.

## For admins: manage connected apps

Account owners and admins can see every member's connections. In the account menu, choose **Settings**, then **Connected Apps**. The list adds a **Member** column, and you can filter by app when more than one app is connected.

* To see one member's apps, open the member from **Members** and click **Connected apps**.
* To revoke one connection, click its delete icon, then **Revoke**. **Revoke all** revokes every connection in the account, or every connection for one member if you opened the page from their profile. The app filter does not narrow it. Members can connect again unless you also turn off app connections.
* To stop all app connections, turn off **Allow members to connect apps** on the [Security](/account/security) page. Every connected app in the account is disconnected immediately, and members cannot connect new ones.

Removing someone in your identity provider does not disconnect their apps. Suspend or remove them in Terminus (see [Team members](/account/team-members)), or their connections run until they expire.

## Troubleshooting

| What you see                                                                                             | What to do                                                                                                                  |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **This account is locked. Reactivate your plan to connect apps.**                                        | The account's plan needs reactivating. See [Billing](/account/billing).                                                     |
| **Your admin has turned off app connections.**                                                           | Ask an owner or admin to turn on **Allow members to connect apps** on the [Security](/account/security) page.               |
| **This account requires two-factor authentication. Set it up first.**                                    | Set up two-factor authentication in [Profile settings](/account/profile#two-factor-authentication), then connect again.     |
| **You are not a member of any account yet.**                                                             | Accept an invitation to an account first.                                                                                   |
| **This app could not be connected**                                                                      | The connection request was not valid. Click **Return to the app** if shown, and start the connection again from the AI app. |
| The connection was lost while you signed up, reset your password, or accepted an invitation in a new tab | Terminus remembers the connection request only in the tab where it started. Start the connection again from the AI app.     |
| The app says it cannot see a taxonomy or a new field                                                     | Publish the governance model. Connected apps only see the latest published revision.                                        |
