Aurochs for agents

Getting started if you’re an AI

Aurochs is a workspace of pages, typed tables and files that people edit in a UI and you edit over MCP — the same data, live, both directions. There is one endpoint and you do not need an API key to reach it.

Connect

MCP Endpoint · Live
https://aurochs.oxen.dev/api/mcp

Point any MCP client at that URL. There is no key to create and no header to set — the endpoint answers an unauthenticated call with a 401 naming its OAuth server, your client registers itself, and the person approves the connection in their browser. In Claude Code that is one command:

claude mcp add --transport http aurochs https://aurochs.oxen.dev/api/mcp

Other clients, same URL:

1
Open Claude.ai connector settings and choose Add custom connector.
2
Paste this URL:
https://aurochs.oxen.dev/api/mcp
3
Click Connect, sign in, and approve the access it asks for.
No API key or header required. An assistant acts as you, so one connection reaches every workspace you belong to — never beyond your role in each. You choose what it can do when you approve it, and can disconnect it at any time.
Add to Claude.ai

Which one are you?

Three ways in, and picking the wrong one is the most common way an integration fails. What separates them is not the protocol — it is how much of the person’s account you reach.

An assistant
An AI acting as a person — Claude, Cursor, your own agent.
MCP + OAuth, no key.Reaches: Every workspace they belong to.
An integration
A tool someone connects to one workspace.
OAuth 2.1 + PKCE, then REST.Reaches: The one workspace they picked.
Developer docs
A script
Something the workspace owner runs themselves.
An ak_ API key, then REST.Reaches: The workspace the key belongs to.
API reference

If you are an assistant, stop here — the section above is your whole setup. An assistant is deliberately not bound to one workspace, which is a shape the REST API cannot express, so MCP is your surface and a REST call with an unbound token is refused rather than silently narrowed.

What you get once connected

30 tools. Names are stable; call whoami first to see which workspaces you can reach and what you may do in each.

Orient
whoami · search · list_pages · list_databases · get_page · get_database · get_recent_activity
Write documents
create_page · update_page · edit_page · delete_node
Typed data
create_database · update_database · query · insert_records · update_records
Views
create_view · update_view · delete_view
Files
presign_file · add_file · complete_file
People
list_members · list_users · create_user · update_user · delete_user
Automation
list_triggers · create_trigger · delete_trigger

Two of these are easy to confuse. search finds a thing by what it says — full-text over titles and document bodies. queryfilters typed data by its property values. Row properties are deliberately not full-text indexed, so “every task marked Done” is a query, not a search.

What you may do

Your permission is the weaker of the person’s role in a workspace and the scope they approved. An owner who grants read gives you read; a write grant in a workspace where they are only a viewer still cannot write. Nothing you send can widen this — there is no parameter for it.

Read it off whoamirather than discovering it as a 403, and re-read it per workspace: an assistant’s reach differs from one to the next.
  • Everything you write is attributed and shows up in the workspace activity feed. Edits appear live in any editor the person has open — they will watch you type.
  • Writes are validated, not coerced. Naming a field that doesn’t exist is an error listing the valid ones, not a silent no-op — so a misspelling costs you one retry rather than a wrong answer.
  • The person can disconnect you at any time from their Connect screen, and access tokens last 15 minutes so it takes effect almost immediately.

If you have no workspace yet

OAuth connects you as a person, so there has to be a person with an account. If you are setting this up on someone’s behalf and the connection prompt has nowhere to land, that is what is missing — ask them to sign in at aurochs.oxen.dev/login once, then run the connect command again. There is no agent-only signup, deliberately: an assistant’s whole permission model is derived from a human’s.

Reference