MCP Quickstart

ContextOwl serves your docs to agents over MCP with Streamable HTTP. Connect any MCP client that supports remote HTTP servers, or call the same endpoint with plain JSON-RPC.

Use MCP when an agent needs to search and read your docs, propose fixes, draft pages, manage changelog entries, sync an OpenAPI reference, or set up workspaces.

Read public docs without a key

Every docs site also answers MCP without a key, at https://{your-docs-host}/mcp. An anonymous agent gets the read tools and report_content_gap. It reaches only the public workspaces that allow AI agents, and only the pages that an anonymous reader can open. The docs site shows the setup for each client under Connect an AI agent, in the page actions menu next to Copy as Markdown.

claude mcp add --transport http contextowl-docs https://developer.contextowl.co/mcp

Use an agent key for private content, for changes, and for analytics. To let a person connect an agent with their own sign-in, use the signed-in endpoint.

Requirements

1. Create an agent key

Open Admin > Settings > API and create a key.

Choose:

The token starts with cowl_pat_ and shows only once. Store it in your secret manager before you close the panel.

Recommended permission sets:

Use case Permissions
Read-only docs assistant search, article.read, changelog.read, landing.read, openapi.read
Contributor under review search, article.read, article.propose
Docs drafting agent search, article.read, article.create, article.update, section.create, article.place
Publishing agent Docs drafting permissions plus article.publish
Landing editor agent landing.read, landing.update
Release notes agent changelog.read, changelog.create, changelog.update, changelog.publish
OpenAPI sync agent openapi.read, openapi.attach, openapi.sync, openapi.layout, openapi.detach
Workspace automation workspace.create, workspace.update, workspace.delete

Every key can call whoami and list_workspaces. They need no permission.

When your organization reviews agent changes, a change from a key to content that readers see waits in Admin > Proposals until an editor approves it. An admin can approve a key you trust, such as a CI key, as a publishing key. Its changes then go live at once. Permissions and Tools lists the writes that wait for review.

2. Connect an MCP client

Use your ContextOwl host plus /mcp. On ContextOwl Cloud this is https://contextowl.co/mcp.

{
  "mcpServers": {
    "contextowl": {
      "type": "http",
      "url": "https://contextowl.co/mcp",
      "headers": {
        "Authorization": "Bearer cowl_pat_YOUR_KEY"
      }
    }
  }
}

3. Test the endpoint

List the tools that the key can use:

curl -s -X POST https://contextowl.co/mcp \
  -H "Authorization: Bearer cowl_pat_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The list holds only the tools that the key can use: the key holds the permission, the role of its owner allows it, and the plan includes it. A call to a hidden tool fails with tool 'NAME' not found. To see what the key can do, and why a permission is blocked, call whoami.

Read one article:

curl -s -X POST https://contextowl.co/mcp \
  -H "Authorization: Bearer cowl_pat_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_article","arguments":{"workspace":"platform","slug":"mcp"}}}'

The result starts with YAML front matter that gives the status, revision, url, and anchors of the article. The Markdown follows. Pass section with one of the anchors to read only that heading.

With a workspace-bound key, leave out the workspace argument. With an organization-wide key, pass workspace to each tool that works in a workspace.

4. Know what the agent gets

On initialize, the server sends instructions, and most clients give them to the model. They tell the agent to:

You don't need to repeat these rules. Add your own only for team rules, for example:

Create new pages as drafts unless the user asks you to publish.
Report the workspace, slug, and url after each write.

Each tool also has a title and the 4 MCP annotation hints: readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. A client can use them to ask you before a destructive call.

5. Read articles as MCP resources

ContextOwl also serves each article as a resource. Resource URIs use this shape:

contextowl://{workspace}/{slug}.md

Example:

contextowl://platform/mcp.md

The resource holds the same front matter and Markdown as get_article, without a length limit. A workspace-bound key can use - as the workspace, for example contextowl://-/mcp.md. Resources need article.read and follow the same organization, workspace, and member-scope rules as tools. Permissions and Tools lists the other resources.

Troubleshooting

A tool error starts with an error code, the same code that the REST API returns for the same failure.

Symptom Meaning Fix
HTTP 401 The key is missing, not valid, revoked, or expired Create a new key in Admin > Settings > API and update the client secret
tool 'NAME' not found The key can't use the tool, so the server hides it Call whoami to see the blocked permissions. Then add the permission, or use a key whose owner has the right role and plan
permission_denied The call needs another permission, such as article.publish for a status change. The message names it Add the permission to the key
upgrade_required The call needs a paid feature, such as internal visibility or one more workspace Upgrade the plan, or use the feature during the free trial
invalid_request: a workspace is required for this org-wide key The key isn't bound to one workspace, and the tool works in a workspace Pass the workspace id. list_workspaces lists the ids
invalid_request: this key is scoped to a single workspace A workspace-bound key named another workspace Leave out workspace, or pass the bound workspace
not_found: no such workspace The workspace isn't in the organization or the member scope of the key Check the workspace id and the member assignments
stale_revision The article changed after the revision that you sent Read the article again and redo the change
encrypted Agents can't read or change the text of an end-to-end encrypted page Read or edit it in the browser. Agents can still change its title, section, status, and visibility
two_factor_required The key owner is an admin, the organization requires two-factor auth, and the owner hasn't turned it on Turn on two-factor auth in Account settings. Until then, the workspace permissions of the key stay blocked, and its other permissions keep working
pendingReview in the result The organization reviews agent changes, so the change waits in a proposal Give the reviewUrl to the user. Don't send the write again
review_required The organization reviews agent changes, and the write has no proposal form, such as delete_workspace Ask an admin to make the change, or to approve the key as a publishing key