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

# Connecting your data

> Give agents access to external sources using context providers.

An agent is only as good as the context it has access to. Context providers give the agent live access to a source through two natural-language tools: `query_<source>` for reads and `update_<source>` for writes. A sub-agent behind each provider owns the source's quirks, so the main agent's context stays clean.

```python theme={null}
from agno.agent import Agent
from agno.context.web import ExaBackend, WebContextProvider
from agno.models.openai import OpenAIResponses

web = WebContextProvider(backend=ExaBackend(), model=OpenAIResponses(id="gpt-5.5"))

agent = Agent(
    model=OpenAIResponses(id="gpt-5.5"),
    tools=web.get_tools(),
    instructions=web.instructions() + "\nAlways cite URLs inline.",
)

agent.run("What's the latest pricing for Anthropic's models?")
```

## Navigation over search

Context providers navigate the source at query time, the way a coding agent runs `ls`, `grep`, and `cat`. The state is always live and every citation is a path the user can open.

The common "company brain" approach ingests everything into a vector database for top-k retrieval. That works for static corpora. For live product data, the index goes stale and citations point at fragments.

| Win                  | Why it matters for your product                                                |
| -------------------- | ------------------------------------------------------------------------------ |
| Live state           | The Slack message sent thirty seconds ago is queryable now                     |
| Real citations       | Every reference is a path the user can open                                    |
| Permissions stay put | The source enforces who can read what; the agent sees what its credentials see |

## Why a provider, not raw tools

Attaching a source's twelve raw tools to the agent pollutes context and degrades routing. A provider collapses the source to one tool the agent reasons about.

| Problem with raw tools             | What a context provider does                           |
| ---------------------------------- | ------------------------------------------------------ |
| Too many tools crowd the prompt    | The agent sees one tool: `query_slack`                 |
| Overlapping scopes confuse routing | One sub-agent owns one scope; routing is one tool call |
| Intermediate results bury the task | Pagination and lookups stay inside the sub-agent       |

## Sources

| Source         | Tools                                 | Backed by                                                      |
| -------------- | ------------------------------------- | -------------------------------------------------------------- |
| Web            | `query_web`                           | Exa, Parallel, or an MCP search backend                        |
| Workspace      | `query_workspace`                     | A filesystem path or repo, read-only                           |
| Database       | `query_<db>`, `update_<db>`           | Postgres, with a read engine and a schema-guarded write engine |
| Knowledge wiki | `query_knowledge`, `update_knowledge` | Filesystem or a Git repo for durable prose memory              |
| Slack          | `query_slack`                         | Slack API, read-only                                           |
| Google Drive   | `query_gdrive`                        | A service account, scoped to shared folders                    |
| MCP servers    | `query_mcp_<slug>`                    | Any MCP server: Linear, GitHub, Notion                         |

## Read-only providers

Providers that can write take `write=False`, which removes the update tool so the agent cannot mutate the source under any prompt. A read-only source like the web has no write tool to begin with. This is how a style guide or a reference corpus stays immutable while still being queryable.

## Next steps

| Task                          | Guide                                                                |
| ----------------------------- | -------------------------------------------------------------------- |
| Reach users where they work   | [Interfaces](/use-cases/product-agents/interfaces)                   |
| Persist what the agent learns | [Sessions and memory](/use-cases/product-agents/sessions-and-memory) |

## Developer Resources

* [Context engineering](/context/overview)
* [Context providers cookbook](https://github.com/agno-agi/agno/tree/main/cookbook/12_context)
* [Context providers in the runtime](/features/context)
* [Scout: connect MCP servers](/tutorials/scout/connect-mcp-servers)
