canvas_apply is the one that writes, and it writes nothing but a funnel. Every tool except list_stores and search_docs takes a storeId.
Call
list_stores first — it is the only source of valid store ids, and it spans every organisation you belong to. Every diagnosis echoes the store name it inspected.
Rate limit: 120 tool calls per minute per signed-in user, separate from your API keys. canvas_apply has a second, tighter budget: 60 commands per minute per funnel, so an agent cannot starve the merchant editing the same canvas.
How a diagnosis reads
The fourcheck_* tools share one output shape.
OK, WARNING, ERROR. evidence carries the rows and values that prove the claim. Each finding also has a stable code — processor_archived above — that survives a change of wording.
get_setup_status
The five required steps (store, catalog, shipping, payment, checkout) and their status: completed, pending, not_started, or locked.
This is the shallow view. A 5/5 checklist and a store that declines every card are compatible states, which is why the check_* tools exist.
check_catalog
At least one active product, with active variants, each priced in the base currency and in every presentment currency.
catalog_empty · no_active_product · product_without_active_variant · all_variants_out_of_stock · variant_missing_base_currency_price · variant_missing_presentment_currency_price · variant_priced_only_on_legacy_fields
The last one catches a quiet failure: a variant priced only on the legacy field looks priced in the CRM and is invisible to the checkout.
check_shipping
Live (non-deleted) rates that name countries, are priced in the base currency, and cover every shippable product. Digital stores return shipping_not_applicable.
shipping_rates_all_deleted · shipping_rate_without_country · shipping_rate_missing_base_currency · shippable_products_without_rate
check_payment
A payment flow that is selected, found and not archived, with processors that are not all disabled; then, per enabled processor, that it is enabled, not archived, and lists the store’s base currency.
payment_flow_not_selected · payment_flow_not_found · payment_flow_archived · payment_flow_has_no_processors · payment_flow_all_processors_disabled · processor_not_found · processor_disabled · processor_archived · processor_currency_unsupported · no_usable_processor
Needs store-read and processor-read permissions; it names the missing one rather than returning a partial answer. Processor credentials are never read from the database, so they cannot reach the assistant even in an error path.
check_checkout
An active, published funnel whose production domains are registered, enabled and verified.
no_funnel · no_active_funnel · funnel_not_published · domain_not_registered · domain_disabled · domain_not_verified
An unverified domain is the classic silent outage: the funnel is live, the CRM is green, and the URL you gave your customers does not resolve.
canvas_get
The whole canvas of one store in a single reply: store, funnel (with its sequence numbers, drift flag and publication state), entries, nodes with their typed exits, edges, satellites and bindings. Pass funnelId to pick a funnel when the store has several; leave it out for the default one.
Read this before every canvas_apply: the ids you need — node ids, exit ids, integration ids — and the funnel.pendingSeq you must echo back all come from here.
canvas_apply
The only tool on this server that changes anything. It takes one command out of five, refuses everything it cannot prove, journals it, and lets the compile queue write the funnel.
commandIdis yours, and replaying it is safe. An id already seen returns the original reply, never a second command. Retry a timeout with the same id.expectedSeqis thefunnel.pendingSeqyou just read. If the canvas moved in between, the command is refused withstaleand the fresh document comes back with the refusal.- A refusal is data, not an exception. It carries
code,message,cause,fixanddocs. Act onfix; branch oncode, which is versioned and never changes meaning. - A malformed command is a different answer. The tool re-validates its input, so a name over 120 characters or an
http://address comes back as “This command is not valid” naming the field —command.props.url— and never reaches the refusal codes.
search_docs
Searches the public documentation behind docs.tagada.io. Use it to turn a finding into a fix. If it is unavailable it says so, and the rest of the session keeps working.
Next
Prompt Library
Three prompts, ready to copy.
Get Started
Connect your client.
