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

# Plugins

> Connect third-party tools to the agent, or register your own MCP server so the agent can call it.

Plugins give the agent reach beyond Attensira's own data. A plugin is a third-party tool the agent may call on your behalf — and you can also register **your own MCP server**, which makes every tool it exposes available inside a chat or an automation.

## Connecting a plugin

Open **Plugins**, pick one, and grant it. The grant is per workspace, and you can revoke it at any time. Until a plugin is granted, the agent cannot see its tools at all — a granted plugin is the only way a tool enters the agent's toolset.

The catalog is shelved by state, so you can tell what is available now from what is coming. A plugin that is listed but not yet connectable says so rather than failing when you try to use it.

## Registering your own MCP server

If you run an MCP server, register it and the agent can call it like any built-in tool.

<Steps>
  <Step title="Add the server">
    Give it a name and its URL. The name becomes the slug the agent uses to address it.
  </Step>

  <Step title="Choose an auth mode">
    `none` for an open server, or `apiKey` for a key we send on each request.
  </Step>

  <Step title="Let discovery run">
    Attensira calls `tools/list` on the server and registers what it finds.
  </Step>
</Steps>

### How your tools are named

Discovered tools are namespaced:

```text theme={null}
mcp__<slug>__<tool>
```

So a `search` tool on a server registered as `warehouse` becomes `mcp__warehouse__search`. The namespace makes collisions impossible — two servers can both expose `search`, and Attensira's own built-in tools can never be shadowed by a registered one, because the built-ins are assembled first.

### What is refused, and why

<Warning>
  **OAuth is not supported as an auth mode.** Attensira has no token store, so it cannot hold or refresh an OAuth credential on your behalf. Registering a server with OAuth returns an explicit error rather than accepting the configuration and failing later with a 401 nobody can diagnose.
</Warning>

Use `apiKey` instead, or put an authenticating proxy in front of the server.

### When a server is unreachable

An unreachable server does not silently vanish from the agent's toolset. It becomes a single tool named `mcp__<slug>__unavailable` that explains the problem when called.

That is deliberate. A tool that disappears looks to the agent like a capability that never existed, and it will confidently tell you it cannot do something it normally can. A tool that answers "this server is unreachable" gets you a real diagnosis.

### Limits

Discovery and calls are bounded so one slow server cannot hold up a whole session:

| Bound             | Applies to                                                              |
| ----------------- | ----------------------------------------------------------------------- |
| Discovery timeout | Listing tools when a server is added or a session starts                |
| Call timeout      | A single tool call                                                      |
| Tools per server  | How many discovered tools are registered                                |
| Discovery budget  | Total time spent discovering across all servers before a session starts |

A server that exceeds the discovery budget is skipped for that session rather than delaying the answer.

## How plugins relate to Attensira's own MCP server

These are opposite directions and are easy to confuse.

* **Plugins and registered MCP servers** are *inbound to the agent*: tools the Attensira agent can call.
* **[Attensira's MCP server](/mcp/overview)** is *outbound to you*: it lets your assistant call Attensira.

You can use either, or both. They share no configuration and no credentials — a plugin's API key has nothing to do with your [Attensira API key](/account/api-keys).

## What plugins cannot do

* They cannot be re-read on demand. There is no control that forces a plugin to refresh, because there is no endpoint behind it — rather than show a button that spins and does nothing, the product omits it.
* They cannot authenticate with OAuth, as above.
* A granted plugin is available to the whole workspace, not to one person or one chat.
