Changes for ai2/implementation-and-delivery.md: 1 added line, 1 removed line.
Original line number
Diff line number
Diff line
@@ -237,7 +237,7 @@ Unspecified means no reason has been agreed.
| `/debug/objgraph` needs no token (F9) | Unspecified | Keep the agent `ClusterIP` |
| The system prompt ends mid-sentence; `TOOL_USING_ASSISTANT_PROMPT` and `UserPhoneInput` are unused | Unspecified | None |
| What happens at the 20-model-call limit is not verified | Unspecified | None |
| READMEs are out of date: 11 of 19 tools listed, "Quart backend", other defaults | Unspecified | Use this spec |
| READMEs are out of date: "Quart backend", other defaults | Unspecified | Use this spec |
| The portal keeps the conversation list only in the browser tab ([portal §U.9](/portal/implementation-and-delivery.md)) | Accepted for now in the portal's spec | — |
Changes for ai2/interface-contract.md: 2 added lines, 0 removed lines.
Original line number
Diff line number
Diff line
@@ -141,6 +141,7 @@ pending." A non-JSON success body comes back as `{"status_code", "body"}`.
| Tool | Arguments | OEG call | Result |
|---|---|---|---|
| `create_traffic_influence` | `inp`: traffic influence request (§3.2) | `POST /traffic-influences` | OEG's object. Creation does not mean the influence is active yet |
| `create_traffic_influence_device` | `inp`: traffic influence request with `device` (§3.2) | `POST /traffic-influence-devices` | OEG's object. Creation does not mean the influence is active yet |
| `get_traffic_influences` | `appId` | `GET /traffic-influences` | `{"trafficInfluences": [...]}`. OEG must answer a list |
| `device` | `create_traffic_influence_device` only. Optional here; same rules as §3.1. OEG requires it, since no token claim maps to a device ([oeg/overview-and-architecture.md F4](/oeg/overview-and-architecture.md#f-open-questions)), and accepts only a device with `ipv4Address`. Without one: `422`/`MISSING_IDENTIFIER`; other identifiers alone: `422`/`SERVICE_NOT_APPLICABLE` |
Changes for ai2/overview-and-architecture.md: 2 added lines, 2 removed lines.
Original line number
Diff line number
Diff line
@@ -49,7 +49,7 @@ written to disk.
| MCP over HTTP (/mcp), same Bearer token
v
+----------------------+
| MCP server (FastMCP) | 19 tools
| MCP server (FastMCP) | 20 tools
| ai2-mcp :8004 |
+----------+-----------+
| HTTPS/HTTP, same Bearer token
@@ -121,7 +121,7 @@ Platform-wide terms, including MCP, A2A and API product: [platform/glossary.md](
| UC-AI2-02 | Receive the answer as a server-sent event stream | Callers with a token |
| UC-AI2-03 | Register, list, read and delete application definitions; list edge cloud zones; create, list and delete application instances and deployments | As far as OEG allows |
| UC-AI2-04 | Create, read and delete Quality on Demand sessions | As far as OEG allows |
| UC-AI2-05 | Create, list, read and delete traffic influence resources | As far as OEG allows |
| UC-AI2-05 | Create traffic influence for an application or one device; list, read and delete traffic influence resources | As far as OEG allows |
| UC-AI2-06 | Retrieve a device's location area | As far as OEG allows |
| UC-AI2-07 | Continue a conversation using its recent turns | Any caller that sends a `session_id`, when Redis is configured |
| UC-AI2-08 | Use AI²'s tools from another MCP client | Status open (F9) |
Each tool's OEG operation, inputs and result: [contract §2](/ai2/interface-contract.md).
These OEG CAMARA operations have no tool: QoD `extend` and `retrieve-sessions`, Traffic Influence
`traffic-influence-devices` and `PATCH`, deployment `PATCH` and `clusters`. OEG's platform routes
`PATCH`, deployment `PATCH` and `clusters`. OEG's platform routes
(`/platform/v1/...`: federation, operations, health) and its TMF facade have no tool either.
### K.2 Request Rules
@@ -190,7 +190,7 @@ These OEG CAMARA operations have no tool: QoD `extend` and `retrieve-sessions`,
| Headers | `accept: application/json`; `content-type: application/json` on bodies |
| Correlator | Optional `xCorrelator` argument, sent as `x-correlator`. It must match `[a-zA-Z0-9-_:;./<>{}]{0,256}`, OEG's CAMARA alphabet, or the tool fails before calling |
| Body | Built from typed models; fields left empty are omitted. Inputs are checked before the call ([contract §3](/ai2/interface-contract.md)) |
| Idempotency | `instantiate_app`, `create_app_deployment` and `create_traffic_influence` send `Idempotency-Key` when the model supplies `idempotencyKey` (at most 128 characters). Other writes send none |
| Idempotency | `instantiate_app`, `create_app_deployment`, `create_traffic_influence` and `create_traffic_influence_device` send `Idempotency-Key` when the model supplies `idempotencyKey` (at most 128 characters). Other writes send none |
| Timeout | 15 seconds per OEG call. A tool never retries; the model may call it again |
| Redirects | Followed by the Edge Application Management tools only |
| Proxy | The HTTP client reads proxy settings from the environment (`HTTP_PROXY`, `HTTPS_PROXY`) |
@@ -337,7 +337,7 @@ AI² has no agreed retry rules; retrying a chat may repeat writes (overview F7).
| Authentication, authorization, tenant isolation | The caller's token is passed on; OEG decides ([ADR-0048](/decisions/0048-platform-roles.md)). OEG scopes reads and deletes to the caller's app provider and hides other providers' resources with 404; AI² inherits that through the caller's token. Sharing within an organization remains open ([oeg/overview-and-architecture.md F5](/oeg/overview-and-architecture.md#f-open-questions)). AI² does not validate tokens (F1). Memory is not tied to the caller (F4) |
| Ownership, state transitions, invariants | AI² owns no platform resource. OEG and SRM own every lifecycle. AI²'s only state is session memory (§L). Invariant: AI² holds no OEG credentials (REQ-AI2-01); its only secret is the Groq API key |
| Transactions, concurrency, consistency | No transactions. Each tool call is a separate OEG call, so a failed run can leave some changes done (§J.3). Same-session requests are not coordinated (§L.3) |
| Idempotency, timeouts, retries, cancellation | Groq: 15 seconds per attempt, up to 3 retries. OEG: 15 seconds, no tool retries. Three tools can send `Idempotency-Key` (§K.2). Portal: 120 seconds. Cancellation and duplicate handling are open (F5, F7) |
| Idempotency, timeouts, retries, cancellation | Groq: 15 seconds per attempt, up to 3 retries. OEG: 15 seconds, no tool retries. Four tools can send `Idempotency-Key` (§K.2). Portal: 120 seconds. Cancellation and duplicate handling are open (F5, F7) |
| Event delivery, ordering, duplicates | Not applicable: AI² publishes and consumes no events. Callback URLs a user gives a tool are delivered by OEG, not AI² |
| Schema migration, backward compatibility | No database. The chat body is shared with the portal (REQ-AI2-04); change both together ([implementation §V.6](/ai2/implementation-and-delivery.md)). The chat API has no version; whether it needs one is unspecified. OEG API versions are fixed per tool (§K.1) |
| Data retention and deletion | Memory lives for `MEMORY_TTL_SECONDS` after its last use; there is no delete route. An agreed retention is open (F8) |