mirror of
https://github.com/affaan-m/ECC.git
synced 2026-09-02 22:25:35 +08:00
docs(ito-compute): document ito accept and ito_accept MCP workflow (#2893)
* docs(ito-compute): document ito accept and ito_accept MCP workflow Updates the canonical ECC skill to cover the new quote acceptance path: - CLI: ecc ito accept <ticket-id> - MCP: ito_accept tool - Explicit buyer-authority guard before accepting - Clear statement that accept routes to desk, does not purchase * test(ito-compute): assert the four-tool MCP boundary including ito_accept The exact-boundary test pinned the three-tool description. Runtime ito-compute-cli now exposes ito_accept (Ito-Markets/ito-cloud-runtime#1453), so the template boundary assertion moves to four tools. * docs(ito-compute): drop the firm-quote gate from the accept workflow Desk quotes are indicative_paper in production (a firm quote requires the separate human-held signing path and cannot reach the client), so gating accept on 'a firm quote is ready' described an unfireable condition. Align with the runtime contract: accept routes the current desk quote to human review and the result carries quote_class (ito-cloud-runtime#1453).
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
"ito-compute": {
|
||||
"command": "node",
|
||||
"args": ["/absolute/path/to/ito-cloud-runtime/cli/ito-compute-cli/dist/bin/ito-mcp.js"],
|
||||
"description": "Opt-in local Itô compute MCP. The canonical package is unpublished and must be built from Ito-Markets/ito-cloud-runtime/cli/ito-compute-cli. Exposes only ito_auth, ito_find, and ito_status. ito_auth validates existing credentials; it does not start device login. Use ecc ito login [--no-browser] for device authorization, which stores tokens in macOS Keychain by default; explicit file fallback must retain owner-only settings. ECC itself performs no browser automation. ITO_API_KEY is forwarded directly to auth, find, and status when configured; ITO_AUTH_MODE=legacy is not required."
|
||||
"description": "Opt-in local Itô compute MCP. The canonical package is unpublished and must be built from Ito-Markets/ito-cloud-runtime/cli/ito-compute-cli. Exposes ito_auth, ito_find, ito_status, and ito_accept. ito_auth validates existing credentials; it does not start device login. Use ecc ito login [--no-browser] for device authorization, which stores tokens in macOS Keychain by default; explicit file fallback must retain owner-only settings. ECC itself performs no browser automation. ITO_API_KEY is forwarded directly to auth, find, status, and accept when configured; ITO_AUTH_MODE=legacy is not required."
|
||||
},
|
||||
"jira": {
|
||||
"command": "uvx",
|
||||
|
||||
@@ -73,7 +73,15 @@ key or token in arguments, tracked files, MCP results, logs, or chat.
|
||||
|
||||
5. Run `ecc ito status` to inspect RFQs and procurement orders.
|
||||
After an ambiguous transport failure, check status before repeating `find`.
|
||||
6. Run `ecc ito logout` when the user explicitly asks to revoke this device.
|
||||
6. When a quote is ready and the buyer explicitly approves, accept it:
|
||||
|
||||
```sh
|
||||
ecc ito accept rfq_<ticket-id>
|
||||
```
|
||||
|
||||
This routes the ticket to the desk for human review. It does not move funds
|
||||
or reserve capacity. Do not accept without explicit buyer authority.
|
||||
7. Run `ecc ito logout` when the user explicitly asks to revoke this device.
|
||||
The canonical CLI keeps the local credential when remote revocation fails so
|
||||
the operator can retry; never delete the token manually as a substitute.
|
||||
|
||||
@@ -129,23 +137,29 @@ The server exposes only:
|
||||
- `ito_auth`
|
||||
- `ito_find`
|
||||
- `ito_status`
|
||||
- `ito_accept`
|
||||
|
||||
`ito_auth` validates existing credentials; it does not start device login. Use
|
||||
`ito_auth`, gather explicit buyer authority and every hard constraint, call
|
||||
`ito_find`, then poll with `ito_status` when needed.
|
||||
`ito_find`, then poll with `ito_status` when needed. When a quote is ready and
|
||||
the buyer explicitly approves, call `ito_accept` with the ticket id. Desk
|
||||
quotes are usually indicative and nonbinding until the desk confirms; the
|
||||
result carries `quote_class`.
|
||||
|
||||
## Rent or purchase semantics
|
||||
|
||||
`find` submits an RFQ and may return a firm quote, but it does not rent,
|
||||
purchase, reserve, provision, or move funds. `status` is read-oriented, though
|
||||
the provider endpoint may reconcile an existing procurement order. The passive
|
||||
dashboard link in ECC help is a separate user-operated web route; do not open or
|
||||
operate it as a substitute for a missing CLI capability.
|
||||
purchase, reserve, provision, or move funds. `accept` routes a quote to the desk
|
||||
for human review; it does not move funds or reserve capacity. `status` is
|
||||
read-oriented, though the provider endpoint may reconcile an existing procurement
|
||||
order. The passive dashboard link in ECC help is a separate user-operated web
|
||||
route; do not open or operate it as a substitute for a missing CLI capability.
|
||||
|
||||
## Unsupported operations
|
||||
|
||||
The supported client surface cannot lock quotes, reserve capacity, execute
|
||||
workloads, or serve inference. The MCP server does not expose qualification;
|
||||
use the explicit CLI command above. Do not invent additional tools or a
|
||||
purchase path. Do not substitute a browser or fixture when the local CLI is
|
||||
missing or a live operation fails. Report the missing capability and stop.
|
||||
workloads, or serve inference. `accept` is a desk handoff, not a purchase. The
|
||||
MCP server does not expose qualification; use the explicit CLI command above. Do
|
||||
not invent additional tools or a purchase path. Do not substitute a browser or
|
||||
fixture when the local CLI is missing or a live operation fails. Report the
|
||||
missing capability and stop.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
interface:
|
||||
display_name: "Itô Compute"
|
||||
short_description: "GPU inventory, RFQs, status, and revocation"
|
||||
default_prompt: "Use $ito-compute to request a live GPU RFQ, inspect status, or revoke this device safely."
|
||||
short_description: "GPU inventory, RFQs, status, quote acceptance, and revocation"
|
||||
default_prompt: "Use $ito-compute to request a live GPU RFQ, inspect status, accept a quote, or revoke this device safely."
|
||||
|
||||
@@ -45,7 +45,7 @@ function main() {
|
||||
assert.match(skill, new RegExp(command.replace(" ", "\\s+")));
|
||||
}
|
||||
assert.doesNotMatch(skill, /^\s*ito (?:auth|find|status|evals)\b/m);
|
||||
for (const tool of ["ito_auth", "ito_find", "ito_status"]) {
|
||||
for (const tool of ["ito_auth", "ito_find", "ito_status", "ito_accept"]) {
|
||||
assert.match(skill, new RegExp(`\\b${tool}\\b`));
|
||||
}
|
||||
assert.doesNotMatch(
|
||||
@@ -142,7 +142,7 @@ function main() {
|
||||
"/absolute/path/to/ito-cloud-runtime/cli/ito-compute-cli/dist/bin/ito-mcp.js",
|
||||
]);
|
||||
assert.doesNotMatch(JSON.stringify(server), /npx|ito_lock|ito_run|paper|simulat/i);
|
||||
assert.match(server.description, /ito_auth, ito_find, and ito_status/);
|
||||
assert.match(server.description, /ito_auth, ito_find, ito_status, and ito_accept/);
|
||||
assert.match(server.description, /unpublished/i);
|
||||
assert.match(server.description, /ito_auth.*validat/i);
|
||||
assert.match(server.description, /macOS Keychain/i);
|
||||
|
||||
Reference in New Issue
Block a user