@atollhq/skill-claude 0.4.37 → 0.4.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/SKILL.md +233 -2
- package/skill/references/api-endpoints.md +204 -28
- package/skill/references/api-fields.md +421 -13
- package/skill/references/artifact-workflow.md +37 -0
- package/skill/references/cli-operations.md +32 -2
- package/skill/references/execution-and-attention.md +54 -1
- package/skill/references/integrations-and-api.md +71 -11
- package/skill/references/local-runner.md +40 -2
- package/skill/references/platform-rules.md +3 -2
- package/skill/references/strategy-and-heartbeat.md +9 -0
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: atoll
|
|
3
|
-
description: Use Atoll for project, issue, goal, KPI, initiative, milestone, artifact, PRD, implementation plan, comment, dependency, runner, and workflow operations. Activate for Atoll planning, execution, project-management, local-runner, or integration requests.
|
|
3
|
+
description: Use Atoll for project, issue, goal, KPI, initiative, milestone, artifact, external reference, PRD, implementation plan, comment, dependency, runner, and workflow operations. Activate for Atoll planning, execution, project-management, local-runner, or integration requests.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Atoll
|
|
@@ -20,6 +20,9 @@ requested `max_bytes` cannot fit the mandatory actionable record and compact
|
|
|
20
20
|
envelope, REST returns `413 heartbeat_budget_too_small` without advancing a page
|
|
21
21
|
cursor or terminal receipt; retry with a larger budget or the 16 KiB default.
|
|
22
22
|
Dependency-chain cursors are signed and revision-bound; graph drift returns `409 Stale dependency chain cursor`, so restart without the cursor.
|
|
23
|
+
Private heartbeat also carries durable execution attention. Handle resolved
|
|
24
|
+
answers before open requests and acknowledge them with the exact versions; the
|
|
25
|
+
acknowledgement never resumes an execution.
|
|
23
26
|
|
|
24
27
|
## Route to the relevant reference
|
|
25
28
|
|
|
@@ -35,14 +38,44 @@ Read only the references required for the current task:
|
|
|
35
38
|
- Installing, diagnosing, configuring, or operating the headless local runner,
|
|
36
39
|
repository bindings, loopback UI, leases, or recovery:
|
|
37
40
|
[local-runner.md](references/local-runner.md)
|
|
41
|
+
- Configure GitHub verification with `resume` only when the exact PR, commit,
|
|
42
|
+
runner host, and preserved Codex thread can be bound. The mode is disabled by
|
|
43
|
+
default and fails closed when the binding or verification event is uncertain:
|
|
44
|
+
[api-fields.md](references/api-fields.md#external-operational-delivery-context)
|
|
38
45
|
- Strategy, KPI pace, initiatives, heartbeat signals, autonomous prioritization,
|
|
39
46
|
and common strategy workflows:
|
|
40
47
|
[strategy-and-heartbeat.md](references/strategy-and-heartbeat.md)
|
|
41
48
|
- Agent executions, evidence, human-attention requests, resolution, and
|
|
42
49
|
version-fenced lifecycle transitions:
|
|
43
50
|
[execution-and-attention.md](references/execution-and-attention.md)
|
|
44
|
-
- Remote MCP
|
|
51
|
+
- Remote MCP exposes typed execution and requester-attention tools in both
|
|
52
|
+
profiles. Use the lifecycle guidance in the execution reference; human
|
|
53
|
+
resolution and runner/harness control remain outside those MCP tools.
|
|
54
|
+
- The public MCP profile also exposes typed issue, dependency-chain, label,
|
|
55
|
+
subtask, strategy audit, activity, notification, project, board-column, goal,
|
|
56
|
+
and KPI tools. Use the existing API authorization and exact field contracts;
|
|
57
|
+
`atoll_delete_project` needs `confirmation: "DELETE"` and owner/admin access.
|
|
58
|
+
It can still fail while linked Artifacts or active executions block deletion.
|
|
59
|
+
Archive and unarchive emit the normal `issue.updated` webhook event. When a
|
|
60
|
+
core write returns `core_write_uncertain`, read the resource and reconcile
|
|
61
|
+
before replay; the server does not retry automatically. Goal and KPI tools
|
|
62
|
+
accept exact human-readable goal titles and KPI names as documented in the
|
|
63
|
+
API references.
|
|
64
|
+
- Automation-rule create, update, enable, disable, and delete can also return
|
|
65
|
+
`core_write_uncertain`. For a create, list rules in the same scope and get a
|
|
66
|
+
possible match by UUID. Set `project_id` to `"none"` for organization-wide
|
|
67
|
+
rules. For other writes, get the exact rule and compare its definition or
|
|
68
|
+
enabled state; for delete, check whether its UUID remains in the list.
|
|
69
|
+
Reconcile before retrying any uncertain rule write.
|
|
70
|
+
- Local runner lifecycle management associates leases with canonical executions,
|
|
71
|
+
uses a durable private outbox, and resumes resolved human attention only with
|
|
72
|
+
the exact retained thread and closed IDs/outcome; notification and GitHub
|
|
73
|
+
resume contracts remain separate.
|
|
74
|
+
- Remote MCP setup, GitHub repository and External Reference tools, AI-assisted setup, KPI HTTP sync, or advanced REST access:
|
|
45
75
|
[integrations-and-api.md](references/integrations-and-api.md)
|
|
76
|
+
- Completed manual GitHub workflow dispatches require one current linked PR and
|
|
77
|
+
canonical same-repository head and branch proof. Nonterminal notifications
|
|
78
|
+
create no evidence; manual dispatch does not trigger generic CI automation.
|
|
46
79
|
- GitHub pull-request delivery context, required checks, and exact-head evidence:
|
|
47
80
|
[api-fields.md](references/api-fields.md#external-operational-delivery-context)
|
|
48
81
|
A `plan_restricted` required-check error is actionable plan-unavailable
|
|
@@ -71,6 +104,11 @@ rules, event conditions, validation, safe
|
|
|
71
104
|
disabling, repair, and example-only CI dry runs, read [Automation Rule Fields](references/api-fields.md#automation-rule-fields).
|
|
72
105
|
Use `atoll automation` for rule management, previews, and run history; see
|
|
73
106
|
[CLI operations](references/cli-operations.md#automation-rules).
|
|
107
|
+
Both full/private and public MCP profiles also expose typed list, get, create,
|
|
108
|
+
update, enable, disable, test, run-history, and delete tools. MCP creation
|
|
109
|
+
requires explicit scope and always leaves the rule disabled; test is a dry run.
|
|
110
|
+
Use the same separate disable, repair, test, and enable sequence for invalid
|
|
111
|
+
rules. Atoll enforces owner/admin access for rule writes and history.
|
|
74
112
|
REST rule lists accept `?project_id=<UUID>` for exact project rules or
|
|
75
113
|
`?project_id=none` for organization-wide rules only. Omission lists all rules
|
|
76
114
|
in the organization. See [list filter access and validation](references/api-endpoints.md#automation-rules).
|
|
@@ -159,6 +197,15 @@ guessing. Match the visible destination label and verify both the stored status
|
|
|
159
197
|
key and visible label after the move. Never treat a key such as
|
|
160
198
|
`ready_to_build` as universal.
|
|
161
199
|
|
|
200
|
+
### Discover collaborators and assignees
|
|
201
|
+
|
|
202
|
+
Use `atoll member list` or the typed MCP tool `atoll_list_members` to find
|
|
203
|
+
authorized human and agent collaborators. Filter by project, member type, and
|
|
204
|
+
display name. Use the returned stable member ID in issue `assignee_id` or
|
|
205
|
+
`assignee_ids` writes. This directory returns a compact projection and does not
|
|
206
|
+
include email or auth identifiers. `atoll_list_agent_profiles` selects the
|
|
207
|
+
caller identity; it is not the organization member directory.
|
|
208
|
+
|
|
162
209
|
### Plan implementation-ready work
|
|
163
210
|
|
|
164
211
|
Store substantial PRDs and implementation plans in linked Artifacts. Read
|
|
@@ -193,3 +240,187 @@ explicit. Do not add project-specific workflow keys as universal instructions.
|
|
|
193
240
|
private paths, prompts, logs, or raw sensitive payloads.
|
|
194
241
|
- Publication, deployment, production mutation, destructive deletion, and
|
|
195
242
|
external communication require the authority applicable to the current task.
|
|
243
|
+
|
|
244
|
+
### MCP project events
|
|
245
|
+
|
|
246
|
+
Modern public OAuth MCP clients can monitor `issue.status_changed`, `attention.created`, and `execution.state_changed`. Each subscription requires an accessible project UUID; discover the live workflow before choosing status filters. Resolve `profile_ref` as for tools. ChatGPT manages callback verification, finite grants, refresh, and unsubscribe through `events/*` protocol methods. API-key/private/stdio clients use tools and Heartbeat. Payloads are compact immutable snapshots; fetch full current state with read tools. No replay is provided.
|
|
247
|
+
|
|
248
|
+
### Atoll Command Center MCP App
|
|
249
|
+
|
|
250
|
+
The public plugin offers an app-only global `atoll.open` entrypoint with empty
|
|
251
|
+
arguments. A supporting host opens a read-only Command Center for attention,
|
|
252
|
+
Heartbeat, executions, projects and issues. Select an authorized profile in the
|
|
253
|
+
app; selection is local to that app instance and every business read carries its
|
|
254
|
+
opaque `profile_ref`. Browsing does not write. The 110 model-facing business
|
|
255
|
+
tools and modern MCP Events remain available. Full/private and stdio omit the
|
|
256
|
+
UI entrypoint.
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
Explicit project/issue selection uses official model context in supporting hosts.
|
|
260
|
+
Selection/deselection/clear and profile changes update context. Navigation and
|
|
261
|
+
hydration never add or promote context. Authorization cleanup removes known
|
|
262
|
+
stale or inaccessible Atoll references and their owned summary, preserves other
|
|
263
|
+
valid selections and foreign content, and offers retry if removal fails.
|
|
264
|
+
A stale pending update is reconciled to the latest external host snapshot;
|
|
265
|
+
failed preservation warns and offers explicit retry without an update loop. `structuredContent.atoll` contains `source: "atoll"`, `version:
|
|
266
|
+
1`, opaque `profile_ref`, and compact project/issue `entities` with stable UUIDs,
|
|
267
|
+
display identity and already-loaded workflow labels. Read current details with
|
|
268
|
+
existing tools under that profile before acting. Saved labels are not authority.
|
|
269
|
+
Restoration loads identity first; detail reads are lazy and authorized. Unknown
|
|
270
|
+
or malformed Atoll context and foreign host content remain intact. Unsupported
|
|
271
|
+
hosts label selection local. No prompt, message, draft or Atoll write is sent.
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
OpenAI deep links use the same canonical app routes: `/`,
|
|
275
|
+
`/projects/<uuid>`, `/issues/<uuid>`, `/attention/<uuid>`,
|
|
276
|
+
`/executions/<uuid>`. Resolve with the explicitly selected authorized
|
|
277
|
+
`profile_ref`; a link is identity, not permission. Invalid shapes/UUIDs are
|
|
278
|
+
rejected before reads; unavailable entities never trigger a silent profile
|
|
279
|
+
search. Navigation does not add Model-App Context. Atoll issue/project web
|
|
280
|
+
surfaces show Open in ChatGPT only when the deployment has the explicit public
|
|
281
|
+
build-time `NEXT_PUBLIC_ATOLL_PLUGIN_ID`. Never guess this published ID or
|
|
282
|
+
confuse it with OAuth/marketplace configuration. Web URLs target global
|
|
283
|
+
`atoll.open` and encode the complete canonical path once. Keep normal Atoll
|
|
284
|
+
URLs for unsupported hosts (including Android). Local synthetic-ID tests do
|
|
285
|
+
not prove published-plugin setup or authenticated provider acceptance.
|
|
286
|
+
|
|
287
|
+
## Composer mentions (desktop)
|
|
288
|
+
|
|
289
|
+
In supported ChatGPT desktop Composer surfaces, use `@` to find authorized
|
|
290
|
+
issues, projects, human and agent members, goals, KPIs and initiatives. Search
|
|
291
|
+
uses currently authorized OAuth connection profiles, not a global or default
|
|
292
|
+
actor. Exact display names and authorized human issue identifiers such as
|
|
293
|
+
`AH-123` precede loose name matches. Empty queries return a bounded first page;
|
|
294
|
+
search does not download a full directory.
|
|
295
|
+
|
|
296
|
+
The app-only, read-only `search_mentions` extension accepts `{ "query": "text" }`
|
|
297
|
+
and returns `{ "items": [...] }` with standard MCP ResourceLinks. Results show
|
|
298
|
+
type, organization, profile and available project context. Identical entities
|
|
299
|
+
under different profiles keep separate links so the follow-up actor stays clear.
|
|
300
|
+
It is separate from the 110 ordinary business tools and `atoll.open`.
|
|
301
|
+
|
|
302
|
+
Resources use `atoll://profiles/<opaque-profile-ref>/<entity-kind>/<UUID>`, where
|
|
303
|
+
entity kind is `issues`, `projects`, `members`, `goals`, `kpis` or `initiatives`.
|
|
304
|
+
Reads validate the current grant and entity permission under that exact profile.
|
|
305
|
+
Malformed routes, revoked profiles and inaccessible records fail without trying
|
|
306
|
+
another actor. Resource text contains concise identity and current state,
|
|
307
|
+
including `profile_ref`; it excludes long descriptions, histories and secrets.
|
|
308
|
+
Fetch current details with the same profile before acting. Mention discovery and
|
|
309
|
+
resource reads do not write Atoll records or alter sidebar Model-App Context.
|
|
310
|
+
|
|
311
|
+
The full/private MCP profile omits this host-specific extension. Normal typed
|
|
312
|
+
list tools remain available in both profiles. Provider publication and signed-in
|
|
313
|
+
desktop `@` selection are separate acceptance steps; local protocol tests do not
|
|
314
|
+
prove that provider flow. No mobile workaround is included.
|
|
315
|
+
|
|
316
|
+
## Bounded collection search
|
|
317
|
+
|
|
318
|
+
Projects, goals, KPIs and initiatives accept `q` for case-insensitive literal
|
|
319
|
+
substring matching of the display name/title, `q_exact=true` for the complete
|
|
320
|
+
name, and `limit`/`offset` for server-side pagination. Defaults in bounded mode
|
|
321
|
+
are 25 results, maximum 100, and offset 0. Filtering and authorization precede
|
|
322
|
+
pagination; offsets beyond matching results return an empty page with the exact
|
|
323
|
+
total. KPI pages include current calculated values. Use `shape=envelope`
|
|
324
|
+
(or `response_shape=cli`) for `resource`, `items`, `total`, `limit`, `offset`,
|
|
325
|
+
`nextOffset`, `truncated` and `hint`. Supplying a search or pagination parameter
|
|
326
|
+
also selects bounded retrieval. Calls without these parameters retain their
|
|
327
|
+
legacy resource-key response and full-list behavior.
|
|
328
|
+
|
|
329
|
+
Members add `member_id=<UUID>` and `q_exact=true` in bounded directory mode.
|
|
330
|
+
Identity filtering uses the same collaborator visibility rules and safe fields
|
|
331
|
+
as name search; it does not grant access or return credentials or account email.
|
|
332
|
+
Members and initiatives also accept `scope=accessible_projects` for a bounded
|
|
333
|
+
union under the current actor. The server derives project IDs; callers cannot
|
|
334
|
+
supply ID arrays. Guests see only accessible project-linked initiatives and
|
|
335
|
+
eligible collaborators. Existing member/admin projectless initiative rights
|
|
336
|
+
remain. Empty project access gives guests an empty page. Unknown scope or scope
|
|
337
|
+
combined with an explicit project returns `400`. Explicit project scope remains
|
|
338
|
+
`project_id` for initiatives and `projectId` for members.
|
|
339
|
+
|
|
340
|
+
Full issue lists resolve authorized human identifiers such as `AH-123`,
|
|
341
|
+
`ATOLL-123`, `#123` or a number before loose title/description matching. They also
|
|
342
|
+
accept `q_exact=true` for the full title. The exact flag is rejected with `400`
|
|
343
|
+
for compact `view=board`/`view=list`; existing compact search stays unchanged.
|
|
344
|
+
The existing issue filters and actor/project authorization still apply.
|
|
345
|
+
|
|
346
|
+
CLI list commands for projects, goals, KPIs, initiatives and members use
|
|
347
|
+
`--search`, `--exact`, `--limit` and `--offset`; issue list uses `--q` with
|
|
348
|
+
`--exact`. Member list also supports `--member-id`. These filters are evaluated
|
|
349
|
+
by the API. Existing public/private MCP list tools expose `q`, `q_exact`,
|
|
350
|
+
`limit` and `offset`; `atoll_list_members` adds `member_id`. Member and initiative
|
|
351
|
+
lists expose `--accessible-projects` in the CLI and `scope=accessible_projects`
|
|
352
|
+
in MCP. The initiative flag suppresses a configured default project and cannot
|
|
353
|
+
combine with `--project` or `--org-wide`. Normal MCP goal/KPI/initiative calls
|
|
354
|
+
without query, exact, paging or scope options retain legacy full-list responses.
|
|
355
|
+
Composer search uses a constant number of bounded list calls per profile and
|
|
356
|
+
entity kind, independent of the number of accessible projects.
|
|
357
|
+
|
|
358
|
+
## Native interactive issue creation
|
|
359
|
+
|
|
360
|
+
Use plugin-only `atoll_create_issue_interactive` only when the user asks to choose
|
|
361
|
+
or confirm fields in native forms. Pass explicit `profile_ref`. Supporting
|
|
362
|
+
registered desktop hosts require protocol 2026-07-28 MRTR, standard form
|
|
363
|
+
elicitation and the OpenAI rich-form extension. Unsupported hosts use ordinary
|
|
364
|
+
`atoll_create_issue` with complete values. Cancel/decline/invalid/expired state
|
|
365
|
+
creates nothing. Final confirmation rechecks profile, project, live workflow,
|
|
366
|
+
milestone and searched assignees, then sends one canonical create. Do not retry
|
|
367
|
+
an uncertain outcome; reconcile the original issue first. Deterministic creation
|
|
368
|
+
keeps its existing required title and behavior. No mobile workaround or client
|
|
369
|
+
deployment secret is needed.
|
|
370
|
+
|
|
371
|
+
Milestone lists accept optional `q`, `q_exact`, `limit`, `offset` and envelope
|
|
372
|
+
shape under the existing project endpoint. They filter/page in the database and
|
|
373
|
+
preserve progress/status counts. Old absent-option REST/MCP calls stay unpaged;
|
|
374
|
+
CLI keeps its old request when no new options are supplied.
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
### Conversation Working Set
|
|
378
|
+
|
|
379
|
+
Open the app-only `atoll.working_set` thread entrypoint with `{}` in a supported
|
|
380
|
+
host. Search authorized issues/projects and add local pins. Add/remove is local;
|
|
381
|
+
explicit selection shares one active canonical Atoll reference through the
|
|
382
|
+
existing context controller. Active requires accepted shared context; unsupported
|
|
383
|
+
or failed sharing stays local. Removing a pin does not deselect shared context;
|
|
384
|
+
unpinned references retain explicit Deselect/Clear selection controls.
|
|
385
|
+
Status/priority/assignees refresh through existing reads; dependencies/activity
|
|
386
|
+
are lazy. In-panel **Open details** preserves same-instance pins. Profile changes
|
|
387
|
+
clear pins and fence old reads. Recreated panels rebuild from current authorized
|
|
388
|
+
context only; unshared pins are ephemeral. No thread ID, persistent record,
|
|
389
|
+
transcript request, automatic message or Atoll write is added. Native provider
|
|
390
|
+
acceptance remains separate from controlled-host evidence.
|
|
391
|
+
|
|
392
|
+
Artifact source provenance is available through web, REST, and private CLI.
|
|
393
|
+
Create/revise accepts `source_external_reference_link_id`; revise omission
|
|
394
|
+
inherits and null clears. Add `projection=source_provenance_v1` on Artifact
|
|
395
|
+
create/revise or single-revision GET to read an authorized immutable source.
|
|
396
|
+
Default REST and typed MCP Artifact output remain unchanged. See the Artifact
|
|
397
|
+
field reference for target authorization and unlink semantics.
|
|
398
|
+
|
|
399
|
+
## Vercel deployment context
|
|
400
|
+
|
|
401
|
+
Vercel deployment observations use `provider: "vercel"`, `object_type: "deployment"`,
|
|
402
|
+
and `provenance: "vercel_api"` in existing scoped External Reference reads.
|
|
403
|
+
Metadata contains only label, environment, state, optional exact revision, and
|
|
404
|
+
provider effective time. A complete authenticated repository/SHA tuple proves
|
|
405
|
+
identity. Later missing fields cannot erase that proof; contradictory known
|
|
406
|
+
identity is rejected. Partial observations are never combined to invent proof.
|
|
407
|
+
The mapped project always receives the reference. An issue receives it only
|
|
408
|
+
when exactly one unarchived issue in that project has the same numeric GitHub
|
|
409
|
+
repository ID and exact SHA. Preview/staging supersession is chronological;
|
|
410
|
+
production supersession follows an authenticated project production target and
|
|
411
|
+
supports rollback to an older build. Deployment evidence does not change issue
|
|
412
|
+
status, authorize release, or prove acceptance. Generic list/get/unlink work;
|
|
413
|
+
manual link remains GitHub-pull-request-only. Unlink does not suppress later
|
|
414
|
+
verified ingestion. See https://docs.atollhq.com/integrations/vercel.
|
|
415
|
+
|
|
416
|
+
## Compact Context discovery
|
|
417
|
+
|
|
418
|
+
Use `atoll context list --issue ATOLL-42 --json` or `--project project-slug`
|
|
419
|
+
before loading detail. Full/private MCP exposes `atoll_list_context` with exactly
|
|
420
|
+
one issue/project UUID. Inspect authority, freshness, current revision/SHA, and
|
|
421
|
+
safe summaries; follow each group cursor with the same target/limit and deduplicate
|
|
422
|
+
by item ID. Load only the needed existing Artifact, reference, or delivery detail.
|
|
423
|
+
See [Context fields](references/api-fields.md#compact-context-index).
|
|
424
|
+
The public index and delivery-detail tools remain unavailable pending AH-3067
|
|
425
|
+
and release of the public tool freeze. Existing public Artifact and reference
|
|
426
|
+
reads are unchanged. Evidence never implies a later delivery or acceptance gate.
|
|
@@ -277,7 +277,7 @@ Responses that create comments include `outcome.persistence` and `outcome.mentio
|
|
|
277
277
|
|
|
278
278
|
| Method | Endpoint | Description |
|
|
279
279
|
|--------|----------|-------------|
|
|
280
|
-
| GET | `/api/orgs/{id}/members` | List members.
|
|
280
|
+
| GET | `/api/orgs/{id}/members` | List members. Use `shape=envelope|cli` or `q`, `limit`, or `offset` for bounded, safe directory results; filters: `projectId`, `type=human|agent`, and case-insensitive display-name `q` |
|
|
281
281
|
| POST | `/api/orgs/{id}/members` | Invite human member (`{ email, role? }`) |
|
|
282
282
|
| POST | `/api/orgs/{id}/invitations/{invitationId}/resend` | Resend a pending invitation; cooldown returns 429 with `Retry-After` |
|
|
283
283
|
| PATCH | `/api/orgs/{id}/members/{memberId}` | Update member (`{ display_name?, role? }`) |
|
|
@@ -286,6 +286,13 @@ Responses that create comments include `outcome.persistence` and `outcome.mentio
|
|
|
286
286
|
|
|
287
287
|
Roles: `owner`, `admin`, `member`, `guest`.
|
|
288
288
|
|
|
289
|
+
The bounded directory uses the agent-safe envelope. Each item contains only
|
|
290
|
+
`id`, `display_name`, `type`, `role`, and `avatar_url`; email, auth IDs,
|
|
291
|
+
invitation state, credentials, and administrative metadata are excluded. The
|
|
292
|
+
default limit is 25 and the maximum is 100. Project-scoped results require
|
|
293
|
+
project access and follow the existing collaborator visibility rules. The
|
|
294
|
+
legacy response remains unchanged when no directory mode is requested.
|
|
295
|
+
|
|
289
296
|
Member `PATCH` and `DELETE` can return `409` when the actor's or target member's authorization changes before the atomic mutation commits. Refetch the member and current permissions before retrying, and retry only if the action remains authorized.
|
|
290
297
|
|
|
291
298
|
## Milestones
|
|
@@ -472,6 +479,7 @@ Returns findings only (not the full graph). Use it for a high-level review — o
|
|
|
472
479
|
| `GET` | `/api/orgs/{id}/attention/{attentionId}` | Read one safe attention detail projection |
|
|
473
480
|
| `POST` | `/api/orgs/{id}/attention/{attentionId}/resolve` | Resolve an open item for its eligible human target and leave the execution in `waiting`; a trusted harness performs any later resume |
|
|
474
481
|
| `POST` | `/api/orgs/{id}/attention/{attentionId}/cancel` | Cancel an item as its requesting agent and leave the execution in `waiting`; a trusted harness performs any later resume |
|
|
482
|
+
| `POST` | `/api/orgs/{id}/attention/{attentionId}/ack` | Acknowledge a resolved requester receipt without resuming the execution |
|
|
475
483
|
| `POST` | `/api/orgs/{id}/attention/{attentionId}/admin-cancel` | Cancel an item as an authorized human administrator and leave the execution in `waiting`; a trusted harness performs any later resume |
|
|
476
484
|
| `POST` | `/api/orgs/{id}/attention/{attentionId}/retarget` | Retarget an open item as an authorized human administrator |
|
|
477
485
|
|
|
@@ -559,6 +567,16 @@ concealed as `404`; public projections omit hashes, provenance, logs,
|
|
|
559
567
|
prompts, credentials, and paths. This API records state and does not start or
|
|
560
568
|
resume an underlying harness. There is no issue-specific execution route.
|
|
561
569
|
|
|
570
|
+
Both full/private and public plugin MCP profiles expose typed tools for these
|
|
571
|
+
routes: `atoll_list_executions`, `atoll_get_execution`,
|
|
572
|
+
`atoll_create_execution`, `atoll_transition_execution`,
|
|
573
|
+
`atoll_list_execution_evidence`, and `atoll_add_execution_evidence`.
|
|
574
|
+
Requester attention tools are `atoll_list_attention`, `atoll_get_attention`,
|
|
575
|
+
`atoll_create_attention`, `atoll_cancel_attention`, and `atoll_ack_attention`.
|
|
576
|
+
They preserve REST authorization, caller-observed versions, and idempotency.
|
|
577
|
+
MCP omits human resolution, administrator recovery/retarget/cancel, local-file
|
|
578
|
+
inputs, and runner/harness control.
|
|
579
|
+
|
|
562
580
|
## Activity
|
|
563
581
|
|
|
564
582
|
| Method | Endpoint | Description |
|
|
@@ -828,8 +846,9 @@ return `400`. A project UUID requires both organization membership and caller
|
|
|
828
846
|
read access to that project; cross-organization, inaccessible, or missing
|
|
829
847
|
projects return `404`. Organization-wide and unfiltered requests retain existing
|
|
830
848
|
organization-member access. Results remain newest first and include disabled
|
|
831
|
-
or invalid rules with their validation diagnostics.
|
|
832
|
-
|
|
849
|
+
or invalid rules with their validation diagnostics. Both MCP profiles accept
|
|
850
|
+
the same optional `project_id` UUID or `none` filter; the CLI does not add
|
|
851
|
+
filter flags.
|
|
833
852
|
|
|
834
853
|
| Method | Endpoint | Description |
|
|
835
854
|
|--------|----------|-------------|
|
|
@@ -856,7 +875,9 @@ GET/list preserve invalid rows with optional `validation: { valid, issues }`
|
|
|
856
875
|
an invalid rule with only `{ "enabled": false }`. Change-condition dry runs
|
|
857
876
|
require a canonical `event`; snapshots cannot establish transitions. See
|
|
858
877
|
[Automation Rule Fields](api-fields.md#automation-rule-fields) for the grammar
|
|
859
|
-
and legacy normalization.
|
|
878
|
+
and legacy normalization. Both full/private and public MCP profiles expose
|
|
879
|
+
typed automation-rule tools. Create requires explicit project or organization
|
|
880
|
+
scope and always creates the rule disabled; test is a side-effect-free dry run.
|
|
860
881
|
|
|
861
882
|
Scheduled dry runs use an `issue_id` or issue sample with the selected time
|
|
862
883
|
fields, return `scheduled_for`, `due`, and `conditions_matched`, and reject an
|
|
@@ -879,7 +900,8 @@ Loop stops return `status: "skipped"`, `skip_reason: "loop_detected"`, and
|
|
|
879
900
|
server-side. Terminal and action-bearing runs never replay on duplicate
|
|
880
901
|
delivery. This foundation keeps automation-originated child events suppressed;
|
|
881
902
|
activation is a separate reviewed migration and never replays historical
|
|
882
|
-
suppressed events.
|
|
903
|
+
suppressed events. It adds no REST route. Typed rule management is available
|
|
904
|
+
through the nine automation MCP tools in both profiles.
|
|
883
905
|
When another run in the same event blocks replay with terminal or action evidence,
|
|
884
906
|
an interrupted run with no attempted actions is finalized as failed without
|
|
885
907
|
executing its actions.
|
|
@@ -989,8 +1011,15 @@ Google Chat mention cards include the task title, a safely formatted plain-text
|
|
|
989
1011
|
| DELETE | `/api/orgs/{id}/runners/self` | Disconnect the authenticated agent's current runner installation; idempotent |
|
|
990
1012
|
| GET | `/api/orgs/{id}/runners` | Read the human caller's manageable runner fleet |
|
|
991
1013
|
| PATCH | `/api/orgs/{id}/runners/{runnerId}/intake` | Pause or resume new intake for an exact current runner installation |
|
|
992
|
-
| POST | `/api/orgs/{id}/runner-leases/claim` | Atomically claim or safely replay a runner lease; untouched pre-intent replays can reissue a token |
|
|
993
|
-
| PATCH | `/api/orgs/{id}/runner-leases/{leaseId}` | Apply a fenced lifecycle transition; paused runners may finish held work but cannot claim new work |
|
|
1014
|
+
| POST | `/api/orgs/{id}/runner-leases/claim` | Atomically claim or safely replay a runner lease; untouched pre-intent replays can reissue a token; verified resume claims fail closed with `409 RUNNER_LEASE_VERIFICATION_BINDING_MISMATCH` when current artifact identity differs |
|
|
1015
|
+
| PATCH | `/api/orgs/{id}/runner-leases/{leaseId}` | Apply a fenced lifecycle transition; paused runners may finish held work but cannot claim new work; preserve the exact Codex thread with `threadId` |
|
|
1016
|
+
|
|
1017
|
+
Ordinary local-runner claims create or replay one canonical execution before
|
|
1018
|
+
model work with `harness_kind: "atoll_local_runner"` and the lease UUID as
|
|
1019
|
+
`external_run_id`. A resolved canonical human-attention item uses a separate
|
|
1020
|
+
closed private claim source with exact execution/item IDs, versions, host,
|
|
1021
|
+
source lease, and retained thread. This does not change notification or public
|
|
1022
|
+
MCP schemas.
|
|
994
1023
|
|
|
995
1024
|
Install snippets returns config for `claude-code`, `codex`, `gemini`, `openclaw` (agent prompt), `openclaw-manual`, `hermes` (agent prompt), and `hermes-manual`. The server resolves the org slug and validates optional project/team IDs before generating snippets.
|
|
996
1025
|
|
|
@@ -1023,10 +1052,15 @@ The default new-agent local path (without `setupAgentMemberId`) atomically creat
|
|
|
1023
1052
|
|
|
1024
1053
|
## GitHub Integration
|
|
1025
1054
|
|
|
1055
|
+
The signed workflow receiver acknowledges nonterminal notifications without
|
|
1056
|
+
evidence. Completed manual dispatches require one current linked PR and
|
|
1057
|
+
canonical repository, PR, head, and branch proof; they do not emit generic
|
|
1058
|
+
`ci.run.completed` automation events.
|
|
1059
|
+
|
|
1026
1060
|
| Method | Endpoint | Description |
|
|
1027
1061
|
|--------|----------|-------------|
|
|
1028
1062
|
| GET | `/api/orgs/{id}/github-connections` | List GitHub connections (owner/admin) |
|
|
1029
|
-
| PATCH | `/api/orgs/{id}/github-connections/{connectionId}` | Update workflow verification mode, 1–10 paths of at most 255 characters each, or delivery agent (owner/admin) |
|
|
1063
|
+
| PATCH | `/api/orgs/{id}/github-connections/{connectionId}` | Update workflow verification mode (`disabled`, `observe`, `attention`, or explicitly enabled `resume`), 1–10 paths of at most 255 characters each, or delivery agent (owner/admin); `resume` requires an active Codex runner and exact artifact binding |
|
|
1030
1064
|
| POST | `/api/orgs/{id}/github-connections/{connectionId}/reconcile` | Reconcile the signed GitHub hook and retry pending workflow evidence after current GitHub and PR-link readback (owner/admin) |
|
|
1031
1065
|
| GET | `/api/orgs/{id}/github-connections/{connectionId}/workflow-runs` | List bounded workflow-run evidence (owner/admin; `limit` defaults to 25 and has a maximum of 100) |
|
|
1032
1066
|
| GET | `/api/integrations/github/repos` | List available repos |
|
|
@@ -1038,6 +1072,25 @@ Release-added required hook events mark existing reconciled and already-pending
|
|
|
1038
1072
|
hooks automatically. Transient failures remain pending for retry; owners and
|
|
1039
1073
|
admins can also use the reconciliation endpoint.
|
|
1040
1074
|
|
|
1075
|
+
Read-only repository context is separate from the legacy OAuth/PR-link
|
|
1076
|
+
integration. Owner/admin settings install the GitHub App and map verified
|
|
1077
|
+
repositories to projects. Project members and agent keys can read mapped
|
|
1078
|
+
repositories through Atoll REST and the `atoll repository` CLI commands. The
|
|
1079
|
+
full/private and public MCP profiles expose the same five typed reads:
|
|
1080
|
+
`atoll_list_project_repositories`, `atoll_repo_get_tree`,
|
|
1081
|
+
`atoll_repo_get_file`, `atoll_repo_search_code`, and `atoll_repo_get_commit`.
|
|
1082
|
+
They require project access and a server-issued opaque `repo_ref` for each
|
|
1083
|
+
repository read. They do not expose GitHub writes, pull-request actions, or
|
|
1084
|
+
GitHub Actions control. See [repository context fields](api-fields.md#read-only-repository-context-fields).
|
|
1085
|
+
|
|
1086
|
+
| Method | Endpoint | Description |
|
|
1087
|
+
| --- | --- | --- |
|
|
1088
|
+
| `GET` | `/api/projects/{id}/repositories` | List mapped repositories visible to the caller's project access |
|
|
1089
|
+
| `GET` | `/api/repositories/{repoRef}/tree?ref=...&path=...` | Read directory metadata at an exact resolved commit |
|
|
1090
|
+
| `GET` | `/api/repositories/{repoRef}/file?ref=...&path=...` | Read one bounded file at an exact resolved commit |
|
|
1091
|
+
| `GET` | `/api/repositories/{repoRef}/search?ref=...&path=...&query=...` | Search code with current-default-branch commit verification |
|
|
1092
|
+
| `GET` | `/api/repositories/{repoRef}/commits/{refOrSha}` | Read safe commit metadata and exact-SHA provenance |
|
|
1093
|
+
|
|
1041
1094
|
## Platform Feedback
|
|
1042
1095
|
|
|
1043
1096
|
### Feedback error contract
|
|
@@ -1065,29 +1118,44 @@ atoll feedback drafts --json
|
|
|
1065
1118
|
atoll feedback resend fb_123
|
|
1066
1119
|
```
|
|
1067
1120
|
|
|
1068
|
-
## Public MCP
|
|
1121
|
+
## Public MCP typed product parity
|
|
1069
1122
|
|
|
1070
|
-
The hosted
|
|
1071
|
-
|
|
1072
|
-
|
|
1123
|
+
The hosted plugin exposes typed tools for common product workflows. Actor-
|
|
1124
|
+
dependent calls accept a per-call `profile_ref` and use the backing API's live
|
|
1125
|
+
authorization. Issue references accept UUIDs, bare numbers, `#number`,
|
|
1126
|
+
`ATOLL-number`, `TSK-number`, and supported project-derived prefixes. Project
|
|
1127
|
+
references accept UUIDs, exact slugs, or exact names. Label references accept
|
|
1128
|
+
UUIDs or exact names.
|
|
1073
1129
|
|
|
1074
|
-
| MCP tools | Backing endpoints |
|
|
1130
|
+
| MCP tools | Backing endpoints and request semantics |
|
|
1075
1131
|
|---|---|
|
|
1076
|
-
| `
|
|
1077
|
-
| `
|
|
1078
|
-
| `
|
|
1079
|
-
| `
|
|
1080
|
-
| `
|
|
1081
|
-
| `
|
|
1082
|
-
| `
|
|
1083
|
-
| `
|
|
1084
|
-
| `
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1132
|
+
| `atoll_archive_issue`, `atoll_unarchive_issue` | POST or DELETE `/api/orgs/{id}/issues/{issueId}/archive`; each emits the normal `issue.updated` webhook event |
|
|
1133
|
+
| `atoll_get_dependency_chain` | GET `/api/orgs/{id}/issues/{issueId}/dependencies?view=chain`; bounded direction/depth/limit and signed cursor |
|
|
1134
|
+
| `atoll_list_labels`, `atoll_create_label` | GET or POST `/api/orgs/{id}/labels`; create `{ name, color?, description? }` |
|
|
1135
|
+
| `atoll_add_issue_label`, `atoll_remove_issue_label` | POST issue-label route with `{ labelId }`, or DELETE the label item route |
|
|
1136
|
+
| `atoll_list_subtasks`, `atoll_create_subtask`, `atoll_update_subtask`, `atoll_delete_subtask` | Issue subtask collection/item routes; create `{ title }`, update `{ title?, completed? }` |
|
|
1137
|
+
| `atoll_get_strategy_audit` | GET `/api/orgs/{id}/strategy/audit`; severity filter recomputes findings summary/counts |
|
|
1138
|
+
| `atoll_list_activity` | GET `/api/orgs/{id}/activity` with `filter`, `limit`, and `offset` |
|
|
1139
|
+
| `atoll_list_notifications`, `atoll_ack_notification` | GET `/api/orgs/{id}/notifications`; ack POST uses `{}` |
|
|
1140
|
+
| `atoll_create_project`, `atoll_delete_project` | Project collection/item routes; delete requires `{ confirmation: "DELETE" }` and owner/admin access |
|
|
1141
|
+
| `atoll_create_board_column` | POST `/api/orgs/{id}/projects/{projectId}/board-columns`; the API appends the column |
|
|
1142
|
+
| `atoll_create_goal`, `atoll_update_goal`, `atoll_create_kpi`, `atoll_update_kpi` | Existing goal and KPI collection/item routes; KPI updates do not accept `current_value` measurements |
|
|
1143
|
+
| Initiative and target tools | Initiative, target, relationship, and milestone routes listed above |
|
|
1144
|
+
| `atoll_send_feedback` | `/api/feedback`; public fields are type, description, optional URL |
|
|
1145
|
+
|
|
1146
|
+
Project deletion may return `403` for insufficient role or `409` while linked
|
|
1147
|
+
Artifacts or active executions prevent deletion. Public MCP excludes
|
|
1148
|
+
`atoll_api_request`, local-file inputs, and operator-only controls. Feedback
|
|
1149
|
+
text is untrusted triage content and does not identify a human reporter.
|
|
1150
|
+
|
|
1151
|
+
For `atoll_archive_issue`, `atoll_unarchive_issue`, `atoll_create_project`,
|
|
1152
|
+
`atoll_delete_project`, `atoll_create_label`, `atoll_add_issue_label`,
|
|
1153
|
+
`atoll_create_subtask`, `atoll_update_subtask`, `atoll_delete_subtask`,
|
|
1154
|
+
`atoll_create_board_column`, `atoll_create_goal`, `atoll_update_goal`,
|
|
1155
|
+
`atoll_create_kpi`, and `atoll_update_kpi`, transport failures, HTTP 5xx
|
|
1156
|
+
responses, or invalid success responses can return `core_write_uncertain`
|
|
1157
|
+
with `retryable: false` and resource-specific readback steps. Read current
|
|
1158
|
+
state and reconcile before replaying; the server does not retry automatically.
|
|
1091
1159
|
|
|
1092
1160
|
|
|
1093
1161
|
### Local runner UI boundary
|
|
@@ -1099,3 +1167,111 @@ do not grant project/repository access. Intake is read-only locally; hosted
|
|
|
1099
1167
|
Workspace Settings → Runners owns pause/resume. See the CLI local-runner guide.
|
|
1100
1168
|
|
|
1101
1169
|
Automation rule create/update accepts the core action set including one `create_issue` per rule. See [Automation Rule Fields](api-fields.md#automation-rule-fields) for required fields, original-issue targets, replay results, and external-event limits.
|
|
1170
|
+
|
|
1171
|
+
### MCP Events adapter (OAuth plugin only)
|
|
1172
|
+
|
|
1173
|
+
| Method | Endpoint | Purpose |
|
|
1174
|
+
| --- | --- | --- |
|
|
1175
|
+
| POST | `/api/mcp-events/subscriptions` | Create or refresh a verified project-scoped MCP webhook subscription |
|
|
1176
|
+
| DELETE | `/api/mcp-events/subscriptions` | Idempotently unsubscribe the resolved OAuth connection/profile and callback identity |
|
|
1177
|
+
|
|
1178
|
+
These endpoints support MCP `events/*` methods and have no CLI or ordinary tool equivalent. API-key credentials are rejected.
|
|
1179
|
+
|
|
1180
|
+
## MCP App extension (not a REST endpoint)
|
|
1181
|
+
|
|
1182
|
+
Public plugin discovery adds the app-only `atoll.open` global entrypoint,
|
|
1183
|
+
input `{}`, initial result `{page:"home"}`, and resource
|
|
1184
|
+
`ui://atoll/command-center` with MIME `text/html;profile=mcp-app`.
|
|
1185
|
+
`_meta.ui.resourceUri`, app-only visibility, a monochrome tool icon and
|
|
1186
|
+
`_meta["openai/ui"].entrypoints:[{type:"global"}]` identify the UI.
|
|
1187
|
+
Existing business reads keep their `profile_ref` and authorization contract.
|
|
1188
|
+
No REST field, write endpoint or persistent profile preference is added.
|
|
1189
|
+
|
|
1190
|
+
## Bounded collection search
|
|
1191
|
+
|
|
1192
|
+
Projects, goals, KPIs and initiatives accept `q` for case-insensitive literal
|
|
1193
|
+
substring matching of the display name/title, `q_exact=true` for the complete
|
|
1194
|
+
name, and `limit`/`offset` for server-side pagination. Defaults in bounded mode
|
|
1195
|
+
are 25 results, maximum 100, and offset 0. Filtering and authorization precede
|
|
1196
|
+
pagination; offsets beyond matching results return an empty page with the exact
|
|
1197
|
+
total. KPI pages include current calculated values. Use `shape=envelope`
|
|
1198
|
+
(or `response_shape=cli`) for `resource`, `items`, `total`, `limit`, `offset`,
|
|
1199
|
+
`nextOffset`, `truncated` and `hint`. Supplying a search or pagination parameter
|
|
1200
|
+
also selects bounded retrieval. Calls without these parameters retain their
|
|
1201
|
+
legacy resource-key response and full-list behavior.
|
|
1202
|
+
|
|
1203
|
+
Members add `member_id=<UUID>` and `q_exact=true` in bounded directory mode.
|
|
1204
|
+
Identity filtering uses the same collaborator visibility rules and safe fields
|
|
1205
|
+
as name search; it does not grant access or return credentials or account email.
|
|
1206
|
+
Members and initiatives also accept `scope=accessible_projects` for a bounded
|
|
1207
|
+
union under the current actor. The server derives project IDs; callers cannot
|
|
1208
|
+
supply ID arrays. Guests see only accessible project-linked initiatives and
|
|
1209
|
+
eligible collaborators. Existing member/admin projectless initiative rights
|
|
1210
|
+
remain. Empty project access gives guests an empty page. Unknown scope or scope
|
|
1211
|
+
combined with an explicit project returns `400`. Explicit project scope remains
|
|
1212
|
+
`project_id` for initiatives and `projectId` for members.
|
|
1213
|
+
|
|
1214
|
+
Full issue lists resolve authorized human identifiers such as `AH-123`,
|
|
1215
|
+
`ATOLL-123`, `#123` or a number before loose title/description matching. They also
|
|
1216
|
+
accept `q_exact=true` for the full title. The exact flag is rejected with `400`
|
|
1217
|
+
for compact `view=board`/`view=list`; existing compact search stays unchanged.
|
|
1218
|
+
The existing issue filters and actor/project authorization still apply.
|
|
1219
|
+
|
|
1220
|
+
CLI list commands for projects, goals, KPIs, initiatives and members use
|
|
1221
|
+
`--search`, `--exact`, `--limit` and `--offset`; issue list uses `--q` with
|
|
1222
|
+
`--exact`. Member list also supports `--member-id`. These filters are evaluated
|
|
1223
|
+
by the API. Existing public/private MCP list tools expose `q`, `q_exact`,
|
|
1224
|
+
`limit` and `offset`; `atoll_list_members` adds `member_id`. Member and initiative
|
|
1225
|
+
lists expose `--accessible-projects` in the CLI and `scope=accessible_projects`
|
|
1226
|
+
in MCP. The initiative flag suppresses a configured default project and cannot
|
|
1227
|
+
combine with `--project` or `--org-wide`. Normal MCP goal/KPI/initiative calls
|
|
1228
|
+
without query, exact, paging or scope options retain legacy full-list responses.
|
|
1229
|
+
Composer search uses a constant number of bounded list calls per profile and
|
|
1230
|
+
entity kind, independent of the number of accessible projects.
|
|
1231
|
+
|
|
1232
|
+
### Native forms and bounded milestone reads
|
|
1233
|
+
|
|
1234
|
+
- Plugin `atoll_create_issue_interactive`: standard elicitation/create MRTR with
|
|
1235
|
+
official OpenAI rich schema, explicit profile and final create confirmation;
|
|
1236
|
+
normal deterministic tool remains available. No separate REST mutation route.
|
|
1237
|
+
- POST `/api/orgs/{id}/issues`: optional canonical UUID Idempotency-Key header;
|
|
1238
|
+
consumed identity409, invalid header400, ordinary absent-header calls unchanged.
|
|
1239
|
+
- GET `/api/orgs/{id}/projects/{projectId}/milestones`: optional q/q_exact/limit/offset
|
|
1240
|
+
and envelope; database-filtered page with calculated progress/status counts.
|
|
1241
|
+
Old calls keep the unpaged milestones alias. Project read permission applies.
|
|
1242
|
+
|
|
1243
|
+
Artifact source provenance is available through web, REST, and private CLI.
|
|
1244
|
+
Create/revise accepts `source_external_reference_link_id`; revise omission
|
|
1245
|
+
inherits and null clears. Add `projection=source_provenance_v1` on Artifact
|
|
1246
|
+
create/revise or single-revision GET to read an authorized immutable source.
|
|
1247
|
+
Default REST and typed MCP Artifact output remain unchanged. See the Artifact
|
|
1248
|
+
field reference for target authorization and unlink semantics.
|
|
1249
|
+
|
|
1250
|
+
### Vercel deployment observations
|
|
1251
|
+
|
|
1252
|
+
| Method | Endpoint | Purpose |
|
|
1253
|
+
| --- | --- | --- |
|
|
1254
|
+
| GET | `/api/orgs/{id}/integrations/vercel` | Human owner/admin safe connection and mapping list |
|
|
1255
|
+
| PUT | `/api/orgs/{id}/integrations/vercel` | Validate and save team credentials and a mapping with version fencing |
|
|
1256
|
+
| DELETE | `/api/orgs/{id}/integrations/vercel` | Disable, erase credentials, preserve observation history |
|
|
1257
|
+
| POST | `/api/orgs/{id}/integrations/vercel/reconcile` | Bounded recovery of one page per mapping/environment |
|
|
1258
|
+
| POST | `/api/webhooks/vercel/{connectionId}` | Raw-body HMAC-SHA1 verified Vercel callback; no bearer authentication |
|
|
1259
|
+
|
|
1260
|
+
Management requires a signed-in human owner/admin; API keys cannot use it.
|
|
1261
|
+
Callback verification uses `x-vercel-signature`. Invalid signatures return 401;
|
|
1262
|
+
unsupported events return 200 skipped; replay/identity/snapshot conflicts return
|
|
1263
|
+
409; provider or storage failure returns a safe 503 code. No secrets or raw
|
|
1264
|
+
provider payloads are returned. Provider access is authenticated GET-only.
|
|
1265
|
+
Safe management CLI/MCP parity is deferred under the current public tool freeze;
|
|
1266
|
+
it is tracked separately from generic External Reference reads.
|
|
1267
|
+
|
|
1268
|
+
## Compact Context
|
|
1269
|
+
|
|
1270
|
+
| Method | Endpoint | Purpose |
|
|
1271
|
+
| --- | --- | --- |
|
|
1272
|
+
| GET | `/api/orgs/{id}/issues/{issueId}/context` | Authorized bounded issue Context |
|
|
1273
|
+
| GET | `/api/orgs/{id}/projects/{projectId}/context` | Authorized bounded directly linked project Context |
|
|
1274
|
+
|
|
1275
|
+
Optional group, limit (1–25, default 5), and group-bound cursor. Details stay lazy.
|
|
1276
|
+
See the Compact Context index field reference. Full/private `atoll_list_context`
|
|
1277
|
+
only; public parity remains freeze-gated under AH-3067.
|