> ## Documentation Index
> Fetch the complete documentation index at: https://opencomputer.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://opencomputer.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://opencomputer.manicule.dev/api/mcp.
> Every agent surface: https://opencomputer.manicule.dev/.well-known/llms-manifest.json

# Agent capabilities (/agents/capabilities)

<!-- agent-signals: reading_time_min: 3 · est_tokens: 1177 · updated: 2026-10-05 -->
Related: [Serverless Agents](/agents/overview.md), [How it works](/agents/mental-model.md), [Quickstart](/agents/quickstart.md), [Projects and agents](/agents/projects.md), [Reactive agents](/agents/reactive-agents.md), [Sessions and turns](/agents/sessions.md)

> Choose tools, MCP servers, skills, memory and outbound connections

Capabilities give an agent something beyond its instructions and model. Choose
the narrowest capability that fits the job.

| Capability                   | Use it for                                                         | Where the work happens                                                        | How it is attached                                                               |
| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Code-defined tool            | One typed operation you implement                                  | Your TypeScript `run()` function                                              | `useTool(tool)`                                                                  |
| Tool that waits for approval | A write a person should agree to first                             | Your `preview()` shows it; your `apply()` runs after a decision               | `useTool(tool)` — the same tool, defined with `preview`/`apply` instead of `run` |
| Connected service            | Google services, GitHub, or Linear, on someone's connected account | OpenComputer attaches and refreshes the credential                            | `useService("gmail")`, then `callService()` in a tool                            |
| MCP server                   | A service that already publishes a collection of tools             | The remote MCP server                                                         | `useMcpServer(server)`                                                           |
| Skill                        | A reusable procedure, checklist, or supporting files               | The agent follows the loaded instructions                                     | Place it under `skills/`                                                         |
| HTTP connection              | A constrained authenticated outbound request                       | OpenComputer sends the declared request                                       | Call `defineConnection().fetch()` inside a tool                                  |
| GitHub App connection        | Direct Git and GitHub API access to an installation                | The agent sandbox uses a short-lived installation token                       | `useConnection(github)`                                                          |
| Memory                       | Notes shared across sessions                                       | OpenComputer stores documents; the agent reads and saves through memory tools | `useMemory(memory)`                                                              |

`useModel()` selects the model for a render, but it does not add an executable
capability.

## Tool or MCP server?

Use a [code-defined tool](/agents/tools) when you own the operation, want a
small schema, or need application-specific validation. Use an
[MCP server](/agents/mcp) when another service already hosts the tools.

Both ultimately give the model callable tools. A code-defined tool exposes the
single operation you register; an MCP server exposes the tools it advertises.

## Tool or skill?

A tool performs an operation and returns structured data. A
[skill](/agents/skills) teaches the agent how to approach a category of work.
Many agents use both: the skill describes the workflow while tools perform the
individual actions.

## Session data or memory?

[Session data](/agents/session-data) describes the current session and is set
by your application. [Document memory](/agents/document-memory) keeps notes
across sessions that agents can save and owners can edit. A tool that
writes to your own database is a third option when the data belongs to your
application rather than to the agent's continuing work.

## HTTP connections are not managed accounts

`defineConnection()` declares a secret-backed HTTP destination. It is not an
OAuth account selector and does not itself give the model a tool. Call it from
a code-defined tool or attach it to an MCP definition that accepts the
declared authorization headers. The proposed [HTTP memory provider
contract](/agents/memory-providers) uses the same connection mechanism.

A [managed GitHub App connection](/agents/github) is the exception: the user
installs OpenComputer's App, chooses repositories in GitHub, and the eligible
agent receives a short-lived installation token for direct Git and API calls.

See [Secrets and outbound requests](/agents/secrets) for the complete security
model.
