# Connect your own AI (/docs/integrations/mcp)



Besides [Vera](../tips/interact-with-vera.mdx), the AI built into Ovidens, you can
connect **your own AI** - for example Claude, or another MCP-capable AI - to your
workspace. Once connected, it works in the workspace **as you**: it sees what you can
see and can only do what you and your admin have allowed.

Setting this up takes three steps: an **admin** enables external AI for you, **you**
choose what your AI may do, and then you add your workspace's connector URL in your AI.

## Step 1: An admin enables external AI [#step-1-an-admin-enables-external-ai]

External AI is **off by default** for every member; an admin has to enable it per
person. As an admin:

1. Open the **Access** page and find the member's row on the **Members** tab.
2. Choose **AI permissions** and switch to the **External AI** tab.
3. Tick the capability groups (or expand a group and tick single capabilities) that
   the member's AI may use at most, then choose **Save**.

This sets the maximum you as an admin allow: the most this member's external AI may
ever do in this workspace. The member can only choose within it, never beyond it.
**Reset to default** puts the member back on the platform default. (See
[Administration](../administration.mdx) for the Access page in general.)

## Step 2: Choose what your AI may do [#step-2-choose-what-your-ai-may-do]

Next, the member reviews their own AI settings:

1. Open **Profile** at the bottom of the left navigation and choose **Account**, then
   pick the **AI** section.
2. The section opens on the workspace you are currently working in. If you belong to
   several, the dropdown at the top switches to another one. Then switch to the
   **External AI** tab.
3. Everything your admin enabled is **on by default**. Switch off anything you do not
   want your AI to be able to do.

## Step 3: Connect your AI [#step-3-connect-your-ai]

At the top of the **External AI** tab you find your workspace's **connector URL**. It
is unique per workspace and looks like `https://mcp.ovidens.com/t/<your-workspace>/mcp`.
The line just below it names the workspace the URL connects to, so you can check you are
about to hand your AI the right one. Choose **Copy**, then - using Claude as the example:

1. In Claude, open **Settings > Connectors** and choose **Add custom connector**.
2. Enter a name (for example the workspace name) and paste the copied URL.
3. Choose **Connect**, sign in with your Ovidens account, and **Authorize** the
   connection.

That is it - Claude can now work in your workspace. Other MCP-capable AIs connect the
same way: add the connector URL wherever they accept a custom MCP server, then sign in
and authorize.

Once connected, you can point your AI at anything in the workspace by its ID instead of
describing where it is: copy a widget's, a page's or a node's ID in Ovidens and ask your AI to
`fetch` it. See [Object IDs and AI agents](./object-ids.mdx).

## Good to know [#good-to-know]

* Your AI only sees the tools your **effective permissions** allow - the maximum an
  admin allows you, minus anything you switched off yourself.
* Your AI can never do more in an app than **you** could do yourself there. A tool your
  permissions allow is still refused when you could not make the same change yourself in the
  app it touches, and the refusal says so. An app you cannot open does not exist for your AI:
  it is not listed, and every tool answers that it was not found.
* On an indicator app that is running a [round](../indicator-apps/collection-rounds.mdx), your AI
  enters figures for the reporting units **you** are responsible for and no others,
  unless you manage that app's rounds (an administrator, or a reporting manager of the
  app), in which case it may enter any unit's figures, exactly as you could in the app. Five things no AI can do at all: assign who is responsible
  for a unit, choose which dimension the app's reporting units come from, record a
  verdict on somebody's answer, write a message on an answer, or mark somebody's
  collection work finished. The last three would each put words in a named person's
  mouth. Your AI can READ a round - its name, its status, the period it collects into
  and the figures it asks for - and it can set one up; who a round asks, and what
  anybody said about an answer, stay with people.
* Each tool tells your AI client whether it only READS and whether it can DESTROY
  something, so a client that asks before acting can approve safe reads on its own and
  still stop to ask you before a deletion. You do not configure this; it comes from the
  same permission model the workspace already enforces.
* When a list is longer than one answer can carry, the answer says so: it reports how
  many items it contains and, where the number is known, how many exist in total. So a
  capable AI can tell you it has seen 100 of 4,312 values and narrow its question,
  instead of answering as if it had seen everything.
* Every timestamp your AI reads about your workspace - when an app was created or edited,
  a version published, a run started or a value last changed - reaches it as one exact
  moment in UTC (the time ends in `Z`). Ovidens shows you that same moment in your own
  browser's time zone and names the zone beside it, for example **08:43 PM GMT+2**. Your AI
  is told to convert the time to your time zone and say which zone it means, or to give
  it in UTC, so the time it quotes is visibly the one on your screen. Dates and times you
  typed into a dataset column are different: they have no time zone, and your AI is told
  to show them exactly as they were entered.
* Before it queries an app's data, your AI can ask the workspace what that app actually
  holds: which tables it may read, and the exact type of every column, taken from the
  query engine rather than guessed from the app's setup. That is why a connected AI
  usually writes a working query on the first attempt, and why it can tell you a table
  is not ready yet - the pipeline has not been calculated - instead of reporting that
  the table does not exist.
* Your AI can also check what a query would cost **before** running it. So when a
  question would sweep an app's whole history, a capable AI can narrow it first, or tell
  you the question is too broad and suggest a tighter one - instead of leaving you
  waiting and then failing. Nothing is read and nothing is calculated when it checks.
* Your AI can search an app's knowledge base by keyword instead of opening page after
  page: it gets back the pages that mention your words, each with the passage that
  matched, and reads only those. It searches what you would see in the app - the working
  version, and never a page you moved to the trash. Matching is on whole words and does
  not guess at word forms, so "reports" does not find "report". If your AI comes back
  empty on a topic you know is written up, ask it to try the wording the page itself uses.
* Changes an admin makes, and your own switches, apply on your AI's **next request**;
  no reconnect is needed.
* Every connected AI appears under **Connected AI** in the same settings section, where
  you can **disconnect** it at any time.
* Everything your AI does is recorded in the workspace's activity log - as the AI
  **plus you** as the person behind it, just like with Vera.
* When your AI queries an app that has no results yet, it gets an empty answer that
  says WHY: the app is not published, has never been calculated, or has only ever
  been run as a private draft preview. A capable AI will tell you which it is and
  offer the matching next step (publish, or run the published version) instead of
  reporting "there is no data". An empty answer with no such reason means the app IS
  populated and the query simply matched nothing.
