> For the complete documentation index, see [llms.txt](https://chaincontext.gitbook.io/help-center/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chaincontext.gitbook.io/help-center/core-concepts.md).

# Core Concepts

## MCP (Model Context Protocol)

MCP is an open standard that lets AI models interact with external tools and data. An MCP server exposes three primitives:

* **Tools** — functions the AI can call (e.g., read a token balance, fetch a price)
* **Resources** — static or dynamic data the AI can read (e.g., contract ABI, documentation links)
* **Prompts** — reusable prompt templates with variable interpolation

ChainContext hosts your MCP server and handles the protocol layer so you can focus on what your tools do.

## Projects

A project is a single MCP server. Each project has:

* A **slug** that becomes its subdomain: `{slug}.chaincontext.dev`
* A **mode**: test (uses testnets) or live (uses mainnets)
* An **access mode**: public (anyone can connect) or private (requires an API key)
* **Protocols**: Streamable HTTP and/or SSE transport

## Contracts

Smart contracts are the data source for your tools. When you import a contract:

1. Paste the address
2. ChainContext fetches the ABI/IDL automatically
3. Attach one or more networks (chains) to the contract
4. Contract functions become available as tool building blocks

## Tools

A tool is a named function exposed via MCP. Each tool has:

* **Input schema** — parameters the AI provides when calling the tool
* **Block stack** — a pipeline of blocks that execute in order to produce the result
* **Output formatting** — how results are presented back to the AI
* **Annotations** — MCP hints (read-only, destructive, idempotent, open-world)

### Block types

| Block                | Purpose                                         |
| -------------------- | ----------------------------------------------- |
| `contract_call`      | Call a smart contract read function             |
| `build_unsigned_tx`  | Generate an unsigned write transaction          |
| `data_source`        | Fetch from CoinGecko, DexScreener, or Etherscan |
| `http_request`       | Call any external HTTP API                      |
| `transform`          | Reshape data (math, format, filter, map, etc.)  |
| `condition`          | Branch execution based on a condition           |
| `response_formatter` | Format the final output                         |

Blocks execute top-to-bottom. Each block can reference outputs from previous blocks using `{{blockId.fieldName}}` syntax.

{% hint style="info" %}
Learn more about each block type in [Building Tools](/help-center/building/building-tools.md).
{% endhint %}

## Teams

Teams are the billing and access boundary. Each team:

* Belongs to an account (which has a plan)
* Can have multiple projects
* Can have multiple members with roles: owner, admin, member

## Plans

| Feature         | Free   | Builder ($29/mo) | Studio ($79/mo) |
| --------------- | ------ | ---------------- | --------------- |
| Projects        | 2      | 5                | Unlimited       |
| Tools/project   | 5      | 20               | Unlimited       |
| Tool calls/day  | 1,000  | 10,000           | Unlimited       |
| AI descriptions | —      | Yes              | Yes             |
| HTTP blocks     | —      | —                | Yes             |
| Custom domains  | —      | Yes              | Yes             |
| Log retention   | 7 days | 14 days          | 30 days         |

{% hint style="success" %}
The Free plan is permanently free — no credit card required. Paid plans include a 14-day money-back guarantee.
{% endhint %}

## Deploy lifecycle

```
draft → deploying → live
                  ↘ error
```

* **Draft** — project created but not published
* **Deploying** — config is being built and written to the edge cache
* **Live** — MCP server is accessible at its URL
* **Error** — deploy failed (check the error in project settings)

{% hint style="info" %}
Re-deploying an already-live project updates the config in place with zero downtime.
{% endhint %}

## Non-custodial by design

{% hint style="danger" %}
ChainContext **never** holds custody of private keys, funds, or tokens. Write tools generate unsigned transactions — your wallet signs them.
{% endhint %}
