Summary
AIP-2 §4 ("Type Discovery in Mission List") describes filtering semantics but does not standardise the shape of items returned by GET /api/missions. In practice, every reference implementation has converged on returning a mission ID, but the per-item URL where an agent can drill down to mission detail is left implicit — clients are expected to construct it.
Empirical evidence from at least one production client shows this assumption breaks: the client successfully parses the list, then guesses 4 wrong REST conventions for drill-down, hits 404 on all of them, and abandons the workflow.
Empirical evidence
Cross-surface task-board-discovery client (catalogued at docs/SECOND_IMPLEMENTATION.md#16, 2026-05-26):
- IP 218.68.108.172 (Tianjin China Unicom AS4837), UA bare
node, 3 sessions across 4h41m, 67+ reqs
- Successfully reads
/work/board (5450B JSON list)
- Attempts to fetch detail page for mission
mis_15a24726b3de:
GET /tasks/26 → 404
GET /work/task/26 → 404
GET /api/tasks/26 → 404
GET /api/task/26 → 404
- Real URL:
/m/mis_15a24726b3de — client never tried this pattern
- Session ends without drill-down; no mission claim attempted
The client truncates the AIGEN ID prefix (mis_ + suffix → 26) and tries REST conventions. Without a normative way for the implementation to advertise the canonical detail URL, this is the only reasonable client behaviour.
Proposal
Amend AIP-2 §4 with a new subsection 4.1 Mission List Item Schema (MUST):
Each item returned by GET /api/missions and equivalent list endpoints (e.g. /work/board) MUST include:
{
"mission_id": "string (required)",
"view_url": "string, absolute or root-relative URL to fetch full mission detail (required)",
"claim_url": "string, absolute or root-relative URL for the canonical claim endpoint (recommended)",
"mission_type": "AIP-2 type identifier (required at AIP-2 conformance level)",
...other fields...
}
Rationale: HATEOAS removes the need for clients to learn implementation-specific URL conventions. A client can traverse any conforming implementation by following links, not by string-templating IDs into guessed paths.
Why this is worth a normative MUST (not a SHOULD)
- AIP-2 §7 ("Conformance Levels") already requires that "an agent SHOULD be able to consume any compliant implementation's mission list and submit work without per-implementation glue code." Per-implementation URL templating directly violates this.
- The fix is one field per item, zero schema breakage for clients that already ignore unknown fields, zero cost for implementations.
- Without it, every implementation that picks a different URL scheme (
/m/mis_*, /tasks/*, /missions/*, /jobs/*) silently breaks naive cross-impl clients — the cost is borne entirely by integrators.
Falsifiability
If a counter-example exists where a list-then-detail client successfully drilled down across ≥2 reference implementations with different URL schemes without a HATEOAS link, this proposal is unnecessary. We have not observed such a case in 16 catalogued client architectures.
Counter-objection
Some may argue clients should read llms.txt or agent-card.json for URL templates. Response: that is a second discovery step that re-introduces the per-implementation glue code AIP-2 §7 explicitly tries to eliminate. HATEOAS in-line is cheaper for both sides.
Related
CC any maintainer with strong views on REST conventions vs HATEOAS for permissionless agent ecosystems — explicit normative guidance benefits new implementations more than veterans.
Summary
AIP-2 §4 ("Type Discovery in Mission List") describes filtering semantics but does not standardise the shape of items returned by
GET /api/missions. In practice, every reference implementation has converged on returning a mission ID, but the per-item URL where an agent can drill down to mission detail is left implicit — clients are expected to construct it.Empirical evidence from at least one production client shows this assumption breaks: the client successfully parses the list, then guesses 4 wrong REST conventions for drill-down, hits 404 on all of them, and abandons the workflow.
Empirical evidence
Cross-surface task-board-discovery client (catalogued at
docs/SECOND_IMPLEMENTATION.md#16, 2026-05-26):node, 3 sessions across 4h41m, 67+ reqs/work/board(5450B JSON list)mis_15a24726b3de:GET /tasks/26→ 404GET /work/task/26→ 404GET /api/tasks/26→ 404GET /api/task/26→ 404/m/mis_15a24726b3de— client never tried this patternThe client truncates the AIGEN ID prefix (
mis_+ suffix →26) and tries REST conventions. Without a normative way for the implementation to advertise the canonical detail URL, this is the only reasonable client behaviour.Proposal
Amend AIP-2 §4 with a new subsection 4.1 Mission List Item Schema (MUST):
Why this is worth a normative MUST (not a SHOULD)
/m/mis_*,/tasks/*,/missions/*,/jobs/*) silently breaks naive cross-impl clients — the cost is borne entirely by integrators.Falsifiability
If a counter-example exists where a list-then-detail client successfully drilled down across ≥2 reference implementations with different URL schemes without a HATEOAS link, this proposal is unnecessary. We have not observed such a case in 16 catalogued client architectures.
Counter-objection
Some may argue clients should read
llms.txtoragent-card.jsonfor URL templates. Response: that is a second discovery step that re-introduces the per-implementation glue code AIP-2 §7 explicitly tries to eliminate. HATEOAS in-line is cheaper for both sides.Related
docs/SECOND_IMPLEMENTATION.mdarch [i18n] AIP-1 Mandarin Chinese translation (specs/AIP-1.zh.md) #16 — primary empirical sourceCC any maintainer with strong views on REST conventions vs HATEOAS for permissionless agent ecosystems — explicit normative guidance benefits new implementations more than veterans.