# Opelli — your company in one system, ready for AI

> Projects, tasks, capacity, time, customers, deals and invoicing share one platform. Connect Claude, ChatGPT or another assistant through MCP and let it work across the company within your permissions.

_Markdown edition of https://opelli.dev/ — generated from the page itself on 2026-08-25._

---

_One platform · seventeen modules · 90+ tools for AI assistants_

## Company operations, wired to your assistant.

Opelli

Projects, tasks, capacity, time, customers, deals and invoicing share one platform. Connect Claude, ChatGPT or another assistant through MCP and let it work across the company within your permissions.

### What it covers — Five areas. Shared data.

Seventeen modules share the same projects, people and permissions, so plans, time, invoices and reports stay in sync. Your assistant works with the same connected context.

01

#### Projects & work

Projects, tasks, project knowledge, the data your automations write — and the mini-apps your team runs on it all.

- Projects
- Wiki
- Tasks
- Datasets
- Apps

Learn more →

02

#### Planning & people

Plan capacity, track time and approve monthly timesheets.

- Planning
- Time
- People

Learn more →

03

#### Sales & finance

CRM, orders, invoicing, campaigns, sites and forms.

- Customers
- Orders
- Finance
- Marketing
- Sites
- Forms

Learn more →

04

#### Security & control

Permissions, security, compliance, audit records and signed documents.

- Access
- Security
- Compliance
- Audit
- Signing

Learn more →

05

#### AI & assistants

Opelli agents and MCP for the assistant you already use.

- Agents
- MCP

Learn more →

### Bring your own assistant — Connect Claude, ChatGPT or another AI assistant.

Connect once and let your assistant work with projects, tasks, planning, CRM and other Opelli modules. It can read and write through more than 90 tools, always in your name and within your permissions.

- **Ask across the company** — "Who is over capacity next month, and which deals are waiting on them?" is one question across planning, people and sales.
- **Turn decisions into updates** — Create tasks, log a call, move a deal or record time — every change happens in your name and shows in the record as your work.
- **Create a site from project material** — Ask for a page and get a draft built from what is already in the project. Nothing is published until you approve it.
- **Keep every action within your permissions** — An assistant can only use what you can access, and administrators can limit or revoke a connection at any time.

**One connection, the assistant you already use.** It starts working with your company's real context — projects, time, customers and published pages. [See how it connects →](https://opelli.dev/features/agents.html)

### The project page — "How is it going?" — answered on one screen.

Team and capacity, planned and tracked time, budget, deadlines, wiki and tasks — everything about the project on one screen.

![A project detail page: team and capacity table, budget chart, wiki and task widgets.](https://opelli.dev/img/project.jpg)

[See Projects & work →](https://opelli.dev/features/work.html)

### Readable by people and machines — Your company, in Markdown.

Wiki pages, reports and the documents you publish share one portable format — readable by people, programs and AI assistants alike.

- **Write once, reuse anywhere** — Wiki pages, briefs and reports use a portable format.
- Export your wiki without losing its structure.
- Give your assistant the same material your team already works with.

**Your data stays portable.** What you write in Opelli you can take with you — or hand to an assistant as it is. [See what reads it →](https://opelli.dev/features/agents.html)

### The small things — Fast by default.

##### Keyboard first

Work fast with the same shortcuts in every module.

##### Desktop and mobile

Works across desktop and mobile.

##### Notifications where you work

An assigned task, an approved month or a shared page arrives in Slack or Mattermost, with email as the fallback.

##### Search everything

One search across projects, wiki pages, tasks, people and customers, filtered by your permissions.

##### Your own address

Your company at `you.opelli.dev` minutes after the invite — or on your own domain, certificate included.

### See it on your own operations.

Opelli runs in the cloud on an `opelli.dev` address or your own domain. Leave your email and we will show you how it fits the way your team works.

## Connect an agent to Opelli (MCP)

Every Opelli instance is also an **MCP server** — Model Context Protocol over
Streamable HTTP (JSON-RPC 2.0). It is not a separate product or a read-only
mirror: it is the same API the web app uses, so an agent gets exactly the
permissions its credential carries and nothing beyond them.

- **Endpoint:** `https://<your-company>.opelli.dev/mcp` (or the same path on a
  tenant's own domain). There is no shared or central MCP endpoint — the server
  lives inside each company's instance, next to that company's data.
- **Tools:** ~90 named tools spanning every module — projects and the full
  project wiki, tasks, sprints and initiatives, planning, time tracking and
  approvals, people and time off, the CRM, messaging, marketing, forms,
  compliance and the activity log — plus a generic `list_endpoints` /
  `api_request` pair that reaches the rest of the API through the same walls.
- **Authorization is not re-implemented for agents.** Each `tools/call` is
  dispatched as an internal request to Opelli's own `/api`, carrying the
  caller's credential, so feature levels, project row scope and the hard block
  that keeps external guests out of the CRM all apply unchanged.

### Signing in

**OAuth 2.1** — the path for Claude and ChatGPT custom connectors, which are
OAuth-only, and for any other MCP client that prefers it. Add the endpoint URL as a connector; Opelli is the authorization
server (dynamic client registration per RFC 7591, PKCE mandatory) and delegates
identity to the sign-in the company already uses. Discovery follows RFC 9728:
an unauthenticated request answers `401` with
`WWW-Authenticate: Bearer resource_metadata=…`, and the metadata lives at
`https://<your-company>.opelli.dev/.well-known/oauth-protected-resource`.
No key to paste.

**Bearer token** — for scripts, editor agents and locally run clients (any
MCP-capable agent works; nothing here is specific to one vendor): a personal API key
(`opk_…`), minted by any team member under Settings → Personal → API keys and
scoped to the modules it may reach. Claude Desktop connects through the
`mcp-remote` bridge:

```json
{
  "mcpServers": {
    "opelli": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://<your-company>.opelli.dev/mcp", "--header", "Authorization:${OPELLI_KEY}"],
      "env": { "OPELLI_KEY": "Bearer YOUR_KEY" }
    }
  }
}
```

The token rides in `env` rather than inline in `args` because Claude Desktop
mangles the space in `Bearer <token>`.

### Ceilings an agent cannot argue with

A key acts as **its owner** and can never reach further than that person could.
Above every key, admins hold a master on/off switch and a module allowlist for
the whole MCP surface — so an organization can wall the CRM off from every
agent regardless of who holds which permission. External guest accounts cannot
mint keys at all.
