Agents (MCP)
CodeKasten has a Model Context Protocol server. Connect Claude Code, Claude Desktop or any MCP client to it and the agent can work in a workspace: read and change records, build record types and workflows, commit, and ask for a merge.
http://<your-host>:8811/mcp
Authorization: Bearer sk_…For Claude Code:
bash
claude mcp add --transport http codekasten http://127.0.0.1:8811/mcp \
--header "Authorization: Bearer sk_…"The agent is a person
An agent uses an API key, so it is the person who made the key, on that key's branch, with that person's role in the workspace and on that branch. It does no more than they may: a reader's agent reads, and a key for a branch its person no longer reads stops working.
An agent never writes to a protected branch. The intended way of working is the one a careful colleague would follow:
- make a branch for the agent and a key on it,
- let the agent work and commit,
- the agent calls request_merge, which asks the people who may merge, in their Inbox,
- a person looks at the commits and merges.
When a tool refuses something, the refusal comes back as the tool's result, worded for the model, so the agent can explain or try another way.
Tools
Looking around
| Tool | Does |
|---|---|
workspace_info | Who the agent is acting as, the workspace, the branch, whether it is protected, the person's role in the workspace and on the branch, and the members (for a guest: the people on that branch) |
list_entity_types, describe_entity_type | The record types, and a type's fields and relations |
search_records, get_record, get_relations | Find and read records |
query_records | Count and add up the records of a type, over everything or grouped: the question a report asks |
Records
| Tool | Does |
|---|---|
create_record, update_record, delete_record | By the field names the type defines. A select takes a choice's name or id |
link_records, unlink_records | Join two records by a relation |
get_description, set_description | The text on a record's page, as Markdown |
get_document_text, set_document_text | A document's body, as Markdown |
draw_shapes | Adds shapes (rectangles, ellipses, lines, text, paths) to a Drawing |
Types with Give agents tools for this type switched on also get their own create_<type> and search_<type> tools, with the type's fields as parameters.
Markdown covers paragraphs, headings, lists (nested, and check lists), quotes, code blocks, dividers, bold, italic, underline, strikethrough, code and @username mentions. What the editor has beyond that is written so that a text read and written back keeps it:
| In the editor | In the Markdown |
|---|---|
| A link to a record | [Website relaunch](record:<id>). The name is for the reader; the id is the link |
| A tag | [#urgent](tag:<id>) |
| Alignment | A paragraph, heading or quote ending in {align=center} (also right, justify) |
| A callout | A quote that opens with a line [!NOTE], [!TIP], [!IMPORTANT], [!WARNING] or [!CAUTION], or [!callout 🚀] for any other icon |
| A toggle | <details> (or <details open>), a line <summary>title</summary>, the content, </details> |
Callouts and toggles can hold lists, code and each other. A link to a record that is not on the branch is refused, and nothing is written.
People
| Tool | Does |
|---|---|
send_to_inbox | Tells members something in their Inbox |
list_my_inbox | Reads the Inbox of the agent's person |
Earlier sessions
| Tool | Does |
|---|---|
search_sessions, get_session | Look back through the coding sessions of the agent's person |
set_session_summary | Writes down what the session at work did |
Branches
| Tool | Does |
|---|---|
list_branches, branch_status | The branches its person reads, and what has changed since the last commit |
commit | Commits the branch |
merge_branches | Merges a branch its person reads into one that is not protected and that they may merge into |
request_merge | Asks the people who may merge |
Packages
list_packages and install_package.
Building record types
In an app workspace: create_entity_type (with fields at once), update_entity_type, add_field, update_field, remove_field, add_relation. They write what the Entity Builder writes, so a type an agent made opens in the builder.
Not offered: deleting a type or a relation, enum fields, and view sections of a type's own.
Building workflows
In a workflow workspace: list_workflow_functions, list_workflows, get_workflow, save_workflow. Wherever a workflow is installed: create_workflow_instance, list_workflow_instances, set_workflow_instance_enabled, run_workflow_instance, list_workflow_runs.
save_workflow takes a whole workflow (steps and edges), checks it by the same rules as Validate — reporting everything wrong at once — and compiles it. Connector steps, Execute Workflow, For Each and On Signal are refused for now.
What an agent cannot touch
Definitions outside the builder tools, settings, people, credentials, and what the engine keeps for itself.
Not there yet
OAuth (so the server cannot be added as a claude.ai connector yet), and tools for connector accounts.