Corpole documentation

Overview

Corpole is a requirements authority for AI-assisted software delivery. Teams capture objectives, requirements and constraints per project and govern their state; coding agents read the binding ones through a remote MCP server at https://corpole.com/api/mcp (Streamable HTTP) or a REST endpoint.

Concepts

Tenants and projects

Records live inside a project, projects inside a tenant. Every agent connection is limited to exactly one project. People join a tenant by invitation (Members → Invite someone) with one of four roles: owner, admin, member (edit records) or viewer (read only).

Record types

  • Objective OBJ-… (Intent)
  • Business Requirement BR-… (Requirements)
  • Stakeholder Requirement SR-… (Requirements)
  • Functional Requirement FR-… (Requirements)
  • Non-functional Requirement NFR-… (Requirements)
  • Technical Requirement TR-… (Requirements)
  • Project Requirement PR-… (Requirements)
  • Product Constraint PC-… (Constraints)
  • Business Constraint BC-… (Constraints)
  • Project Constraint PJC-… (Constraints)

Authority states

DraftWorking content that can still change freely.
ApprovedReviewed and accepted, but not yet the binding coding authority.
AuthorityCanonical instruction for AI-assisted implementation and human delivery.
RetiredHistorical content that must not drive new implementation.

Agents treat only Authority records as binding, never implement Retired ones and surface conflicts instead of choosing a winner.

Connect your AI tool

claude.ai and Claude Desktop

  1. Open Settings → Connectors → Add custom connector.
  2. Enter the URL https://corpole.com/api/mcp.
  3. Sign in to Corpole, choose the project and the permissions, and approve.

Claude Code plugin (recommended for Claude Code)

Adds the MCP tools, loads the Authority records at session start, and provides /corpole:context, /corpole:check and /corpole:init.

# 1. Create a project token: Corpole → project → AI Context → Generate token
export CORPOLE_TOKEN="crp_..."

# 2. In Claude Code
/plugin marketplace add Global-Agent-Factory/compedans-platform
/plugin install corpole@corpole

Claude Code, MCP only (OAuth sign-in)

claude mcp add --transport http corpole https://corpole.com/api/mcp
# then run /mcp, select corpole and choose Authenticate

Cursor, VS Code and other MCP clients

Add a remote (Streamable HTTP) server. Clients that support OAuth need only the URL; otherwise send a project token:

{
  "mcpServers": {
    "corpole": {
      "url": "https://corpole.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${CORPOLE_TOKEN}"
      }
    }
  }
}

REST and CLAUDE.md fallback

curl -H "Authorization: Bearer $CORPOLE_TOKEN" \
  "https://corpole.com/api/context?format=markdown"      # Authority records as Markdown
# JSON: omit format; all states: add mode=all

MCP tools

ToolAccessInputWhat it does
get_authority_contextReadtypes?, include_approved?Every Authority record of the project, grouped by type, with its acceptance criteria and their status, plus the agent instruction. Agents call it before writing or changing code.
search_requirementsReadquery, statuses?, types?Keyword search in title, code, statement and acceptance criteria. Defaults to Authority and Approved; Retired only on request.
get_recordReadcodeFull detail of one record: state, statement, rationale, each acceptance criterion with its code (e.g. FR-001/AC2), status and evidence, satisfaction, owner, source.
get_work_contextReadcodeThe context slice for one record or work item: acceptance criteria, the why-chain, realizing technical requirements, dependencies, constraints (linked and project-wide), open conflicts, replacements; for work items also the theme → epic → story/task → subtask chain, the work package and the implemented requirements (inherited from the nearest parent when an item has none).
list_work_itemsReadtype?, status?, query?Themes, epics, work packages, stories, tasks and subtasks with status, parent and the requirements they implement, e.g. the stories that are Ready. Stories are work that involves development; tasks are work without development.
update_work_statusWrite (propose permission)code, status, note?Moves a work item along its workflow: stories to In progress or Code review, tasks to In progress or Check, subtasks to Doing or Done. Approval, verification, check and Done are decided by people.
get_standardsReadcategory?Standards that apply to the project (tenant-wide and project; waived ones listed separately), with must/should enforcement.
search_knowledgeReadquery, type?Search decisions, questions, glossary terms, standards and references.
ask_questionWrite (propose permission)title, details?, assumption?, about_code?Records an open question with the working assumption, linked to what it concerns.
propose_decisionWrite (propose permission)title, context_and_decision, consequences?, governs_codes?Proposes an ADR; binding only once a person accepts it.
propose_relationWrite (propose permission)source_code, relation, target_code, reasonProposes a typed relation (refines, realizes, constrains, replaces, conflicts_with, relates_to). A person confirms it on the record page.
get_repo_kitReadinclude_github?Files that make a code repository treat Corpole as its requirements authority (CLAUDE.md section, team plugin settings, PR template, GitHub check).
propose_recordWrite (propose permission)type, title, statement, rationale?, acceptance_criteria? (list)Adds a Draft marked as an AI proposal, with its acceptance criteria as separate items. Not binding until a person approves it. Limited to 30 per project per hour.
report_acceptance_resultWrite (propose permission)record_code, criterion, result (met | not_met), evidenceRecords whether one acceptance criterion is met, with evidence. People see which agent reported it and can override it; the record's satisfaction updates.

Read tools carry readOnlyHint: true; propose_record and report_acceptance_result carry readOnlyHint: false and destructiveHint: false (they only add Drafts or record verification results). The server also sends instructions: fetch Authority context before coding, ignore Retired records, surface conflicts, cite record codes.

Permissions

readRead requirementsRead the project's objectives, requirements and constraints.
proposePropose requirementsCreate new records as Draft proposals and report acceptance criterion results with evidence. A person reviews both.

OAuth connections get their permissions on the consent screen (propose requires a non-viewer role). Project tokens get read, plus propose if the box is ticked when the token is generated.

OAuth details

Protected resource metadata/.well-known/oauth-protected-resource/api/mcp (RFC 9728)
Authorization server metadata/.well-known/oauth-authorization-server (RFC 8414)
Client registrationDynamic (POST /api/oauth/register, RFC 7591) or Client ID Metadata Documents (https client_id)
FlowAuthorization code with PKCE S256 (required); public clients
Redirect URIshttps, or http on a loopback address (any port)
TokensAccess 1 hour, refresh 30 days with rotation; reuse of a code or refresh token revokes the connection
RevocationPOST /api/oauth/revoke (RFC 7009) or Disconnect on the project's AI Context page
Scopesread, propose

Repository kit and GitHub check

Claude Code has no built-in precedence between sources; it follows its instructions. The repository kit sets them: a CLAUDE.md section that ranks Corpole Authority records above documents in the repository, .claude/settings.json that offers the plugin to the team, and optionally a PR template and a GitHub Action. Run /corpole:init in the repository or copy the files from AI Context → Repository kit.

The GitHub check fails a pull request that cites no record code (unless it has the label no-requirement), cites an unknown code or a Retired record, and warns on Draft or Approved ones. It needs the repository secret CORPOLE_TOKEN.

Security and data

  • Every connection is limited to one project; read-only unless the propose permission is granted.
  • Tokens are stored only as SHA-256 hashes. Project tokens can be rotated or revoked; OAuth connections can be disconnected at any time.
  • Agents cannot change or delete records. Proposals are Drafts that a person must review.
  • Every agent read and proposal is recorded in the project's activity log (agent, time, action, record codes).
  • Data is stored in PostgreSQL in the EU (Frankfurt); the application runs in Frankfurt.
  • Optional AI assistance in the project setup wizard sends the project brief and uploaded documents to Anthropic's API to suggest or extract records; nothing is saved without the user's confirmation.

See the privacy policy and terms.

Troubleshooting

401 invalid_tokenToken missing, revoked or rotated, or the project is archived. Generate a new token or reconnect.
Claude Code shows corpole as failedCheck that CORPOLE_TOKEN is set in the environment Claude Code starts from, then restart the session.
propose_record refusedThe connection is read-only. Reconnect with the propose permission or generate a token with it.
Agent ignores requirementsRun /corpole:init so the repository's CLAUDE.md states the precedence, and check Agent activity to see whether it read them.