{
  "name": "Storeware: Run my shop",
  "description": "Run a Storeware shop from an agent: search and enrich products, check performance and search visibility, draft and revise pages, arrange menus, and apply proposals. Send SendMessage (message/send at A2A 0.3) with a DataPart whose kind is \"a2a.merchant.<tool>\" and whose data carries the tool's method and params; \"a2a.merchant.list_tools\" lists what your credential may call. A background run comes back as a task. Nothing is published or deleted from here; the merchant does both in the admin.",
  "supportedInterfaces": [
    {
      "url": "https://api.storeware.ai/admin/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://api.storeware.ai/admin/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "url": "https://storeware.ai",
    "organization": "Storeware"
  },
  "version": "1",
  "documentationUrl": "https://storeware.ai/auth.md",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extensions": []
  },
  "securitySchemes": {
    "merchantKey": {
      "type": "http",
      "scheme": "bearer",
      "description": "A merchant key issued in the Storeware admin, or the token an agent receives by connecting through OAuth or registering itself (see auth.md). Read only unless the merchant allowed changes."
    },
    "oauth2": {
      "type": "oauth2",
      "description": "Storeware’s authorization server, for a host that can run the flow.",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://api.storeware.ai/api/mcp/oauth/authorize",
          "tokenUrl": "https://api.storeware.ai/api/mcp/oauth/token",
          "scopes": {}
        }
      }
    }
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "catalogue",
      "name": "Catalogue",
      "description": "Find products, read one in full, check catalogue quality and duplicates, read performance, and enrich a product’s copy and attributes.",
      "tags": [
        "search_products",
        "get_product",
        "catalogue_quality",
        "find_duplicates",
        "get_performance",
        "enrich_product"
      ]
    },
    {
      "id": "content",
      "name": "Pages and content",
      "description": "Find and read pages, policies and posts, draft and revise pages, arrange a page’s sections, adjust theme tokens, and audit search visibility.",
      "tags": [
        "find_content",
        "get_content",
        "get_storefront_layout",
        "list_shop_materials",
        "get_theme_tokens",
        "draft_lander",
        "draft_page",
        "revise_page",
        "arrange_page",
        "set_theme_tokens",
        "seo_audit"
      ]
    },
    {
      "id": "wholesale",
      "name": "Trade accounts",
      "description": "Read trade accounts and their terms, price lists and outstanding invoices, and set a company’s terms or a price list’s prices.",
      "tags": [
        "list_companies",
        "get_company",
        "set_company_terms",
        "list_price_lists",
        "get_price_list_prices",
        "set_price_list_prices",
        "list_outstanding_invoices"
      ]
    },
    {
      "id": "automations",
      "name": "Automations",
      "description": "Read the rules the shop runs by itself, check one, and draft or revise a rule. Arming a rule is done by the merchant in the admin.",
      "tags": [
        "list_automations",
        "get_automation_vocabulary",
        "check_automation",
        "draft_automation",
        "revise_automation"
      ]
    },
    {
      "id": "newsletters",
      "name": "Newsletters",
      "description": "Read the shop’s newsletters and what each led to, draft one and revise a draft. Sending a newsletter is done by the merchant in the admin.",
      "tags": [
        "list_mailings",
        "get_mailing",
        "draft_mailing",
        "revise_mailing"
      ]
    },
    {
      "id": "everyday-changes",
      "name": "Everyday changes",
      "description": "Add a product as a draft, and propose a price, a stock count, a discount code or delivery to somewhere new. Only the draft is written. A price, a count, a code and a delivery rate are put to the merchant, who applies them in the admin, and a delivery rate is read only from their own words.",
      "tags": [
        "draft_product",
        "propose_price_change",
        "propose_stock_count",
        "propose_discount",
        "propose_delivery"
      ]
    },
    {
      "id": "proposals",
      "name": "Proposals",
      "description": "Read what the shop proposed to itself from its own demand evidence, and apply a proposal the merchant agrees with.",
      "tags": [
        "list_proposals",
        "get_proposal",
        "apply_proposal"
      ]
    },
    {
      "id": "suppliers",
      "name": "Suppliers",
      "description": "Search a connected supplier’s catalogue for something the shop does not stock, and import a supplier product.",
      "tags": [
        "search_suppliers",
        "import_supplier_product"
      ]
    },
    {
      "id": "navigation-and-look",
      "name": "Navigation and look",
      "description": "Read and change where the logo and navigation sit, apply a style mood, list the shop’s styles and wear it in another one for nothing, manage menus and their links, and save or reuse a design.",
      "tags": [
        "get_shop_chrome",
        "set_shop_chrome",
        "apply_style_mood",
        "list_styles",
        "restyle_shop",
        "list_menus",
        "get_menu",
        "create_menu",
        "add_menu_link",
        "update_menu_link",
        "arrange_menu",
        "list_saved_designs",
        "save_design",
        "use_saved_design"
      ]
    },
    {
      "id": "conversion",
      "name": "Conversion",
      "description": "Read what is currently wrong with how the shop is arranged, from its own counted views and clicks, and apply a fix.",
      "tags": [
        "conversion_audit",
        "apply_conversion_fix"
      ]
    },
    {
      "id": "sight",
      "name": "Sight",
      "description": "Take a screenshot of one of the shop’s own pages, live or draft, on a phone and a desktop, and look at it.",
      "tags": [
        "look_at_page"
      ]
    },
    {
      "id": "runs",
      "name": "Background runs",
      "description": "Hand the shop a goal to work on in the background, which drafts and proposes but never publishes. The run is a task: follow it with GetTask and stop it with CancelTask.",
      "tags": [
        "start_run"
      ]
    },
    {
      "id": "evidence",
      "name": "What the shop knows",
      "description": "Read what shoppers asked for that the shop could not answer, which AI assistants sent buyers, what an assistant says about the shop, and where agents stopped.",
      "tags": [
        "get_demand_gaps",
        "list_unanswered_questions",
        "get_ai_referrals",
        "get_discovery_observations",
        "get_agent_traffic"
      ]
    },
    {
      "id": "records",
      "name": "Orders and customers",
      "description": "Read individual orders and customers, without addresses, phone numbers or payment details. Offered only where the shop has allowed it, and every record read is written to the shop’s audit log.",
      "tags": [
        "list_orders",
        "get_order",
        "list_customers",
        "get_customer"
      ]
    },
    {
      "id": "speed",
      "name": "Speed",
      "description": "Read how fast the shop is for its own shoppers: Core Web Vitals at the 75th percentile of real page views over 28 days, per phone and computer, with a verdict only once there are enough views.",
      "tags": [
        "get_shop_speed"
      ]
    },
    {
      "id": "order-actions",
      "name": "Order actions, drafted",
      "description": "Read what the shop is waiting on a person for (orders to send, returns to answer, invoices past their date), read a return against the shop’s own policy, ask the carriers what a postage label would cost, find orders by tag, payment, dates or where they came from, read what is running out and how many to reorder, and draft a despatch, a postage label, a refund, a cancellation, a note, a tag, a hold, a change to an order’s details, a customer’s note, a count of a product with options, a purchase order, a run over named orders, a decision on a return or an answer to a shopper’s message for a member of staff to confirm in the admin. Read the messages shoppers wrote to the shop. Nothing is done until a person confirms it there, and no agent can confirm one.",
      "tags": [
        "stage_order_action",
        "list_staged_actions",
        "get_ops_queue",
        "review_return",
        "stage_return_action",
        "get_label_rates",
        "find_orders",
        "get_reorder_list",
        "stage_order_tags",
        "stage_order_hold",
        "stage_order_details",
        "stage_customer_note",
        "stage_stock_counts",
        "stage_purchase_order",
        "stage_ops_run",
        "list_messages",
        "stage_reply"
      ]
    },
    {
      "id": "domains",
      "name": "Domains",
      "description": "Connect a domain of the merchant’s own and check whether it is set up: each DNS record to create and whether public DNS shows it yet, what is in the way, and who hosts the domain’s DNS with that host’s own steps. Only the merchant can change their DNS.",
      "tags": [
        "check_domain",
        "connect_domain"
      ]
    },
    {
      "id": "app-store",
      "name": "Finding apps",
      "description": "Look in the App Store for apps that do a job the merchant describes, by meaning, each with the link to its permissions screen where the merchant decides. Never installs an app. A need no app meets yet is counted for developers with no name or shop on it.",
      "tags": [
        "find_apps",
        "ask_for_an_app"
      ]
    },
    {
      "id": "setup",
      "name": "Setting the shop up",
      "description": "Say whether a shopper could buy yet and what is left, start a build from the merchant’s own description and follow it, and move an existing WooCommerce shop or Shopify exports in. Payments and opening the shop stay with the merchant, in the admin.",
      "tags": [
        "get_readiness",
        "start_build",
        "build_status",
        "start_migration",
        "migration_status"
      ]
    },
    {
      "id": "keys",
      "name": "Keys for helpers",
      "description": "Mint a key for a helper agent that holds part of this key’s reach and never more: fewer scopes, writes only if this key may, ending no later, and sharing this key’s requests a minute. It stops when this key does, and the merchant can revoke it on the Agents screen.",
      "tags": [
        "mint_key"
      ]
    }
  ]
}