For builders · MCP server

Pair Claude Code or Codex
with any goal.

goals. exposes a Model Context Protocol server so Claude Code, Cowork, Codex, or another MCP client can join one of your goals as an AI teammate. Once paired, it reads the goal's open todos, checklist items, repo path, and chat history — then writes results back as the agent. You get an APNs push when the work lands.

What pairing does

Pairing connects one coding-agent session to one (goal, agent) pair. The session can read what the agent can read and write what the agent can write — nothing else in your account. Pairing is session-scoped: idle sessions tear themselves down so you don't accumulate stale connections.

Reads the goal's full state

Open todos, completed todos, sub-todos, the goal's chat history, the team's shared memories, and the effective repo path for that session. The coding agent starts each turn with real context, not a cold prompt.

Acts as the agent

When the paired client calls append_message, complete_sub_todo, or complete_todo, the change shows up in the goal chat or todo list as the agent — same avatar, same name as if you tapped a button in the app.

Pushes when work lands

An APNs push fires the moment the paired session posts a reply or marks a todo done, so you find out from your phone instead of refreshing a tab.

Per-goal isolation

A single client window only ever speaks for one agent on one goal at a time. Want a second agent on a second goal? Open a second Claude Code, Cowork, or Codex session and pair it.

Two ways to set it up

Pick whichever matches how you already work. The OAuth path is the smoother UX — recommended for most people. The PAT path stays available for headless / server / scripted setups where the OAuth dance isn't practical.

OAuth 2.1 connector

Recommended · works in claude.ai, Claude Code, and Codex

  1. Open claude.ai/settings/connectors and add https://trygoals.app/mcp.
  2. For Codex, run codex mcp add goals-app --url https://trygoals.app/functions/v1/mcp, then codex mcp login goals-app. For codex exec, set default_tools_approval_mode = "approve" under [mcp_servers.goals-app] in ~/.codex/config.toml.
  3. Confirm the consent screen. The client dynamically registers as an OAuth client (DCR); no manual app registration.
  4. In goals., open the goal you want to pair → Pair Claude. The app shows a six-digit code (5-min TTL).
  5. Back in your coding client, run the pair_session tool with that code. If the client knows its local checkout root, it can pass that as repo_path; otherwise goals falls back to the goal's default path.

Personal access token

Headless / scripted setups

  1. In goals., go to Settings → Agents → Add device. The app mints a token and shows you the plaintext exactly once (it's hashed with SHA-256 at rest).
  2. Copy the generated Claude/Cowork or Codex command and paste it into your terminal.
  3. From any session pointed at that MCP config, call pair_session with a six-digit code from the app's pairing sheet — same as the OAuth path. Each session can keep its own local repo path.

What a coding agent can do once paired

The MCP server exposes tools grouped roughly by what an agent on a real team would need. The full list is discoverable from the MCP tools/list endpoint; the highlights:

Read the team's state

get_paired_context · get_goal · list_goals — fetch the live goal, current open todos, recent chat, and shared memories.

Talk in the chat

append_message — post a reply (markdown supported) into the goal's chat thread as the agent.

Mark work done

complete_sub_todo · complete_todo — strike off checklist items as partial work lands, then close the parent todo when it is truly done.

Plan + reshape work

add_sub_todo · schedule_todo · edit_todo · edit_goal — break work down, place it on the calendar, or reshape the goal itself.

Reassign across the team

assign_todo — hand a todo to a teammate (human or another agent). Validated by a Postgres trigger so the assignee actually belongs to the goal.

Build long-term memory

add_memory — propose a fact about the user / project that future Keen and agent prompts will see. The user approves it from a card before it lands.

A typical session

What it looks like when you assign a todo to a paired coding agent on a "Ship the goals-app website refresh" goal.

You

@CodeBot can you tackle the new "Solo on Sunday. A team by Tuesday." section on the marketing site? Three cards, mirror the Four-signals layout. Repo's already on the goal.

CodeBot · paired coding agent

On it. I'll branch off main, add the section between #how and .features-section, ship a 3-up grid that matches .features, and push to a new branch for review.

complete_sub_todo complete_todo append_message add_sub_todo

CodeBot · paired coding agent

Pushed 8756980 to claude/website-collab-section-GIZtt. Section + matching FAQ + JSON-LD all in. Marked the todo done. Want me to keep going on Tier 2 or pause for review?

Included with your subscription.

The MCP coding-agent bridge ships with every goals. account. No separate plan, no extra fee. You bring your own Claude Code, Cowork, or Codex setup; we do the wiring. Want the longer story behind why we built this and how it's wired? Read "We built a Claude Code bridge into our todo app."

Download on the App Store