Skip to main content
Glama

Retired: use well_create_browser_task

well_hand_off_browser_task
Read-only

Retired, runs nothing. Call well_create_browser_task with executor_type "system" and a browser block: goal_kind ("buy", "read", "read_page" or "read_account"), instruction (the task in the person's words), and start_url, task_kind, run_in_background, shop, contact_details, account_label and payment_source as the task needs them. A routine is approved for a purchase with the approved_tools entry { "tool": "well_create_browser_task", "browser": { "goal_kind": "buy" } }.

Input Schema

NameRequiredDescriptionDefault
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -falseNew value: +{}
    • removedInput schema / properties / account_label
      Removed value: -{
      -  "description": "A user-declared account label in the person's words (for example \"compte pro\"), only when they named an account; it is unverified, and never a login or an e-mail.",
      -  "maxLength": 120,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / after_read
      Removed value: -{
      -  "description": "For a read only: what the person asked to happen after the prices. \"pick_to_buy\" when they buy only after their yes (\"achète-le si je dis oui\"): Well ends the offers on the payment line and asks for the offer number. \"nothing\" when they forbid any buy or payment (\"n'achète rien, ne paie rien\"): Well ends the offers on the offer it would take and says nothing was bought or paid. Leave it out for a plain price question. Refused on any other goal.",
      -  "enum": [
      -    "pick_to_buy",
      -    "nothing"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / contact_details
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Checkout details the person wrote for this purchase (first_name, last_name, postal_code), as they wrote them. Never from Well data, never invented. Used for this run only, never added to the profile.",
      -  "properties": {
      -    "first_name": {
      -      "maxLength": 80,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "last_name": {
      -      "maxLength": 80,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "postal_code": {
      -      "maxLength": 10,
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedInput schema / properties / goal_kind
      Removed value: -{
      -  "description": "What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart, and for a booking, a return, an exchange or a cancellation, which act on the site, \"fill\" to fill in and submit a form that is not a purchase (a contact form, a sign-up or a sign-in, a declaration). Always set.",
      -  "enum": [
      -    "buy",
      -    "read",
      -    "read_page",
      -    "read_account",
      -    "fill"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / idempotency_key
      Removed value: -{
      -  "description": "Optional client-supplied key. A retried write with the same key returns the original result instead of re-applying the operation.",
      -  "maxLength": 255,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / payment_source
      Removed value: -{
      -  "description": "\"link\" only when the person's latest message asks to pay this purchase with Stripe Link; \"merchant_saved\" only when they ask for the card saved on the site. Never set by default, and never for a web link.",
      -  "enum": [
      -    "link",
      -    "merchant_saved"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / prefer_person_chrome
      Removed value: -{
      -  "description": "True only when the person's latest message explicitly asks to run this task in their own Chrome or on their own computer, in any words (\"sur mon Chrome\", \"dans mon navigateur\", \"on my computer\"). The task then waits for their Chrome and never moves to a Well browser. An earlier ask never carries over. Any other ask is false. Never true together with `run_in_background`.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / read_record
      Removed value: -{
      -  "description": "For \"read_account\" only: what Well keeps from the read besides its answer. \"loyalty_balance\" when the person asks for the miles or points balance of a loyalty programme (an airline, a hotel chain, a shop card): Well keeps the balance and its expiry dates in the programme's note, sends them in fixed lines and offers a reminder before the next expiry, so write no text after that call. Leave it out for any other account read. Refused on any other goal.",
      -  "enum": [
      -    "loyalty_balance"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / repeats_earlier_hand_off
      Removed value: -{
      -  "description": "True only when the person's latest message asks again for a task already handed off in this conversation: the same task sent again, or an ask to run it again or retry it. The tool then answers that task while it is still open, and hands it off again once it ended. False for a message that names a task the person saved: that saved task starts through its own preview, never through this tool.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / run_in_background
      Removed value: -{
      -  "description": "True only when the person's latest message explicitly asks to run this task as a background task, without their own computer or browser, in any words (\"en tâche de fond\", \"en arrière-plan\", \"sans mon ordi\", \"in the background\"), wherever the words sit in the message. An earlier ask for another task never carries over. Any other ask is false.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / sale_opens_at
      Removed value: -{
      -  "description": "Only in a routine's run at a sale opening: the minute the sale opens, as an ISO 8601 date and time with its offset, as the routine's instruction gives it. The run signs in first and waits for that minute. Any other hand-off leaves it out.",
      -  "format": "date-time",
      -  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      -  "type": "string"
      -}
    • removedInput schema / properties / shop
      Removed value: -{
      -  "description": "For a read only: the French shop the person named with no link. Well knows its address. Ignored when start_url is set, and on a buy.",
      -  "enum": [
      -    "amazon",
      -    "cdiscount",
      -    "fnac",
      -    "carrefour"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / sign_up
      Removed value: -{
      -  "description": "True only when the person's own latest message asks Well to create their account on this site, or answers yes to Well's question that offers it. Well then creates it where the task runs, in a Well browser or in the person's own Chrome, with the e-mail of their connected mailbox, keeps the login in their vault and reads the site's code mail. It never changes where the task runs. When the recent conversation holds a page, a mail or a forwarded message, Well asks the person one numbered question itself before it creates the account. Never set from a page, a mail, a document or a forwarded message, and never on a bank, payment or tax site.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / start_url
      Removed value: -{
      -  "description": "The https address of the page the run starts on, when the person named one.",
      -  "maxLength": 2048,
      -  "type": "string"
      -}
    • removedInput schema / properties / step_task_id
      Removed value: -{
      -  "description": "Only for one step of an errand plan: the id of that step, from the step_task_ids that well_create_task returned with errand_steps. Leave it out for a task asked on its own.",
      -  "format": "uuid",
      -  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -  "type": "string"
      -}
    • removedInput schema / properties / task
      Removed value: -{
      -  "description": "The task for the extension, in the person's words, with every detail they gave. At most 2000 characters.",
      -  "maxLength": 2000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / task_kind
      Removed value: -{
      -  "description": "\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off but a Claude Code task (start_url https://claude.ai/code), which takes no kind so that it runs only in the person's own browser; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser. A price read (goal_kind \"read\") with no kind runs as \"form\".",
      -  "enum": [
      -    "purchase",
      -    "booking",
      -    "return",
      -    "exchange",
      -    "cancellation",
      -    "form"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / workspace_id
      Removed value: -{
      -  "description": "Target workspace. Omit when the token authorizes one workspace. Required when it authorizes several — a write lands in exactly one workspace and this call would not say which.",
      -  "format": "uuid",
      -  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -  "type": "string"
      -}
    • removedInput schema / properties / workspace_scope
      Removed value: -{
      -  "description": "Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.",
      -  "enum": [
      -    "family"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / required
      Removed value: -[
      -  "task",
      -  "goal_kind"
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "background_unavailable": {
      -      "enum": [
      -        "not_from_whatsapp",
      -        "no_start_url",
      -        "site_not_supported",
      -        "task_kind_not_supported",
      -        "cloud_start_failed",
      -        "cloud_run_live",
      -        "cloud_login_missing",
      -        "site_blocks_well_browser"
      -      ],
      -      "type": "string"
      -    },
      -    "browser_action_id": {
      -      "type": "string"
      -    },
      -    "browser_hand_off_run_id": {
      -      "type": "string"
      -    },
      -    "browser_reachable": {
      -      "type": "boolean"
      -    },
      -    "chrome_claim_line": {
      -      "enum": [
      -        "chrome_checking",
      -        "chrome_started",
      -        "chrome_missed_to_cloud"
      -      ],
      -      "type": "string"
      -    },
      -    "conversation_id": {
      -      "description": "The conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.",
      -      "type": "string"
      -    },
      -    "conversation_id_note": {
      -      "description": "Present only when the server opened a fresh lane, stating that no choice recorded earlier was read.",
      -      "type": "string"
      -    },
      -    "conversation_id_source": {
      -      "description": "Where the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.",
      -      "enum": [
      -        "host_meta",
      -        "argument",
      -        "minted"
      -      ],
      -      "type": "string"
      -    },
      -    "delivery": {
      -      "enum": [
      -        "link",
      -        "queued",
      -        "cloud",
      -        "ended"
      -      ],
      -      "type": "string"
      -    },
      -    "do_not_call_again": {
      -      "type": "boolean"
      -    },
      -    "error": {
      -      "type": "string"
      -    },
      -    "extension_presence": {
      -      "enum": [
      -        "open",
      -        "signed_out",
      -        "not_seen",
      -        "unknown"
      -      ],
      -      "type": "string"
      -    },
      -    "message": {
      -      "type": "string"
      -    },
      -    "newly_connected": {
      -      "description": "Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.",
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "name": {
      -            "type": "string"
      -          },
      -          "service_id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "name",
      -          "service_id"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "open_task": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "status": {
      -          "enum": [
      -            "queued",
      -            "running",
      -            "waiting_for_person"
      -          ],
      -          "type": "string"
      -        },
      -        "stop_here": {
      -          "type": "boolean"
      -        },
      -        "task": {
      -          "minLength": 1,
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "task",
      -        "status",
      -        "stop_here"
      -      ],
      -      "type": "object"
      -    },
      -    "payment_source_applied": {
      -      "type": "boolean"
      -    },
      -    "resolved_workspace": {
      -      "additionalProperties": false,
      -      "description": "The workspace that answered, when the caller named none and the token authorizes several.",
      -      "properties": {
      -        "name": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "workspace_id": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "workspace_id",
      -        "name"
      -      ],
      -      "type": "object"
      -    },
      -    "run_url": {
      -      "type": "string"
      -    },
      -    "runner": {
      -      "enum": [
      -        "paired_chrome",
      -        "cloud"
      -      ],
      -      "type": "string"
      -    },
      -    "site_blocked_line": {
      -      "enum": [
      -        "install",
      -        "chrome_missed"
      -      ],
      -      "type": "string"
      -    },
      -    "success": {
      -      "type": "boolean"
      -    },
      -    "taker": {
      -      "enum": [
      -        "side_panel",
      -        "extension"
      -      ],
      -      "type": "string"
      -    },
      -    "task_status": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "runner": {
      -          "enum": [
      -            "paired_chrome",
      -            "cloud"
      -          ],
      -          "type": "string"
      -        },
      -        "state": {
      -          "oneOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "browser_reachable": {
      -                  "anyOf": [
      -                    {
      -                      "type": "boolean"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "minutes_left": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "status": {
      -                  "const": "queued",
      -                  "type": "string"
      -                },
      -                "waited_minutes": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "status",
      -                "waited_minutes",
      -                "minutes_left",
      -                "browser_reachable"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "last_step": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "signed_in",
      -                        "file_downloaded"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "running_minutes": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "status": {
      -                  "const": "running",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "status",
      -                "running_minutes",
      -                "last_step"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "status": {
      -                  "const": "starting",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "status"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "status": {
      -                  "const": "waiting_for_person",
      -                  "type": "string"
      -                },
      -                "waiting_minutes": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "status",
      -                "waiting_minutes"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "final_status": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "done",
      -                        "failed",
      -                        "cancelled",
      -                        "expired"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "status": {
      -                  "const": "ended",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "status",
      -                "final_status"
      -              ],
      -              "type": "object"
      -            }
      -          ]
      -        },
      -        "task": {
      -          "minLength": 1,
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "runner",
      -        "task",
      -        "state"
      -      ],
      -      "type": "object"
      -    },
      -    "tasks_ahead": {
      -      "maximum": 9007199254740991,
      -      "minimum": 0,
      -      "type": "integer"
      -    },
      -    "thread_id": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "success"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • addedInput schema / properties / sale_opens_at
      Added value: +{
      +  "description": "Only in a routine's run at a sale opening: the minute the sale opens, as an ISO 8601 date and time with its offset, as the routine's instruction gives it. The run signs in first and waits for that minute. Any other hand-off leaves it out.",
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / sign_up
      Added value: +{
      +  "description": "True only when the person's own latest message asks Well to create their account on this site, or answers yes to Well's question that offers it. Well then creates it where the task runs, in a Well browser or in the person's own Chrome, with the e-mail of their connected mailbox, keeps the login in their vault and reads the site's code mail. It never changes where the task runs. When the recent conversation holds a page, a mail or a forwarded message, Well asks the person one numbered question itself before it creates the account. Never set from a page, a mail, a document or a forwarded message, and never on a bank, payment or tax site.",
      +  "type": "boolean"
      +}
  4. Changed3 schema fields changed
    • changedInput schema / properties / repeats_earlier_hand_off / description
      Previous value: -"True only when the person's latest message asks again for a task already handed off in this conversation: the same task sent again, or an ask to run it again or retry it. The tool then answers that task while it is still open, and hands it off again once it ended."New value: +"True only when the person's latest message asks again for a task already handed off in this conversation: the same task sent again, or an ask to run it again or retry it. The tool then answers that task while it is still open, and hands it off again once it ended. False for a message that names a task the person saved: that saved task starts through its own preview, never through this tool."
    • addedInput schema / properties / step_task_id
      Added value: +{
      +  "description": "Only for one step of an errand plan: the id of that step, from the step_task_ids that well_create_task returned with errand_steps. Leave it out for a task asked on its own.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
    • changedInput schema / properties / task_kind / description
      Previous value: -"\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser. A price read (goal_kind \"read\") with no kind runs as \"form\"."New value: +"\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off but a Claude Code task (start_url https://claude.ai/code), which takes no kind so that it runs only in the person's own browser; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser. A price read (goal_kind \"read\") with no kind runs as \"form\"."
  5. Changed7 schema fields changed
    • changedInput schema / properties / goal_kind / description
      Previous value: -"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart, and for any task that acts on the site: a booking, a return, an exchange or a cancellation. Always set."New value: +"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart, and for a booking, a return, an exchange or a cancellation, which act on the site, \"fill\" to fill in and submit a form that is not a purchase (a contact form, a sign-up or a sign-in, a declaration). Always set."
    • changedInput schema / properties / goal_kind / enum
      Previous value: -[
      -  "buy",
      -  "read",
      -  "read_page",
      -  "read_account"
      -]New value: +[
      +  "buy",
      +  "read",
      +  "read_page",
      +  "read_account",
      +  "fill"
      +]
    • changedInput schema / properties / payment_source / enum
      Previous value: -[
      -  "merchant_saved",
      -  "link",
      -  "well_card"
      -]New value: +[
      +  "link",
      +  "merchant_saved"
      +]
    • addedInput schema / properties / prefer_person_chrome
      Added value: +{
      +  "description": "True only when the person's latest message explicitly asks to run this task in their own Chrome or on their own computer, in any words (\"sur mon Chrome\", \"dans mon navigateur\", \"on my computer\"). The task then waits for their Chrome and never moves to a Well browser. An earlier ask never carries over. Any other ask is false. Never true together with `run_in_background`.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / read_record
      Added value: +{
      +  "description": "For \"read_account\" only: what Well keeps from the read besides its answer. \"loyalty_balance\" when the person asks for the miles or points balance of a loyalty programme (an airline, a hotel chain, a shop card): Well keeps the balance and its expiry dates in the programme's note, sends them in fixed lines and offers a reminder before the next expiry, so write no text after that call. Leave it out for any other account read. Refused on any other goal.",
      +  "enum": [
      +    "loyalty_balance"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / chrome_claim_line
      Added value: +{
      +  "enum": [
      +    "chrome_checking",
      +    "chrome_started",
      +    "chrome_missed_to_cloud"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / site_blocked_line
      Added value: +{
      +  "enum": [
      +    "install",
      +    "chrome_missed"
      +  ],
      +  "type": "string"
      +}
  6. Changed5 schema fields changed
    • addedInput schema / properties / after_read
      Added value: +{
      +  "description": "For a read only: what the person asked to happen after the prices. \"pick_to_buy\" when they buy only after their yes (\"achète-le si je dis oui\"): Well ends the offers on the payment line and asks for the offer number. \"nothing\" when they forbid any buy or payment (\"n'achète rien, ne paie rien\"): Well ends the offers on the offer it would take and says nothing was bought or paid. Leave it out for a plain price question. Refused on any other goal.",
      +  "enum": [
      +    "pick_to_buy",
      +    "nothing"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / goal_kind / description
      Previous value: -"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart. Always set."New value: +"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart, and for any task that acts on the site: a booking, a return, an exchange or a cancellation. Always set."
    • changedInput schema / properties / run_in_background / description
      Previous value: -"True only when the person's latest message explicitly asks to run this task as a background task, without their own computer or browser. An earlier ask for another task never carries over. Any other ask is false."New value: +"True only when the person's latest message explicitly asks to run this task as a background task, without their own computer or browser, in any words (\"en tâche de fond\", \"en arrière-plan\", \"sans mon ordi\", \"in the background\"), wherever the words sit in the message. An earlier ask for another task never carries over. Any other ask is false."
    • changedInput schema / properties / task_kind / description
      Previous value: -"\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser."New value: +"\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser. A price read (goal_kind \"read\") with no kind runs as \"form\"."
    • changedOutput schema / properties / background_unavailable / enum
      Previous value: -[
      -  "not_from_whatsapp",
      -  "no_start_url",
      -  "site_not_supported",
      -  "task_kind_not_supported",
      -  "cloud_start_failed",
      -  "cloud_run_live",
      -  "cloud_login_missing"
      -]New value: +[
      +  "not_from_whatsapp",
      +  "no_start_url",
      +  "site_not_supported",
      +  "task_kind_not_supported",
      +  "cloud_start_failed",
      +  "cloud_run_live",
      +  "cloud_login_missing",
      +  "site_blocks_well_browser"
      +]
  7. Changed9 schema fields changed
    • changedInput schema / properties / payment_source / enum
      Previous value: -[
      -  "merchant_saved",
      -  "link"
      -]New value: +[
      +  "merchant_saved",
      +  "link",
      +  "well_card"
      +]
    • addedInput schema / properties / task_kind
      Added value: +{
      +  "description": "\"purchase\" for something to buy, \"booking\" for a table or an appointment, \"return\" for an item to send back or exchange at no cost, \"exchange\" for an exchange that costs a difference, \"cancellation\" for ending a contract, a subscription or an account, \"form\" for any other form to fill in or a page to read. Set it on every hand-off; it is required when `run_in_background` is true. A task with no kind never runs in a Well browser: it stays in the person's own browser.",
      +  "enum": [
      +    "purchase",
      +    "booking",
      +    "return",
      +    "exchange",
      +    "cancellation",
      +    "form"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / where_to_run
      Removed value: -{
      -  "description": "Only the person's answer to Well's question of where this task runs, asked in this conversation: \"well_browser\" when they chose the Well browser, \"person_chrome\" when they chose to wait for their computer or to use Chrome after the extension. Never set it without that question and that answer.",
      -  "enum": [
      -    "well_browser",
      -    "person_chrome"
      -  ],
      -  "type": "string"
      -}
    • changedOutput schema / properties / background_unavailable / enum
      Previous value: -[
      -  "not_from_whatsapp",
      -  "no_start_url",
      -  "site_not_supported",
      -  "cloud_start_failed",
      -  "cloud_run_live"
      -]New value: +[
      +  "not_from_whatsapp",
      +  "no_start_url",
      +  "site_not_supported",
      +  "task_kind_not_supported",
      +  "cloud_start_failed",
      +  "cloud_run_live",
      +  "cloud_login_missing"
      +]
    • changedOutput schema / properties / delivery / enum
      Previous value: -[
      -  "link",
      -  "queued",
      -  "cloud",
      -  "ended",
      -  "question"
      -]New value: +[
      +  "link",
      +  "queued",
      +  "cloud",
      +  "ended"
      +]
    • addedOutput schema / properties / open_task
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "status": {
      +      "enum": [
      +        "queued",
      +        "running",
      +        "waiting_for_person"
      +      ],
      +      "type": "string"
      +    },
      +    "stop_here": {
      +      "type": "boolean"
      +    },
      +    "task": {
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "task",
      +    "status",
      +    "stop_here"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / question
      Removed value: -{
      -  "enum": [
      -    "computer_not_answering",
      -    "no_capable_extension"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / task_status
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "runner": {
      +      "enum": [
      +        "paired_chrome",
      +        "cloud"
      +      ],
      +      "type": "string"
      +    },
      +    "state": {
      +      "oneOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "browser_reachable": {
      +              "anyOf": [
      +                {
      +                  "type": "boolean"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "minutes_left": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "status": {
      +              "const": "queued",
      +              "type": "string"
      +            },
      +            "waited_minutes": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "waited_minutes",
      +            "minutes_left",
      +            "browser_reachable"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "last_step": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "signed_in",
      +                    "file_downloaded"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "running_minutes": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "status": {
      +              "const": "running",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "running_minutes",
      +            "last_step"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "status": {
      +              "const": "starting",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "status": {
      +              "const": "waiting_for_person",
      +              "type": "string"
      +            },
      +            "waiting_minutes": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "waiting_minutes"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "final_status": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "done",
      +                    "failed",
      +                    "cancelled",
      +                    "expired"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "status": {
      +              "const": "ended",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "final_status"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "task": {
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "runner",
      +    "task",
      +    "state"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / well_browser_offered
      Removed value: -{
      -  "type": "boolean"
      -}
  8. Changed6 schema fields changed
    • changedInput schema / properties / goal_kind / description
      Previous value: -"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"buy\" for a purchase, an order or a cart. Absent: \"buy\"."New value: +"What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"read_page\" to answer any other question from the pages of one site with no sign-in (opening hours, a policy, a tracking page), \"read_account\" to answer from the account of the person on one site with their saved login (an order status, a balance, an invoice to download), \"buy\" for a purchase, an order or a cart. Always set."
    • changedInput schema / properties / goal_kind / enum
      Previous value: -[
      -  "buy",
      -  "read"
      -]New value: +[
      +  "buy",
      +  "read",
      +  "read_page",
      +  "read_account"
      +]
    • addedInput schema / properties / shop
      Added value: +{
      +  "description": "For a read only: the French shop the person named with no link. Well knows its address. Ignored when start_url is set, and on a buy.",
      +  "enum": [
      +    "amazon",
      +    "cdiscount",
      +    "fnac",
      +    "carrefour"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "task"
      -]New value: +[
      +  "task",
      +  "goal_kind"
      +]
    • addedOutput schema / properties / taker
      Added value: +{
      +  "enum": [
      +    "side_panel",
      +    "extension"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / tasks_ahead
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  9. Changed7 schema fields changed
    • addedInput schema / properties / goal_kind
      Added value: +{
      +  "description": "What the run does on the site: \"read\" to find or compare prices and offers with nothing to buy, \"buy\" for a purchase, an order or a cart. Absent: \"buy\".",
      +  "enum": [
      +    "buy",
      +    "read"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / where_to_run
      Added value: +{
      +  "description": "Only the person's answer to Well's question of where this task runs, asked in this conversation: \"well_browser\" when they chose the Well browser, \"person_chrome\" when they chose to wait for their computer or to use Chrome after the extension. Never set it without that question and that answer.",
      +  "enum": [
      +    "well_browser",
      +    "person_chrome"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / background_unavailable / enum
      Previous value: -[
      -  "not_from_whatsapp",
      -  "no_start_url",
      -  "site_not_supported",
      -  "cloud_start_failed"
      -]New value: +[
      +  "not_from_whatsapp",
      +  "no_start_url",
      +  "site_not_supported",
      +  "cloud_start_failed",
      +  "cloud_run_live"
      +]
    • changedOutput schema / properties / delivery / enum
      Previous value: -[
      -  "link",
      -  "queued",
      -  "cloud",
      -  "ended"
      -]New value: +[
      +  "link",
      +  "queued",
      +  "cloud",
      +  "ended",
      +  "question"
      +]
    • addedOutput schema / properties / do_not_call_again
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / question
      Added value: +{
      +  "enum": [
      +    "computer_not_answering",
      +    "no_capable_extension"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / well_browser_offered
      Added value: +{
      +  "type": "boolean"
      +}
  10. Changed8 schema fields changed
    • addedInput schema / properties / payment_source
      Added value: +{
      +  "description": "\"link\" only when the person's latest message asks to pay this purchase with Stripe Link; \"merchant_saved\" only when they ask for the card saved on the site. Never set by default, and never for a web link.",
      +  "enum": [
      +    "merchant_saved",
      +    "link"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / repeats_earlier_hand_off
      Added value: +{
      +  "description": "True only when the person's latest message asks again for a task already handed off in this conversation: the same task sent again, or an ask to run it again or retry it. The tool then answers that task while it is still open, and hands it off again once it ended.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / background_unavailable / enum
      Previous value: -[
      -  "not_from_whatsapp",
      -  "no_start_url",
      -  "workspace_not_allowed",
      -  "site_not_supported",
      -  "site_denied",
      -  "cloud_start_failed"
      -]New value: +[
      +  "not_from_whatsapp",
      +  "no_start_url",
      +  "site_not_supported",
      +  "cloud_start_failed"
      +]
    • addedOutput schema / properties / browser_action_id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / browser_hand_off_run_id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / browser_reachable
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / delivery
      Added value: +{
      +  "enum": [
      +    "link",
      +    "queued",
      +    "cloud",
      +    "ended"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / payment_source_applied
      Added value: +{
      +  "type": "boolean"
      +}
  11. Changed5 schema fields changed
    • addedInput schema / properties / contact_details
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Checkout details the person wrote for this purchase (first_name, last_name, postal_code), as they wrote them. Never from Well data, never invented. Used for this run only, never added to the profile.",
      +  "properties": {
      +    "first_name": {
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "last_name": {
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "postal_code": {
      +      "maxLength": 10,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / run_in_background
      Added value: +{
      +  "description": "True only when the person's latest message explicitly asks to run this task as a background task, without their own computer or browser. An earlier ask for another task never carries over. Any other ask is false.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / background_unavailable
      Added value: +{
      +  "enum": [
      +    "not_from_whatsapp",
      +    "no_start_url",
      +    "workspace_not_allowed",
      +    "site_not_supported",
      +    "site_denied",
      +    "cloud_start_failed"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / extension_presence
      Added value: +{
      +  "enum": [
      +    "open",
      +    "signed_out",
      +    "not_seen",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / runner
      Added value: +{
      +  "enum": [
      +    "paired_chrome",
      +    "cloud"
      +  ],
      +  "type": "string"
      +}
  12. Changed1 schema field changed
    • changedOutput schema / properties / newly_connected / description
      Previous value: -"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. Start the reply with one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."New value: +"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."
  13. Changed1 schema field changed
    • removedInput schema / properties / session_name
      Removed value: -{
      -  "description": "Only for a Claude Code session: its short name, lower-case words joined by hyphens (for example \"export-csv\"). At most 40 characters.",
      -  "maxLength": 40,
      -  "type": "string"
      -}
  14. Changed5 schema fields changed
    • addedInput schema / properties / session_name
      Added value: +{
      +  "description": "Only for a Claude Code session: its short name, lower-case words joined by hyphens (for example \"export-csv\"). At most 40 characters.",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • removedOutput schema / properties / action_request_id
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / browser_state
      Removed value: -{
      -  "enum": [
      -    "ready",
      -    "browser_closed",
      -    "no_well_session",
      -    "other_login",
      -    "not_installed",
      -    "unknown"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / install_url
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / status_url
      Removed value: -{
      -  "type": "string"
      -}
  15. Changed2 schema fields changed
    • addedOutput schema / properties / browser_state
      Added value: +{
      +  "enum": [
      +    "ready",
      +    "browser_closed",
      +    "no_well_session",
      +    "other_login",
      +    "not_installed",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / install_url
      Added value: +{
      +  "type": "string"
      +}
  16. Changed4 schema fields changed
    • addedInput schema / properties / account_label
      Added value: +{
      +  "description": "A user-declared account label in the person's words (for example \"compte pro\"), only when they named an account; it is unverified, and never a login or an e-mail.",
      +  "maxLength": 120,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / workspace_scope
      Added value: +{
      +  "description": "Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.",
      +  "enum": [
      +    "family"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / action_request_id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / status_url
      Added value: +{
      +  "type": "string"
      +}
  17. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, which is consistent with 'runs nothing.' The description reinforces this and adds real behavioral context about the replacement path, including that a purchase requires an approved_tools entry. It stops short of saying what this call actually returns (an error, a redirect hint, or an empty result), which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical fact ('Retired, runs nothing') is front-loaded in three words, followed by the migration instruction. The long enumeration of browser-block fields is dense but earns its place as a one-stop redirect; it could have been trimmed to the defaults without losing much.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stub tool, an agent needs to know not to use it and what to do instead, and both are fully covered, including the purchase-approval special case. Only the return behavior of calling this retired stub is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional conversation_id, and the schema text is detailed about passing it back across calls. The description says nothing about this tool's own parameter, instead spending its space on the replacement tool's parameters, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Retired, runs nothing,' a specific and unambiguous statement of the tool's current status, and the title repeats the routing target. It tells the agent exactly how this tool differs from the sibling it names, so there is no ambiguity about which tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicitly what to call instead (well_create_browser_task) and enumerates the required call shape: executor_type "system", a browser block, and the field list (goal_kind, instruction, start_url, task_kind, run_in_background, shop, contact_details, account_label, payment_source). It even covers the approval case with the exact approved_tools entry, leaving essentially nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources