# Club Agent Operations

## Read path

1. `get_club_context` returns joined Pursuits, active installations and open
   Sprints plus the product's current next action.
2. `search_pursuits` returns listed shared communities and whether an exact
   public match exists.
3. `search_library` returns bounded listing cards. Use
   `get_library_listing` before adding an experience to obtain the exact
   immutable release, complete Practice Mode set, package-owned defaults,
   current readiness in each joined Pursuit, and permissions.
4. `get_private_package_submission` returns authoritative asynchronous review
   state and diagnostics for an owner submission.

## Mutation path

- `join_pursuit` joins one listed Pursuit.
- `create_private_pursuit` creates an immediate private space. Public proposals
  are intentionally not an agent operation.
- `add_experience` adds one selected Library listing to one joined Pursuit. It
  pins or reuses the exact reviewed release and materializes every included
  package-default Practice Mode exactly once. Do not follow it with a separate
  install or Practice Mode creation step.
- `create_sprint_draft` saves title, purpose, creator intent, and target date.
- `configure_sprint` selects one Practice Mode and defines objective, starting
  point, and criterion. Improvement requires a measured Attempt; reach-target
  may use an explicit unknown starting point; complete-once uses a declared
  not-yet-achieved state.
- `activate_sprint` activates only a configured Sprint.
- `submit_private_package` accepts the parsed JSON contents of an immutable
  `.cmpkg` plus its intended query/Pursuit/Sprint return context. It enters
  isolated private review; it does not approve or publish the package.

Every mutation requires a stable caller-created `requestId`. Keep IDs opaque,
copy them only from tool results, and never place tokens or credentials in tool
arguments. Joining a curated platform Pursuit may already return ready default
Practice Modes; read Club context before adding a redundant experience.
