> ## Documentation Index
> Fetch the complete documentation index at: https://opensandbox-feat-monid-managed-catalog.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent capabilities

> 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.