4.8 KiB
4.8 KiB
m2-market CLI contract v1
The CLI is the only marketplace surface that calls m2-ledger directly. Store, Scout, and Hermes consume the CLI JSON contract.
Config: ~/.m2-market/config.toml mode 0600.
Required keys: operator_id, tenant, ledger_url, ledger_api_key, memory_api_url,
memory_api_key, forgejo_url, forgejo_token, apply_adapter.
State: ~/.m2-market/state.json. Install entries MUST store grant_id and tx_group_id.
Verbs
m2-market search <query> [--type solution|capability|resource|service] [--limit N] [--json]m2-market show <listing_id> [--json]m2-market install <listing_id> [--yes] [--json]m2-market uninstall <listing_id> [--yes] [--json]m2-market upgrade <listing_id> [--to <semver>] [--yes] [--json]m2-market wallet [--operator <operator_id>] [--json]m2-market publish <bundle-dir> [--tenant-visibility <tenant-or-*>]m2-market package init|import-fedlearn|validate|build|diff-permissions|evidence-summary|verify-releasem2-market reindexm2-market propose "<intent>" --tenant <tenant> --operator <operator_id> --jsonm2-market evidence capture|submit|showm2-market telemetry submit <event-jsonl>
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success, including idempotent no-op install. |
| 1 | Usage error, unsupported operation, or direct install refused for price.model=job. |
| 2 | Listing, release, license, or local install state not found. |
| 3 | Insufficient funds or ledger payment declined before apply. |
| 4 | Apply, verify, uninstall, or upgrade failed after settlement; CLI attempted refund when applicable. |
| 5 | Schema validation, tenant firewall, secret scan, permissions, or publish gate rejection. |
| 6 | External dependency unavailable or deferred adapter path not landed. |
show --json
The detail payload is frozen for Store and Scout:
{
"schema_version": "m2.market.show.v1",
"listing": {
"schema_version": "m2.listing.v1",
"listing_id": "lst_mm-pdf-report",
"solution_id": "sol_mm-pdf-report",
"solution_version": "1.0.0",
"inventory_type": "solution",
"name": "MM PDF Report",
"summary": "Generate branded PDF reports.",
"category": "reporting",
"price": {"model": "fixed", "amount": 25, "currency": "m2cr"},
"seller": {"operator_id": "op_m2core", "display_name": "M2 Core"},
"content_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
"tenant_visibility": ["*"],
"status": "published",
"install_ref": "lst_mm-pdf-report-v1.0.0"
},
"solution": {
"schema_version": "m2.solution.v1",
"solution_id": "sol_mm-pdf-report",
"name": "MM PDF Report",
"summary": "Generate branded PDF reports.",
"intent": "Turn approved analysis into a styled client-ready PDF report.",
"deployment": {
"recipe_ref": "recipe.yaml",
"entrypoint": "mm-pdf generate <input.md>",
"verify_command": "mm-pdf --version"
},
"applicability": {
"image_classes": ["primus", "agent-latest"],
"roles": ["operator"],
"tool_requirements": ["bash"]
},
"tenant_scope": "m2-core",
"evidence": [{"source": "forgejo:m2/m2-market/listings/lst_mm-pdf-report/evidence/provenance.jsonl"}],
"content_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
"price": {"model": "fixed", "amount": 25, "currency": "m2cr"},
"seller": {"operator_id": "op_m2core", "display_name": "M2 Core"},
"license": {
"license_id": "lic_m2_market_standard_v1",
"terms": "m2-market-standard-v1",
"scope": "operator",
"major_version_coverage": true,
"allows_internal_modification": true,
"allows_redistribution": false,
"support": "best_effort"
}
},
"wallet": {"operator_id": "op_chris", "balance": 100, "currency": "m2cr", "as_of": "2026-07-02T00:00:00Z"},
"install_state": {
"status": "not_installed",
"installed_version": null,
"grant_id": null,
"tx_group_id": null
},
"permissions_diff": {
"schema_version": "m2.permissions_diff.v1",
"mode": "new_install",
"listing_id": "lst_mm-pdf-report",
"current_install_ref": null,
"target_install_ref": "lst_mm-pdf-report-v1.0.0",
"summary": {"added": 2, "removed": 0, "changed": 0, "unchanged": 0, "risk": "medium"},
"items": [
{
"permission_id": "fs-write-agent-home",
"action": "added",
"kind": "filesystem",
"access": "write",
"scope": "${AGENT_HOME}/.claude/skills/mm-pdf",
"target": "skill files",
"reason": "install skill files",
"risk": "low",
"requires_confirmation": false
}
]
}
}
permissions_diff.mode is one of new_install, upgrade, reinstall, uninstall, or
no_change. items[].action is one of added, removed, changed, or unchanged.