{
  "schema_version": "irie-market.mcp-actions.v1",
  "name": "Irie Market Agent Action Registry",
  "canonical_url": "https://iriemarketplace.com/mcp-actions.json",
  "last_updated": "2026-05-19",
  "actions": [
    {
      "id": "search-listings",
      "status": "available",
      "surface": "browse",
      "public": true,
      "auth_required": false,
      "human_confirmation_required": false,
      "description": "Search and filter public marketplace listings.",
      "parameters": ["query", "category", "location", "distance", "condition", "delivery", "seller_type"],
      "returns": ["listing_cards", "buyer_intent_packet", "match_explanation_packets"]
    },
    {
      "id": "read-listing",
      "status": "available",
      "surface": "listing",
      "public": true,
      "auth_required": false,
      "human_confirmation_required": false,
      "description": "Read a public listing's price, condition, location, handoff, seller facts, trust signals, and uncertainty.",
      "parameters": ["listing_id"],
      "returns": ["listing_truth_packet", "json_ld", "visible_listing_summary"]
    },
    {
      "id": "summarize-category",
      "status": "available",
      "surface": "category",
      "public": true,
      "auth_required": false,
      "human_confirmation_required": false,
      "description": "Read a category page's buyer guidance, common questions, visible listing count, and safety checks.",
      "parameters": ["category"],
      "returns": ["category_answer_packet", "faq_json_ld", "collection_json_ld"]
    },
    {
      "id": "save-listing",
      "status": "local_mvp_only",
      "surface": "saved",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "description": "Save a listing for a user. Current MVP stores this locally; future API must write an action receipt.",
      "parameters": ["listing_id", "user_intent"],
      "returns": ["saved_state", "receipt_id"]
    },
    {
      "id": "create-listing-draft",
      "status": "implemented_private_seller_api",
      "surface": "sell",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Create a private standalone kiosk seller draft through Irie OS seller identity. Drafts are not public and still require media upload, listing fee checkout, and moderation approval.",
      "parameters": ["title", "price_cents", "category", "condition", "location", "delivery", "description", "seller_actor_id"],
      "returns": ["draft_listing_id", "listing_status", "receipt_id", "next_actions"]
    },
    {
      "id": "update-listing",
      "status": "implemented_private_seller_api",
      "surface": "sell",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Update seller-owned standalone kiosk listing facts. Active listings are held for moderation and removed from public ranking until republished.",
      "parameters": ["listing_public_id", "title", "price_cents", "category", "condition", "location", "delivery", "description", "details", "tags"],
      "returns": ["listing_status", "requires_moderation", "receipt_id", "ranking_rebuild"]
    },
    {
      "id": "confirm-listing-availability",
      "status": "implemented_private_seller_api",
      "surface": "sell",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Confirm an active seller-owned standalone listing is still available, write an audit receipt, and refresh ranking evidence.",
      "parameters": ["listing_public_id", "confirmation_note"],
      "returns": ["availability_status", "last_confirmed_at", "receipt_id", "ranking_rebuild"]
    },
    {
      "id": "publish-listing",
      "status": "implemented_private_operator_api",
      "surface": "sell",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Publish a standalone kiosk listing through the private moderation lane only after Stripe Checkout payment, verified webhook state, moderation approval, optional media-first policy, and receipt writing.",
      "parameters": ["listing_public_id", "listing_fee_policy_version", "require_approved_media", "operator_confirmation_token"],
      "returns": ["listing_status", "receipt_id", "expires_at"]
    },
    {
      "id": "renew-listing",
      "status": "implemented_private_seller_api",
      "surface": "sell",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Create a Stripe renewal checkout for an active or expired standalone kiosk listing owned by the seller.",
      "parameters": ["listing_public_id", "seller_actor_id", "idempotency_key"],
      "returns": ["checkout_url", "amount_cents", "live_days", "payment_id"]
    },
    {
      "id": "expire-listings",
      "status": "implemented_private_service_api",
      "surface": "operations",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": false,
      "receipt_required": true,
      "description": "Expire active standalone listings whose paid publication window has ended and rebuild ranking so they leave public discovery.",
      "parameters": ["now", "batch_limit", "dry_run"],
      "returns": ["expired_count", "listing_public_ids", "receipt_ids", "ranking_rebuild"]
    },
    {
      "id": "publish-listing-media",
      "status": "implemented_private_operator_api",
      "surface": "moderation",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Approve processed listing media after moderation, copy private derivatives to public URLs, and write publish receipts with trusted operator identity.",
      "parameters": ["listing_public_id", "media_ids", "moderation_note", "operator_confirmation_token"],
      "returns": ["published_media", "receipt_ids", "ranking_rebuild"]
    },
    {
      "id": "read-operator-session",
      "status": "implemented_private_operator_api",
      "surface": "operator",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": false,
      "receipt_required": false,
      "description": "Resolve a trusted Irie OS operator session for the private operator console without exposing browser-visible admin tokens.",
      "parameters": ["irie_os_session"],
      "returns": ["operator_actor", "roles", "capabilities"]
    },
    {
      "id": "execute-listing-fee-refund",
      "status": "implemented_private_operator_api",
      "surface": "support",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Execute a Stripe listing-fee refund server-side for a paid standalone kiosk listing and write a listing support receipt.",
      "parameters": ["listing_public_id", "amount_cents", "reason", "stripe_reason", "operator_confirmation_token"],
      "returns": ["stripe_refund_status", "support_case_id", "receipt_id", "listing_fee_status"]
    },
    {
      "id": "draft-buyer-message",
      "status": "draft_only",
      "surface": "messages",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": false,
      "description": "Draft a buyer message without sending it.",
      "parameters": ["listing_id", "message_intent"],
      "returns": ["draft_text", "risk_warnings"]
    },
    {
      "id": "send-buyer-message",
      "status": "blocked_until_private_api",
      "surface": "messages",
      "public": false,
      "auth_required": true,
      "human_confirmation_required": true,
      "receipt_required": true,
      "description": "Send a buyer message only after explicit user confirmation, participant authorization, abuse scanning, and receipt writing.",
      "parameters": ["thread_id", "listing_id", "message_body", "confirmation_token"],
      "returns": ["message_id", "receipt_id"]
    }
  ],
  "blocked_behaviors": [
    "send_message_without_user_confirmation",
    "share_private_contact_details",
    "publish_listing_without_fee_or_moderation",
    "create_checkout_without_user_confirmation",
    "accept_payment",
    "promise_item_condition",
    "bypass_moderation",
    "scrape_private_messages"
  ]
}
