{
  "data": {
    "a": {
      "slug": "doola-mcp",
      "name": "doola MCP",
      "vendor": "doola",
      "vendorUrl": "https://doola.com",
      "kind": "mcp",
      "category": "commerce",
      "summary": "doola's hosted MCP server lets an agent form a US LLC or C-Corp in any state or DC from a conversation, covering entity type, name, members, ownership and the state filing, and check on existing doola companies.",
      "url": "https://www.anchorterminal.com/tools/doola-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/doola-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/doola-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/doola-mcp.json",
      "dns": "doola-mcp.grade.anchorterminal.com",
      "repo": "https://github.com/doolahq/plugins",
      "license": "Proprietary service. The plugin repository's MIT licence covers the manifests",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.doola.com",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth with a doola account on the first tool call; tokens are held by the client and can be revoked in doola's account settings.",
      "pricing": "paid",
      "pricingNotes": "Formation plans from $297 a year plus state fees (renewing at $300), up to $1,999 a year plus state fees. The MCP server itself is free to connect (checked 2026-11-07).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the MCP docs or pricing page (checked 2026-11-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-07"
      },
      "docsUrl": "https://doola.com",
      "registryName": "io.github.doolahq/doola",
      "capabilities": [
        "legal.company-formation",
        "commerce.checkout"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "remote-mcp",
        "oauth",
        "paid",
        "mcp-registry"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 28,
        "grade": "F",
        "agentReady": false,
        "rank": 1430,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 20,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 23,
          "maintenance": 70,
          "payments": 10,
          "reliability": 15,
          "schema": 26,
          "security": 36,
          "transparency": 38
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-07"
        },
        "negative": 0,
        "verdict": "doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.",
        "bestFor": "Founders, including non-US founders, who want an agent to form a US company for them.",
        "strengths": [
          "Forms a US LLC or C-Corp in any state from a conversation",
          "OAuth with revocation in account settings",
          "Plugins for Claude Code, Grok Build and Cursor",
          "Official registry entry and a public plugin repository"
        ],
        "weaknesses": [
          "No published tool list, schemas or errors",
          "No documented confirmation before a paid filing",
          "No free tier; formation from $297 a year plus state fees",
          "Status page unreachable and no llms.txt"
        ],
        "agentNotes": [
          "Confirm the entity type, state, name, members and price with the user before filing",
          "A filing is a paid legal act; never retry one without checking its status first",
          "Use the status tools on existing companies before starting a new formation"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 28
          }
        ],
        "editorialScores": {
          "ergonomics": 23,
          "maintenance": 70,
          "payments": 10,
          "reliability": 15,
          "schema": 26,
          "security": 36,
          "transparency": 30
        },
        "provenanceScore": 46,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-07",
            "maintenance": "2026-11-07",
            "payments": "2026-11-07",
            "reliability": "2026-11-07",
            "schema": "2026-11-07",
            "security": "2026-11-07",
            "transparency": "2026-11-07"
          },
          "last": "2026-11-07",
          "oldest": "2026-11-07",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude plugin marketplace add doolahq/plugins \u0026\u0026 claude plugin install doola@doola",
        "config": {
          "mcpServers": {
            "doola": {
              "url": "https://mcp.doola.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/legal.company-formation",
        "tool": "https://letme.dev/doola-mcp"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "doola",
        "domain": "doola.com",
        "domainRegistered": "",
        "domainNote": "Not looked up: RDAP isn't requested under the 1 November 2026 rules.",
        "endpointOnVendorDomain": true,
        "terms": "https://doola.com/terms-of-service",
        "privacy": "https://doola.com/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-07",
        "notes": [
          "Terms last updated July 2026. The plugin repository's licence names doola."
        ],
        "score": 46
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/doola-mcp.json",
      "live": {
        "slug": "doola-mcp",
        "probe": {
          "target": "https://mcp.doola.com",
          "method": "mcp-initialize",
          "lastAt": "2026-11-08T00:55:37.012153631Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 176,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 113,
          "p95ms24h": 201,
          "samples24h": 63,
          "samples30d": 63,
          "days": [
            {
              "date": "2026-11-07",
              "probes": 53,
              "ok": 53
            },
            {
              "date": "2026-11-08",
              "probes": 10,
              "ok": 10
            }
          ]
        },
        "githubStars": 0,
        "updatedAt": "2026-11-08T00:55:37.012153631Z"
      }
    },
    "answer": "Saleor API + MCP scores 73.6 (BB) on agent readiness against doola MCP's 28 (F), and leads in every scored category.",
    "b": {
      "slug": "saleor",
      "name": "Saleor API + MCP",
      "vendor": "Saleor",
      "vendorUrl": "https://saleor.io",
      "kind": "http-api",
      "category": "commerce",
      "summary": "Open-source headless commerce with a single GraphQL API for products, channels, checkouts, orders and customers, self-hosted or on Saleor Cloud.",
      "url": "https://www.anchorterminal.com/tools/saleor",
      "markdownUrl": "https://www.anchorterminal.com/tools/saleor.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/saleor.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/saleor.json",
      "dns": "saleor.grade.anchorterminal.com",
      "repo": "https://github.com/saleor/saleor",
      "license": "BSD-3-Clause",
      "transports": [
        "http",
        "streamable-http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@saleor/app-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Public channel queries such as products need no token. Staff users get a JWT from tokenCreate, and apps get an app token limited to the permissions they request, such as MANAGE_PRODUCTS and MANAGE_ORDERS. The MCP server takes the Saleor API URL and a token in the X-Saleor-API-URL and X-Saleor-Auth-Token headers.",
      "pricing": "freemium",
      "pricingNotes": "Self-hosting the BSD core is free. Saleor Cloud sandboxes are free for non-commercial use. Select $1,599 a month up to $200,000 GMV a month with 0.8% above it, Volume $3,999 a month up to $1,000,000 with 0.4% above it, Enterprise negotiated down to 0.2%. Optional onboarding add-ons at $6,000 and $12,000 one-time, credited back over the first year (https://saleor.io/pricing).",
      "priceSummary": "$1599 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402. Payments go through payment apps such as Stripe or Adyen.",
        "endpoints": []
      },
      "toolCount": 8,
      "popularity": {
        "githubStars": 23397,
        "npmWeekly": 7310,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.saleor.io",
      "llmsTxt": "https://docs.saleor.io/llms.txt",
      "capabilities": [
        "commerce.products",
        "commerce.cart",
        "commerce.checkout",
        "commerce.orders",
        "commerce.headless"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "hosted",
        "mcp",
        "llms-txt",
        "python",
        "webhooks",
        "read-only-mode",
        "freemium"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 106,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 86,
          "maintenance": 85,
          "payments": 45,
          "reliability": 75,
          "schema": 89,
          "security": 71,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -2,
        "negativeNotes": [
          "Two high-severity advisories in the last 12 months touched customer data, an IDOR in the GraphQL API published 23 January 2026 (GHSA-r6fj-f4r9-36gr) and account pre-hijacking through an unverified anonymous order merge published 27 July 2026 (GHSA-6whj-8p3f-2xqp). Both were fixed and disclosed in public, so the deduction is small (https://github.com/saleor/saleor/security/advisories)."
        ],
        "verdict": "One GraphQL schema with 78 typed error-code enums and 464 marked deprecations. The MCP server can't create checkouts or orders.",
        "bestFor": "Teams that want an open-source GraphQL backend with multi-channel pricing and an agent that reads store data safely.",
        "strengths": [
          "One GraphQL schema with 78 typed error-code enums and 464 marked deprecations",
          "BSD-3-Clause core, self-host or run on Saleor Cloud",
          "Official MCP server with 8 tools, all read-only, 7 with readOnlyHint and idempotentHint",
          "Twenty-two 3.23 patch releases between 4 August and 28 October 2026",
          "Security advisories published through GitHub, and SOC 2 and PCI DSS claimed for Cloud"
        ],
        "weaknesses": [
          "The MCP server can't create checkouts or orders",
          "The hosted MCP at mcp.saleor.app only connects to saleor.cloud stores on 3.21 or later",
          "Cloud starts at $1,599 a month, and free sandboxes are non-commercial only",
          "No SLA, production has no published request rate, and no Retry-After is documented",
          "Self-hosted servers send usage telemetry by default"
        ],
        "agentNotes": [
          "Pass the channel slug on product and checkout queries. Prices and availability are per channel",
          "Send X-Saleor-API-URL and X-Saleor-Auth-Token on every MCP request, with a token holding MANAGE_PRODUCTS and MANAGE_ORDERS",
          "Read the `errors` array in every mutation payload. A 200 response can still carry a CheckoutErrorCode",
          "Keep queries under the 50,000 complexity cap and 100 items a page, and send at most 4 mutations per request",
          "The 3.24 changelog removes the old dummy payment plugins, so test checkouts should use a payment app",
          "On a sandbox stay under 120 requests a minute (2,000 on paid plans), and retry an HTTP 429 with backoff"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.6
          }
        ],
        "editorialScores": {
          "ergonomics": 86,
          "maintenance": 85,
          "payments": 45,
          "reliability": 75,
          "schema": 89,
          "security": 71,
          "transparency": 83
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST \"https://\u003cyour-env\u003e.saleor.cloud/graphql/\" -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"{ products(first: 5, channel: \\\"default-channel\\\") { edges { node { id name } } } }\"}'",
        "claudeCode": "claude mcp add --transport http saleor https://mcp.saleor.app/mcp --header \"X-Saleor-API-URL: https://\u003cyour-env\u003e.saleor.cloud/graphql/\" --header \"X-Saleor-Auth-Token: $SALEOR_TOKEN\"",
        "config": {
          "mcpServers": {
            "saleor": {
              "headers": {
                "X-Saleor-API-URL": "https://\u003cyour-env\u003e.saleor.cloud/graphql/",
                "X-Saleor-Auth-Token": "${SALEOR_TOKEN}"
              },
              "type": "streamable-http",
              "url": "https://mcp.saleor.app/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/commerce.products",
        "tool": "https://letme.dev/saleor"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Cloud Select",
          "unit": "month",
          "usd": 1599,
          "note": "up to $200,000 GMV a month"
        },
        {
          "item": "Select GMV overage",
          "unit": "pct",
          "usd": 0.8,
          "note": "on orders above the GMV cap"
        },
        {
          "item": "Cloud Volume",
          "unit": "month",
          "usd": 3999,
          "note": "up to $1,000,000 GMV a month"
        },
        {
          "item": "Volume GMV overage",
          "unit": "pct",
          "usd": 0.4,
          "note": "on orders above the GMV cap"
        },
        {
          "item": "Self-hosted",
          "unit": "month",
          "usd": 0,
          "note": "BSD core, you pay for your own servers"
        }
      ],
      "provenance": {
        "legalEntity": "Saleor Commerce sp. z o.o.",
        "domain": "saleor.io",
        "domainRegistered": "2018-12-28",
        "domainNote": "Saleor's code dates from 2013; saleor.io was registered in 2018.",
        "endpointOnVendorDomain": false,
        "terms": "https://saleor.io/legal/terms",
        "privacy": "https://saleor.io/legal/privacy",
        "statusPage": "https://status.saleor.io",
        "changelog": "https://github.com/saleor/saleor/releases",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Cloud APIs run on saleor.cloud and the hosted MCP on saleor.app, not on saleor.io"
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/saleor.json",
      "live": {
        "slug": "saleor",
        "vendorStatus": {
          "page": "https://status.saleor.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-08T00:55:32.3963789Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "saleor/saleor",
            "version": "3.23.47",
            "released": "2026-11-03",
            "seenAt": "2026-11-07T00:02:44.140380485Z"
          },
          {
            "registry": "npm",
            "name": "@saleor/app-sdk",
            "version": "1.17.0",
            "seenAt": "2026-11-07T00:02:43.175252541Z"
          }
        ],
        "githubStars": 23515,
        "npmWeekly": 10263,
        "securityTxt": {
          "url": "https://saleor.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:16.429540699Z"
        },
        "llmsTxt": {
          "url": "https://docs.saleor.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:51.816714387Z"
        },
        "domain": {
          "domain": "saleor.io",
          "checkedAt": "2026-11-01T14:13:44.582443437Z"
        },
        "pages": [
          {
            "url": "https://saleor.io/blog/google-merchant-center-app",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-11-07T14:18:52.191631201Z",
            "changedAt": "2026-11-05T13:03:20.481566544Z",
            "fingerprint": "424a293f3c71"
          },
          {
            "url": "https://saleor.io/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:18:58.392906867Z",
            "changedAt": "2026-11-05T13:03:26.931398804Z",
            "fingerprint": "05b2eb91fcb9"
          },
          {
            "url": "https://saleor.io/legal/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:18:54.405812839Z",
            "changedAt": "2026-11-05T13:03:22.665267731Z",
            "fingerprint": "68ef2027c3ee"
          },
          {
            "url": "https://saleor.io/legal/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:18:56.372299285Z",
            "changedAt": "2026-11-05T13:03:24.753135852Z",
            "fingerprint": "b6ff892dd0ff"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.saleor.app/mcp",
          "checkedAt": "2026-11-07T01:47:30.138222545Z",
          "status": "ok",
          "note": "answered without the initialize handshake",
          "tools": [
            {
              "name": "channels",
              "title": "Fetch channels",
              "description": "Fetch the list of channels from Saleor.\n\nThis tools retrieves the list of channels. For each channel it returns information\nsuch as: ID, name, slug, currency code, default country, whether the channel is\nactive, and the list of warehouses.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch channels"
              }
            },
            {
              "name": "customers",
              "title": "Fetch customers",
              "description": "Fetch list of customers from Saleor GraphQL API.\n\nThis tool retrieves customer information such as: ID, active status, language code,\nlast login, date joined, and default shipping/billing address country.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "after": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cursor for pagination - fetch customers after this cursor"
                  },
                  "filter": {
                    "anyOf": [
                      {
                        "properties": {
                          "dateJoined": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "updatedAt": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          }
                        },
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Filter customers by specific criteria"
                  },
                  "first": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": 100,
                    "description": "Number of customers to fetch (max 100 per request)"
                  },
                  "sort_by": {
                    "anyOf": [
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "ASC",
                              "DESC"
                            ],
                            "type": "string"
                          },
                          "field": {
                            "enum": [
                              "FIRST_NAME",
                              "LAST_NAME",
                              "EMAIL",
                              "ORDER_COUNT",
                              "CREATED_AT",
                              "LAST_MODIFIED_AT"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "direction",
                          "field"
                        ],
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Sort customers by specific field"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch customers"
              }
            },
            {
              "name": "orders",
              "title": "Fetch orders",
              "description": "Fetch list of orders from Saleor GraphQL API.\n\nThis tool retrieves the list of orders. For each order it returns information such\nas: ID, number, status, creation date, last update date, payment status, total\namount, shipping and billing address country, order lines which include:\nquantity, product SKU, variant name, product ID, product name, unit price.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "after": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cursor for pagination - fetch orders after this cursor"
                  },
                  "filter": {
                    "anyOf": [
                      {
                        "properties": {
                          "created": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "search": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "updatedAt": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          }
                        },
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Filter and search orders by specific criteria"
                  },
                  "first": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": 100,
                    "description": "Number of orders to fetch (max 100 per request)"
                  },
                  "sort_by": {
                    "anyOf": [
                      {
                        "properties": {
                          "direction": {
                            "enum": [
                              "ASC",
                              "DESC"
                            ],
                            "type": "string"
                          },
                          "field": {
                            "enum": [
                              "NUMBER",
                              "RANK",
                              "CREATION_DATE",
                              "CREATED_AT",
                              "LAST_MODIFIED_AT",
                              "CUSTOMER",
                              "PAYMENT",
                              "FULFILLMENT_STATUS"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "direction",
                          "field"
                        ],
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Sort orders by specific field"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch orders"
              }
            },
            {
              "name": "order_count",
              "title": "Fetch orders count",
              "description": "Fetch total count of orders from Saleor GraphQL API.\n\nThis tool retrieves the total count of orders based on the provided filter criteria.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "filter": {
                    "anyOf": [
                      {
                        "properties": {
                          "created": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "search": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "updatedAt": {
                            "anyOf": [
                              {
                                "properties": {
                                  "gte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  },
                                  "lte": {
                                    "anyOf": [
                                      {},
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "default": null
                                  }
                                },
                                "type": "object"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          }
                        },
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Filter and search orders by specific criteria"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch orders count"
              }
            },
            {
              "name": "products",
              "title": "Fetch products",
              "description": "Fetch list of products from Saleor GraphQL API.\n\nThis tool retrieves product information such as: ID, name, slug, external reference,\nproduct type, category, date of creation, date of last update, and pricing.\n\nProducts are channel-aware, meaning that their availability and pricing can vary\nbased on the specified channel. If a channel is provided, the tool will fetch\nproduct data specific to that channel. Otherwise, it will return general product\ndata.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "after": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cursor for pagination - fetch products after this cursor"
                  },
                  "channel": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Slug of a channel for which the data should be returned. If not provided, general product data is returned."
                  },
                  "first": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": 100,
                    "description": "Number of products to fetch (max 100 per request)"
                  },
                  "search": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Search products with full-text search"
                  },
                  "sort_by": {
                    "anyOf": [
                      {
                        "properties": {
                          "attributeId": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "channel": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "direction": {
                            "enum": [
                              "ASC",
                              "DESC"
                            ],
                            "type": "string"
                          },
                          "field": {
                            "anyOf": [
                              {
                                "enum": [
                                  "NAME",
                                  "RANK",
                                  "PRICE",
                                  "MINIMAL_PRICE",
                                  "LAST_MODIFIED",
                                  "DATE",
                                  "TYPE",
                                  "PUBLISHED",
                                  "PUBLICATION_DATE",
                                  "PUBLISHED_AT",
                                  "LAST_MODIFIED_AT",
                                  "COLLECTION",
                                  "RATING",
                                  "CREATED_AT"
                                ],
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          }
                        },
                        "required": [
                          "direction"
                        ],
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Sort products by specific field"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch products"
              }
            },
            {
              "name": "stocks",
              "title": "Fetch stocks",
              "description": "Fetch list of stocks from Saleor GraphQL API.\n\nThis tool retrieves stock information such as: ID, quantity, allocated quantity,\nwarehouse information, and associated product variant details.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "after": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cursor for pagination - fetch stocks after this cursor"
                  },
                  "filter": {
                    "anyOf": [
                      {
                        "properties": {
                          "quantity": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "search": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          }
                        },
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Filter stocks by specific criteria"
                  },
                  "first": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": 100,
                    "description": "Number of stocks to fetch (max 100 per request)"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch stocks"
              }
            },
            {
              "name": "warehouse_details",
              "title": "Fetch warehouse details",
              "description": "Fetch warehouse details from Saleor GraphQL API.\n\nThis tool retrieves detailed warehouse information including: ID, name, slug,\naddress details, click and collect options, associated shipping zones with\ntheir channels and countries, and metadata.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "ID of the warehouse to fetch details for"
                  }
                },
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Fetch warehouse details"
              }
            },
            {
              "name": "current_domain",
              "description": "Return the current domain of the connected Saleor instance.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              }
            }
          ],
          "schemaTokens": 2351,
          "changedAt": "2026-11-07T01:47:30.138222545Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 2351,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 2
            },
            "findings": [
              {
                "rule": "TC16",
                "severity": "warn",
                "tool": "current_domain",
                "message": "no readOnlyHint or destructiveHint",
                "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
              },
              {
                "rule": "TC18",
                "severity": "warn",
                "tool": "order_count",
                "message": "readOnlyHint is true but the name says \"order\"",
                "fix": "If it changes anything, readOnlyHint must be false."
              }
            ]
          }
        },
        "github": {
          "repo": "saleor/saleor",
          "checkedAt": "2026-11-02T09:23:19.779125562Z",
          "stars": 23500,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T07:55:17Z",
          "openIssues": 202,
          "openPRs": 103,
          "issuesOpened90d": 21,
          "issuesClosed90d": 11,
          "prsMerged90d": 259,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-11-02T07:48:32Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-xqqq-qhgq-gx53",
              "cve": "CVE-2026-48744",
              "severity": "medium",
              "published": "2026-07-27T12:38:41Z"
            },
            {
              "ghsa": "GHSA-6whj-8p3f-2xqp",
              "cve": "CVE-2026-44472",
              "severity": "high",
              "published": "2026-07-27T12:38:11Z"
            },
            {
              "ghsa": "GHSA-24jw-f244-qfpp",
              "cve": "CVE-2026-33756",
              "severity": "high",
              "published": "2026-04-08T12:56:56Z"
            },
            {
              "ghsa": "GHSA-gqqv-xwx3-jj4h",
              "cve": "CVE-2026-35401",
              "severity": "high",
              "published": "2026-04-08T12:56:37Z"
            },
            {
              "ghsa": "GHSA-hwph-9537-mc3p",
              "cve": "CVE-2026-35407",
              "severity": "medium",
              "published": "2026-04-08T12:56:35Z"
            },
            {
              "ghsa": "GHSA-m3rm-m4vq-27x7",
              "cve": "CVE-2026-39851",
              "severity": "medium",
              "published": "2026-04-08T12:56:33Z"
            },
            {
              "ghsa": "GHSA-r6fj-f4r9-36gr",
              "cve": "CVE-2026-24136",
              "severity": "high",
              "published": "2026-01-23T11:22:51Z"
            },
            {
              "ghsa": "GHSA-666h-2p49-pg95",
              "cve": "CVE-2026-23499",
              "severity": "high",
              "published": "2026-01-21T12:36:17Z"
            },
            {
              "ghsa": "GHSA-8jcj-r5g2-qrpv",
              "cve": "CVE-2026-22849",
              "severity": "high",
              "published": "2026-01-21T12:36:14Z"
            },
            {
              "ghsa": "GHSA-8w67-mfm5-fwx5",
              "cve": "CVE-2025-58442",
              "severity": "medium",
              "published": "2025-09-09T11:17:34Z"
            },
            {
              "ghsa": "GHSA-ff69-fwjf-3c9w",
              "cve": "CVE-2024-31205",
              "severity": "medium",
              "published": "2024-04-08T13:05:30Z"
            },
            {
              "ghsa": "GHSA-mrj3-f2h4-7w45",
              "cve": "CVE-2024-29888",
              "severity": "medium",
              "published": "2024-03-27T13:46:01Z"
            },
            {
              "ghsa": "GHSA-3rqj-9v87-2x3f",
              "cve": "CVE-2023-32694",
              "severity": "medium",
              "published": "2023-05-24T12:03:28Z"
            },
            {
              "ghsa": "GHSA-r8qr-wwg3-2r85",
              "cve": "CVE-2023-26051",
              "severity": "medium",
              "published": "2023-03-02T12:16:10Z"
            },
            {
              "ghsa": "GHSA-3hvj-3cg9-v242",
              "cve": "CVE-2023-26052",
              "severity": "low",
              "published": "2023-03-02T12:03:03Z"
            },
            {
              "ghsa": "GHSA-xhq8-8c5v-w8ff",
              "cve": "CVE-2022-39275",
              "severity": "medium",
              "published": "2022-10-03T12:05:35Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 16,
            "medianDays": 4.9
          }
        },
        "updatedAt": "2026-11-08T00:55:32.3963789Z"
      }
    },
    "edges": [
      {
        "by": 63,
        "category": "schema",
        "leads": "saleor",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No tool list or schemas published; tools not read without sign-in (10 of 25). No llms.txt found (0). The README describes the flow, not the tools (5 of 20). Inputs not verifiable (3 of 15). Install examples only (3 of 15). Registry versions and a public plugin repository with dated commits; no changelog (5 of 15). 10 + 0 + 5 + 3 + 3 + 5 = 26.",
          "b": "One GraphQL schema with introspection, and a 954 KB SDL copy in the MCP repo (25). llms.txt split into per-section indexes (10). Fields and mutations carry descriptions, doc categories and deprecation reasons, but rarely say when not to use them (13). Strict GraphQL types with 78 error-code enums and required markers (14). Typed error codes on every mutation payload, with examples in the docs (12). CHANGELOG with a breaking changes section per minor version, GitHub releases, and 464 `@deprecated` markers in the schema (15)."
        },
        "scores": {
          "a": 26,
          "b": 89
        }
      },
      {
        "by": 63,
        "category": "ergonomics",
        "leads": "saleor",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Tool count not published (5). Nothing on paging or output size (5 of 20). No documented errors (0). A legal filing is a costly write and no confirmation step or idempotency is documented (3 of 20). Plugins for Claude Code, Grok Build and Cursor and one URL (10 of 15). 5 + 5 + 0 + 3 + 10 = 23.",
          "b": "GraphQL field selection sizes every response, and the MCP server has 8 compact tools (25). Cursor pagination capped at 100, with `filter`, `where`, `search` and sort inputs (20). Mutations return typed `errors` with a code, field and message (18). Payment transaction mutations take an `idempotencyKey`, and 7 of the 8 MCP tools declare readOnlyHint and idempotentHint (the eighth only returns the API URL) (15). MCP tools default to 100 items and need only a channel. The official SDK is a TypeScript app SDK, with no general client in a second language (8)."
        },
        "scores": {
          "a": 23,
          "b": 86
        }
      },
      {
        "by": 60,
        "category": "reliability",
        "leads": "saleor",
        "name": "Reliability",
        "reasons": {
          "a": "status.doola.com wasn't reachable (0). No history (5). No rate limits found (0). No retry or idempotency guidance for filings (0). No SLA found (0). Not labelled beta (10). 0 + 5 + 0 + 0 + 0 + 10 = 15.",
          "b": "Graded on Saleor Cloud. Status page at status.saleor.io with an incident feed and history (20). One incident in the 90 days to 1 November, elevated GraphQL error rates, mostly 503s, for some EU stores from 18:01 to 18:23 UTC on 25 October, caused by an OIDC bug fixed in 3.23.45. Partial and 22 minutes, so minor (20). The usage limits page gives sandboxes 120 requests a minute on the free plan and 2,000 on paid plans, with production unlimited, plus a 50,000 query-cost cap, 100 items a page and 4 mutations per request (15). Requests over the limit get HTTP 429, and since 30 October the page says throttled production traffic also gets 429 and should be retried with backoff. Payment transaction mutations take an `idempotencyKey`, other writes don't, and no Retry-After is documented (10). No SLA on the pricing page (0). Generally available (10)."
        },
        "scores": {
          "a": 15,
          "b": 75
        }
      },
      {
        "by": 38,
        "category": "transparency",
        "leads": "saleor",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Plugin repository MIT (copyright 2026 doola); service closed under terms updated July 2026 (15). Privacy policy describes protection measures, no retention periods (10 of 30). No deprecation policy (0). Subprocessors not found (5 of 20). 15 + 10 + 0 + 5 = 30.",
          "b": "BSD-3-Clause core, with the MCP server under AGPL-3.0 (30). Privacy policy updated 8 August 2025 names Saleor Commerce sp. z o.o. in Wrocław, links a subprocessor list and states 30 days for cookies, but no DPA is linked from it and other retention is \"not longer than necessary\" (20). Deprecations are marked in the schema and removed in a named later version, with upgrade guides, but notices carry versions rather than dates (15). Self-hosted servers send daily usage telemetry by default (counts of products, attributes and models, plus version), described on a Usage Telemetry docs page and turned off with SEND_USAGE_TELEMETRY=False. Cloud subprocessors are listed (18)."
        },
        "scores": {
          "a": 38,
          "b": 76
        }
      },
      {
        "by": 35,
        "category": "security",
        "leads": "saleor",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth with revocation; scopes not published (20 of 30). No read-only mode; no documented confirmation before a filing (3 of 20). Inputs are the user's own details (10). No audit log found (0). No security.txt or programme found (3 of 20). 20 + 3 + 10 + 0 + 3 = 36.",
          "b": "App tokens limited to named permissions such as MANAGE_PRODUCTS and MANAGE_ORDERS, revocable through the API, and short-lived staff JWTs with refresh. Tokens travel in headers, never the URL (27). The MCP server never runs mutations, and a self-run copy can pin allowed API domains with ALLOWED_DOMAIN_PATTERN (16). Tools return merchant- and shopper-entered text, marked openWorldHint, with no prompt-injection guidance found (5). Observability webhooks can report API calls, but no operator audit log of who did what was found (8). SECURITY.md routes reports through GitHub advisories or security@saleor.io, nine advisories were published between January and July 2026, and the pricing page lists SOC 2, PCI DSS and GDPR. No security.txt and no bounty (15)."
        },
        "scores": {
          "a": 36,
          "b": 71
        }
      },
      {
        "by": 35,
        "category": "payments",
        "leads": "saleor",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No machine payment protocol (0). Plan prices public (10). No free tier (0). A person signs up and approves OAuth (0). 0 + 10 + 0 + 0 = 10.",
          "b": "No x402, MPP or L402 (0). Cloud plans are public, Select $1,599 a month to $200,000 GMV and Volume $3,999 to $1,000,000, with 0.8% and 0.4% overage, but there's no per-call or per-unit price (10). The BSD core is free to self-host, and Cloud sandboxes are free for non-commercial use with no card mentioned (20). An agent can run the core from the Docker image with no account, but Cloud needs a browser signup (15)."
        },
        "scores": {
          "a": 10,
          "b": 45
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "doola",
        "b": "Saleor",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.doola.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service. The plugin repository's MIT licence covers the manifests",
        "b": "BSD-3-Clause",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "8",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.doolahq/doola",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "none",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "not read yet",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "not read yet",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "23k stars, 7.3k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Saleor API + MCP scores 73.6 (BB) on agent readiness against doola MCP's 28 (F), and leads in every scored category.",
        "question": "Which is better for AI agents, doola MCP or Saleor API + MCP?"
      },
      {
        "answer": "doola MCP uses an OAuth sign-in. Saleor API + MCP takes an API key or an OAuth sign-in.",
        "question": "Do doola MCP and Saleor API + MCP need an API key?"
      },
      {
        "answer": "doola MCP has a hosted endpoint at https://mcp.doola.com. No hosted endpoint is listed for Saleor API + MCP.",
        "question": "Can an agent call doola MCP and Saleor API + MCP without installing anything?"
      },
      {
        "answer": "No open-source release is listed for doola MCP. Saleor API + MCP is open source (BSD-3-Clause).",
        "question": "Are doola MCP and Saleor API + MCP open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Founders, including non-US founders, who want an agent to form a US company for them.",
        "slug": "doola-mcp",
        "watchFor": "No published tool list, schemas or errors"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 15",
          "Schema \u0026 documentation, 89 against 26",
          "Agent ergonomics, 86 against 23",
          "Security \u0026 auth, 71 against 36",
          "Payments \u0026 pricing, 45 against 10",
          "Maintenance \u0026 community, 85 against 70",
          "Transparency \u0026 trust, 76 against 38"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Open source"
        ],
        "goodFor": "Teams that want an open-source GraphQL backend with multi-channel pricing and an agent that reads store data safely.",
        "slug": "saleor",
        "watchFor": "The MCP server can't create checkouts or orders"
      }
    ],
    "history": {
      "doola-mcp": null,
      "saleor": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-01",
          "delta": 5,
          "from": 68.6,
          "fromGrade": "B",
          "to": 73.6,
          "toGrade": "BB"
        },
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": -0.2,
          "from": 68.8,
          "fromGrade": "B",
          "to": 68.6,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.2,
          "from": 68.6,
          "fromGrade": "B",
          "to": 68.8,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "commerce.checkout",
      "name": "Commerce checkout"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-commerce-vs-saleor.json",
        "title": "Adobe Commerce (Magento) vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-commerce-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentzon-vs-saleor.json",
        "title": "Agentzon vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/agentzon-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bigcommerce-vs-saleor.json",
        "title": "BigCommerce API + MCP vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/bigcommerce-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commerce-layer-vs-saleor.json",
        "title": "Commerce Layer API + MCP vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/commerce-layer-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commercetools-vs-saleor.json",
        "title": "commercetools vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/commercetools-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ecwid-vs-saleor.json",
        "title": "Ecwid by Lightspeed vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/ecwid-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/elastic-path-vs-saleor.json",
        "title": "Elastic Path API + MCP vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/elastic-path-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medusa-vs-saleor.json",
        "title": "Medusa API + MCP vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/medusa-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-shopify.json",
        "title": "Saleor API + MCP vs Shopify API + MCP",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-shopify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-shopware.json",
        "title": "Saleor API + MCP vs Shopware",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-shopware"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-snipcart.json",
        "title": "Saleor API + MCP vs Snipcart API + MCP",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-snipcart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-spree-commerce.json",
        "title": "Saleor API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-spree-commerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-square.json",
        "title": "Saleor API + MCP vs Square",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-square"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-swell.json",
        "title": "Saleor API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-vendure.json",
        "title": "Saleor API + MCP vs Vendure",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-vendure"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-wix.json",
        "title": "Saleor API + MCP vs Wix Stores and eCommerce API",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-wix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-woocommerce.json",
        "title": "Saleor API + MCP vs WooCommerce API + MCP",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-woocommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp.json",
        "title": "Adobe Commerce (Magento) vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp.json",
        "title": "Agentzon vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp.json",
        "title": "BigCommerce API + MCP vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp.json",
        "title": "Commerce Layer API + MCP vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp.json",
        "title": "commercetools vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path.json",
        "title": "doola MCP vs Elastic Path API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-fabric.json",
        "title": "doola MCP vs Fabric",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-fabric"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-medusa.json",
        "title": "doola MCP vs Medusa API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-medusa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopify.json",
        "title": "doola MCP vs Shopify API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopware.json",
        "title": "doola MCP vs Shopware",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopware"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart.json",
        "title": "doola MCP vs Snipcart API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce.json",
        "title": "doola MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-square.json",
        "title": "doola MCP vs Square",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-square"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell.json",
        "title": "doola MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-vendure.json",
        "title": "doola MCP vs Vendure",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-vendure"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-wix.json",
        "title": "doola MCP vs Wix Stores and eCommerce API",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-wix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce.json",
        "title": "doola MCP vs WooCommerce API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fabric-vs-saleor.json",
        "title": "Fabric vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/fabric-vs-saleor"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 60,
        "doola-mcp": 15,
        "edge": "saleor",
        "key": "reliability",
        "name": "Reliability",
        "saleor": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 63,
        "doola-mcp": 26,
        "edge": "saleor",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "saleor": 89,
        "weight": 13
      },
      {
        "by": 63,
        "doola-mcp": 23,
        "edge": "saleor",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "saleor": 86,
        "weight": 13
      },
      {
        "by": 35,
        "doola-mcp": 36,
        "edge": "saleor",
        "key": "security",
        "name": "Security \u0026 auth",
        "saleor": 71,
        "weight": 14
      },
      {
        "by": 35,
        "doola-mcp": 10,
        "edge": "saleor",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "saleor": 45,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 15,
        "doola-mcp": 70,
        "edge": "saleor",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "saleor": 85,
        "weight": 7
      },
      {
        "by": 38,
        "doola-mcp": 38,
        "edge": "saleor",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "saleor": 76,
        "weight": 7
      }
    ],
    "summary": "Saleor API + MCP scores 73.6 (BB) on agent readiness against doola MCP's 28 (F), and leads in every scored category. Both do commerce checkout.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "doola-mcp": "doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.",
      "saleor": "One GraphQL schema with 78 typed error-code enums and 464 marked deprecations. The MCP server can't create checkouts or orders."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor",
    "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.min.md"
  },
  "markdown": "Saleor API + MCP scores 73.6 (BB) on agent readiness against doola MCP's 28 (F), and leads in every scored category. Both do commerce checkout.\n\n- doola MCP: grade F, 28/100, rank #1430 of 1510. Markdown https://www.anchorterminal.com/tools/doola-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/doola-mcp.json\n- Saleor API + MCP: grade BB, 73.6/100, rank #106 of 1510. Markdown https://www.anchorterminal.com/tools/saleor.md · JSON https://www.anchorterminal.com/api/v1/tools/saleor.json\n- Best commerce platforms and checkout APIs for AI agents: https://www.anchorterminal.com/best/commerce/index.md\n- All 189 commerce comparisons: https://www.anchorterminal.com/compare/commerce/index.md\n\n## Which one, for what\n\n### doola MCP (F)\n\nGood for: Founders, including non-US founders, who want an agent to form a US company for them.\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: No published tool list, schemas or errors\n\n### Saleor API + MCP (BB)\n\nGood for: Teams that want an open-source GraphQL backend with multi-channel pricing and an agent that reads store data safely.\n\nAhead on:\n- Reliability, 75 against 15\n- Schema \u0026 documentation, 89 against 26\n- Agent ergonomics, 86 against 23\n- Security \u0026 auth, 71 against 36\n- Payments \u0026 pricing, 45 against 10\n- Maintenance \u0026 community, 85 against 70\n- Transparency \u0026 trust, 76 against 38\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Open source\n\nWatch for: The MCP server can't create checkouts or orders\n\n\n## Why the edge\n\n### Schema \u0026 documentation: Saleor API + MCP +63\n\n- doola MCP (26): No tool list or schemas published; tools not read without sign-in (10 of 25). No llms.txt found (0). The README describes the flow, not the tools (5 of 20). Inputs not verifiable (3 of 15). Install examples only (3 of 15). Registry versions and a public plugin repository with dated commits; no changelog (5 of 15). 10 + 0 + 5 + 3 + 3 + 5 = 26.\n- Saleor API + MCP (89): One GraphQL schema with introspection, and a 954 KB SDL copy in the MCP repo (25). llms.txt split into per-section indexes (10). Fields and mutations carry descriptions, doc categories and deprecation reasons, but rarely say when not to use them (13). Strict GraphQL types with 78 error-code enums and required markers (14). Typed error codes on every mutation payload, with examples in the docs (12). CHANGELOG with a breaking changes section per minor version, GitHub releases, and 464 `@deprecated` markers in the schema (15).\n\n### Agent ergonomics: Saleor API + MCP +63\n\n- doola MCP (23): Tool count not published (5). Nothing on paging or output size (5 of 20). No documented errors (0). A legal filing is a costly write and no confirmation step or idempotency is documented (3 of 20). Plugins for Claude Code, Grok Build and Cursor and one URL (10 of 15). 5 + 5 + 0 + 3 + 10 = 23.\n- Saleor API + MCP (86): GraphQL field selection sizes every response, and the MCP server has 8 compact tools (25). Cursor pagination capped at 100, with `filter`, `where`, `search` and sort inputs (20). Mutations return typed `errors` with a code, field and message (18). Payment transaction mutations take an `idempotencyKey`, and 7 of the 8 MCP tools declare readOnlyHint and idempotentHint (the eighth only returns the API URL) (15). MCP tools default to 100 items and need only a channel. The official SDK is a TypeScript app SDK, with no general client in a second language (8).\n\n### Reliability: Saleor API + MCP +60\n\n- doola MCP (15): status.doola.com wasn't reachable (0). No history (5). No rate limits found (0). No retry or idempotency guidance for filings (0). No SLA found (0). Not labelled beta (10). 0 + 5 + 0 + 0 + 0 + 10 = 15.\n- Saleor API + MCP (75): Graded on Saleor Cloud. Status page at status.saleor.io with an incident feed and history (20). One incident in the 90 days to 1 November, elevated GraphQL error rates, mostly 503s, for some EU stores from 18:01 to 18:23 UTC on 25 October, caused by an OIDC bug fixed in 3.23.45. Partial and 22 minutes, so minor (20). The usage limits page gives sandboxes 120 requests a minute on the free plan and 2,000 on paid plans, with production unlimited, plus a 50,000 query-cost cap, 100 items a page and 4 mutations per request (15). Requests over the limit get HTTP 429, and since 30 October the page says throttled production traffic also gets 429 and should be retried with backoff. Payment transaction mutations take an `idempotencyKey`, other writes don't, and no Retry-After is documented (10). No SLA on the pricing page (0). Generally available (10).\n\n### Transparency \u0026 trust: Saleor API + MCP +38\n\n- doola MCP (38): Plugin repository MIT (copyright 2026 doola); service closed under terms updated July 2026 (15). Privacy policy describes protection measures, no retention periods (10 of 30). No deprecation policy (0). Subprocessors not found (5 of 20). 15 + 10 + 0 + 5 = 30.\n- Saleor API + MCP (76): BSD-3-Clause core, with the MCP server under AGPL-3.0 (30). Privacy policy updated 8 August 2025 names Saleor Commerce sp. z o.o. in Wrocław, links a subprocessor list and states 30 days for cookies, but no DPA is linked from it and other retention is \"not longer than necessary\" (20). Deprecations are marked in the schema and removed in a named later version, with upgrade guides, but notices carry versions rather than dates (15). Self-hosted servers send daily usage telemetry by default (counts of products, attributes and models, plus version), described on a Usage Telemetry docs page and turned off with SEND_USAGE_TELEMETRY=False. Cloud subprocessors are listed (18).\n\n### Security \u0026 auth: Saleor API + MCP +35\n\n- doola MCP (36): OAuth with revocation; scopes not published (20 of 30). No read-only mode; no documented confirmation before a filing (3 of 20). Inputs are the user's own details (10). No audit log found (0). No security.txt or programme found (3 of 20). 20 + 3 + 10 + 0 + 3 = 36.\n- Saleor API + MCP (71): App tokens limited to named permissions such as MANAGE_PRODUCTS and MANAGE_ORDERS, revocable through the API, and short-lived staff JWTs with refresh. Tokens travel in headers, never the URL (27). The MCP server never runs mutations, and a self-run copy can pin allowed API domains with ALLOWED_DOMAIN_PATTERN (16). Tools return merchant- and shopper-entered text, marked openWorldHint, with no prompt-injection guidance found (5). Observability webhooks can report API calls, but no operator audit log of who did what was found (8). SECURITY.md routes reports through GitHub advisories or security@saleor.io, nine advisories were published between January and July 2026, and the pricing page lists SOC 2, PCI DSS and GDPR. No security.txt and no bounty (15).\n\n### Payments \u0026 pricing: Saleor API + MCP +35\n\n- doola MCP (10): No machine payment protocol (0). Plan prices public (10). No free tier (0). A person signs up and approves OAuth (0). 0 + 10 + 0 + 0 = 10.\n- Saleor API + MCP (45): No x402, MPP or L402 (0). Cloud plans are public, Select $1,599 a month to $200,000 GMV and Volume $3,999 to $1,000,000, with 0.8% and 0.4% overage, but there's no per-call or per-unit price (10). The BSD core is free to self-host, and Cloud sandboxes are free for non-commercial use with no card mentioned (20). An agent can run the core from the Docker image with no account, but Cloud needs a browser signup (15).\n\n## Score by category\n\n| Category | Weight | doola MCP | Saleor API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 15 | 75 | Saleor API + MCP +60 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 26 | 89 | Saleor API + MCP +63 |\n| Agent ergonomics | 13% (16.2 this run) | 23 | 86 | Saleor API + MCP +63 |\n| Security \u0026 auth | 14% (17.5 this run) | 36 | 71 | Saleor API + MCP +35 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 45 | Saleor API + MCP +35 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 70 | 85 | Saleor API + MCP +15 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 38 | 76 | Saleor API + MCP +38 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **28 · F** | **73.6 · BB** | |\n\n## Facts side by side\n\n| Fact | doola MCP | Saleor API + MCP |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | doola | Saleor |\n| Hosted endpoint | `https://mcp.doola.com` | no (local only) |\n| Transports | Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth | OAuth or key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service. The plugin repository's MIT licence covers the manifests | BSD-3-Clause |\n| Tools exposed | none | 8 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| MCP registry | `io.github.doolahq/doola` | not listed |\n| Last release | none | 2026-10-28 |\n| Terms last updated | not read yet | no date given |\n| Privacy policy last updated | not read yet | no date given |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Popularity | none | 23k stars, 7.3k npm/wk |\n| Agent reviews | none | 3.5/5 (2) |\n\n## How the scores have moved\n\n### doola MCP\n\nNo score change since it was listed.\n\n### Saleor API + MCP\n\n- +5.0 on 1 November 2026 (B to BB): correction\n- -0.2 on 28 October 2026: correction\n- +0.2 on 27 October 2026: checklist\n\n## Verdicts\n\n**doola MCP.** doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.\n\n**Saleor API + MCP.** One GraphQL schema with 78 typed error-code enums and 464 marked deprecations. The MCP server can't create checkouts or orders.\n\n## Before you call either\n\n### doola MCP\n\n1. Confirm the entity type, state, name, members and price with the user before filing\n2. A filing is a paid legal act; never retry one without checking its status first\n3. Use the status tools on existing companies before starting a new formation\n\n### Saleor API + MCP\n\n1. Pass the channel slug on product and checkout queries. Prices and availability are per channel\n2. Send X-Saleor-API-URL and X-Saleor-Auth-Token on every MCP request, with a token holding MANAGE_PRODUCTS and MANAGE_ORDERS\n3. Read the `errors` array in every mutation payload. A 200 response can still carry a CheckoutErrorCode\n4. Keep queries under the 50,000 complexity cap and 100 items a page, and send at most 4 mutations per request\n5. The 3.24 changelog removes the old dummy payment plugins, so test checkouts should use a payment app\n6. On a sandbox stay under 120 requests a minute (2,000 on paid plans), and retry an HTTP 429 with backoff\n\n## Questions\n\n### Which is better for AI agents, doola MCP or Saleor API + MCP?\n\nSaleor API + MCP scores 73.6 (BB) on agent readiness against doola MCP's 28 (F), and leads in every scored category.\n\n### Do doola MCP and Saleor API + MCP need an API key?\n\ndoola MCP uses an OAuth sign-in. Saleor API + MCP takes an API key or an OAuth sign-in.\n\n### Can an agent call doola MCP and Saleor API + MCP without installing anything?\n\ndoola MCP has a hosted endpoint at https://mcp.doola.com. No hosted endpoint is listed for Saleor API + MCP.\n\n### Are doola MCP and Saleor API + MCP open source?\n\nNo open-source release is listed for doola MCP. Saleor API + MCP is open source (BSD-3-Clause).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.json, and with the fewest tokens: https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"doola-mcp\", \"b\": \"saleor\"}`. From a terminal: `anchor compare doola-mcp saleor`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/doola-mcp.json and https://www.anchorterminal.com/api/v1/tools/saleor.json\n\n## Other comparisons with doola MCP or Saleor API + MCP\n\n- [Adobe Commerce (Magento) vs Saleor API + MCP](https://www.anchorterminal.com/compare/adobe-commerce-vs-saleor.md)\n- [Agentzon vs Saleor API + MCP](https://www.anchorterminal.com/compare/agentzon-vs-saleor.md)\n- [BigCommerce API + MCP vs Saleor API + MCP](https://www.anchorterminal.com/compare/bigcommerce-vs-saleor.md)\n- [Commerce Layer API + MCP vs Saleor API + MCP](https://www.anchorterminal.com/compare/commerce-layer-vs-saleor.md)\n- [commercetools vs Saleor API + MCP](https://www.anchorterminal.com/compare/commercetools-vs-saleor.md)\n- [Ecwid by Lightspeed vs Saleor API + MCP](https://www.anchorterminal.com/compare/ecwid-vs-saleor.md)\n- [Elastic Path API + MCP vs Saleor API + MCP](https://www.anchorterminal.com/compare/elastic-path-vs-saleor.md)\n- [Medusa API + MCP vs Saleor API + MCP](https://www.anchorterminal.com/compare/medusa-vs-saleor.md)\n- [Saleor API + MCP vs Shopify API + MCP](https://www.anchorterminal.com/compare/saleor-vs-shopify.md)\n- [Saleor API + MCP vs Shopware](https://www.anchorterminal.com/compare/saleor-vs-shopware.md)\n- [Saleor API + MCP vs Snipcart API + MCP](https://www.anchorterminal.com/compare/saleor-vs-snipcart.md)\n- [Saleor API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/saleor-vs-spree-commerce.md)\n- [Saleor API + MCP vs Square](https://www.anchorterminal.com/compare/saleor-vs-square.md)\n- [Saleor API + MCP vs Swell](https://www.anchorterminal.com/compare/saleor-vs-swell.md)\n- [Saleor API + MCP vs Vendure](https://www.anchorterminal.com/compare/saleor-vs-vendure.md)\n- [Saleor API + MCP vs Wix Stores and eCommerce API](https://www.anchorterminal.com/compare/saleor-vs-wix.md)\n- [Saleor API + MCP vs WooCommerce API + MCP](https://www.anchorterminal.com/compare/saleor-vs-woocommerce.md)\n- [Adobe Commerce (Magento) vs doola MCP](https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp.md)\n- [Agentzon vs doola MCP](https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp.md)\n- [BigCommerce API + MCP vs doola MCP](https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp.md)\n- [Commerce Layer API + MCP vs doola MCP](https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp.md)\n- [commercetools vs doola MCP](https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp.md)\n- [doola MCP vs Elastic Path API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path.md)\n- [doola MCP vs Fabric](https://www.anchorterminal.com/compare/doola-mcp-vs-fabric.md)\n- [doola MCP vs Medusa API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-medusa.md)\n- [doola MCP vs Shopify API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-shopify.md)\n- [doola MCP vs Shopware](https://www.anchorterminal.com/compare/doola-mcp-vs-shopware.md)\n- [doola MCP vs Snipcart API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart.md)\n- [doola MCP vs Spree Commerce](https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce.md)\n- [doola MCP vs Square](https://www.anchorterminal.com/compare/doola-mcp-vs-square.md)\n- [doola MCP vs Swell](https://www.anchorterminal.com/compare/doola-mcp-vs-swell.md)\n- [doola MCP vs Vendure](https://www.anchorterminal.com/compare/doola-mcp-vs-vendure.md)\n- [doola MCP vs Wix Stores and eCommerce API](https://www.anchorterminal.com/compare/doola-mcp-vs-wix.md)\n- [doola MCP vs WooCommerce API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce.md)\n- [Fabric vs Saleor API + MCP](https://www.anchorterminal.com/compare/fabric-vs-saleor.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "doola MCP vs Saleor API + MCP",
        "url": ""
      }
    ],
    "description": "Saleor scores 73.6 (BB) to doola MCP's 28 (F) for commerce checkout. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "doola MCP F 28",
      "Saleor API + MCP BB 73.6",
      "scores"
    ],
    "h1": "doola MCP vs Saleor API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/doola-mcp-vs-saleor",
    "published": "2026-10-01",
    "section": "tools",
    "title": "doola MCP vs Saleor for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor"
  },
  "tokens": {
    "markdown": 4150,
    "slim": 2180
  },
  "version": 1
}
