Docs menuClaude Code & Codex

Docs / Claude Code & Codex

Claude Code & Codex

How Flanner connects to your coding agent, and the MCP tools it exposes.

What init registers, and where

Three agents, three different files. flanner init registers the server in Claude Desktop's config, writes a project-scoped .mcp.json that Claude Code reads, and adds managed blocks to CLAUDE.md and AGENTS.md. Codex reads AGENTS.md but registers MCP servers in its own file, which flanner does not edit. Add this to ~/.codex/config.toml:

[mcp_servers.flanner] command = "flanner-mcp"

flanner status shows one row per agent, each checked where that agent actually looks. Narrow what init registers with --setup codex, or turn it off with --skip-claude.

flanner claude-info # Check integration status

Manual registration

If needed, you can register, update or remove it by hand. flanner setup re-runs everything init would have done.

flanner register
flanner register --force # Force update
flanner unregister # Unregister

Guidance and the guard hook

flanner init sets up two things so your agent saves plans through Flanner without being reminded. Both work with Claude Code and Codex.

Guidance the agent reads

flanner init writes a managed block into CLAUDE.md and AGENTS.md, which Claude Code and Codex read every session, and installs a flanner-plan skill. Together they tell the agent to save plans through the MCP tools.

A guard hook as backstop

A guard-write PreToolUse hook denies any raw write into the plan directory and points the agent back to create_plan_file_tool. It fails open and never blocks writes elsewhere.

MCP tools the agent calls

create_plan_file_toolCreate a plan file (adds the YAML header, records v1)
update_plan_file_toolRevise a plan and record a new version
get_plan_file_toolRead a plan file
list_plan_files_toolList plan files in a project
get_plan_history_toolGet the full version history of a plan
get_plan_freshness_toolCheck a plan's freshness status and evidence before trusting it
link_plan_to_linear_toolLink a plan to a Linear issue
link_plan_to_jira_toolLink a plan to a Jira issue
get_plan_configConfirm the plan directory and header format
get_plan_assurance_toolWhether a plan is safe to implement, and exactly what it is if not
initialize_project_toolAdopt a repository so its plan documents are tracked
create_project_toolCreate a project with git integration
list_projectsEvery project and its configuration
configure_project_toolChange a project's settings
delete_project_toolDelete a project and its plan files from the database
propose_plan_revision_toolOffer a plan version for review
record_plan_review_decision_toolRecord a decision against a proposal
get_plan_workflow_status_toolA plan's open proposals and its accepted baseline
configure_jira_toolSet up the Jira connection
get_jira_config_toolShow the Jira connection
get_jira_links_toolWhich Jira issues one plan is linked to
list_jira_links_toolEvery Jira link in a project
unlink_jira_issue_toolRemove a Jira link
configure_linear_toolSet up the Linear connection
get_linear_config_toolShow the Linear connection
get_linear_links_toolWhich Linear issues one plan is linked to
list_linear_links_toolEvery Linear link in a project
unlink_linear_issue_toolRemove a Linear link
memory_rememberSave one durable fact for later sessions
memory_recallSearch memory, with the reason each result matched
memory_getRead one memory in full
memory_listBrowse memories in a project
memory_supersedeCorrect a memory by replacing it
memory_forgetStop recalling a memory
memory_considerPropose a memory for the person to approve
memory_pendingSuggestions still waiting on a decision
memory_decideApprove or reject a suggestion
memory_policyWhat this project will let be remembered
memory_attachAttach a file to a memory as evidence
memory_detachRemove an attachment
memory_shareShare one memory with the team, when asked to
memory_withdrawAsk peers to stop recalling a shared memory