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

# Custom integrations

> Choose between a Public API Collection and Custom MCP

Unblocked offers two ways to bring in a system that doesn't have a built-in data source, and both appear under **Settings** › **Data Sources** › **Custom**. They work in opposite directions:

* **Public API Collection** is a push model. You create a collection with the [Unblocked REST API](/api-reference/quickstart) and upload documents to it. Unblocked indexes what you send and cites those documents in answers.
* **[Custom MCP](/data-sources/custom-mcp)** is a pull model. You connect a Model Context Protocol (MCP) server that is reachable over public HTTPS, and Unblocked calls its read-only tools while it answers a question. Nothing is ingested or indexed.

<Note>
  If Unblocked already has a built-in data source for the system — such as [Datadog](/data-sources/datadog) or [Sentry](/data-sources/sentry) — connect that instead. Built-in data sources are indexed, kept in sync, and cited in answers, so a Custom MCP passthrough to the same system gives you less.
</Note>

## Compare the two options

| | Public API Collection | Custom MCP |
| - | - | - |
| Direction | You push documents to Unblocked. | Unblocked pulls from your server. |
| Freshness | A snapshot that is only as current as your last upload. | Live at the time the question is asked. |
| Storage | Documents are indexed by Unblocked. | Nothing is ingested or indexed. |
| Answers | Uploaded documents appear as cited references. | Tool results are used while answering. |
| What you operate | A job or script that builds and uploads documents. | An MCP server reachable over public HTTPS. |
| Network exposure | None. Your systems stay private. | The MCP endpoint must be reachable from the public internet. |
| Authentication | An Unblocked API token in the `Authorization` header. | OAuth or HTTP headers that Unblocked sends to your server. |
| Access | Whatever you choose to upload. | Read-only tools that you select. |
| Limits | Up to 25 collections per team and 10 MB per request. | HTTPS only, and only tools Unblocked determines are read-only. |

## When to use a Public API Collection

Use a Public API Collection when the content behaves like a document set you can hand over:

* The data is static or changes slowly, such as internal documentation, runbooks, policies, or exported reports.
* You can build and upload the content on a cadence, for example nightly or after a publish step.
* You don't want to expose any infrastructure to the public internet.
* Answers don't need to reflect the state of a system at the moment the question is asked.
* You want the content to appear as a cited reference in answers.

Start with the [API quickstart](/api-reference/quickstart) to create a token, create a collection, and add documents. A team can have up to 25 collections, and each request can be up to 10 MB. See [rate limits](/api-reference/rate-limits) for the request limits that apply to API tokens.

## When to use Custom MCP

Use Custom MCP when the answer depends on the current state of a running system:

* You need live context, such as querying a database, a dashboard, or an internal tool on demand.
* No built-in Unblocked data source exists for the system. This covers internal tools, proprietary APIs, and platforms Unblocked doesn't support yet, such as PagerDuty, Grafana, Backstage, LaunchDarkly, or Splunk.
* The system can expose an MCP server over public HTTPS. Local, private-network, and plain-HTTP servers aren't supported.
* The server authenticates with OAuth or HTTP headers.
* The tools you need are read-only. Unblocked uses `annotations.readOnlyHint` when the server provides it, and otherwise evaluates the tool description and excludes tools that might modify data.

See [Custom MCP](/data-sources/custom-mcp) for the connection steps and troubleshooting.

## Rule of thumb

If you have a snapshot you can upload, use a Public API Collection. If you have a live system you have to query, use Custom MCP.

Some teams use both: Public API Collections for reference material that rarely changes, and a Custom MCP server for the systems that have to be checked in the moment.
