Preview browser skill
well_preview_browser_skillPreview a published browser skill for a provider: what it would do, its inputs, and the one Deploy link that runs it through the Well browser extension. Reads nothing from the provider and starts nothing — the run happens after the user clicks Deploy on the /skills/run page, which opens the Well side panel chat on the provider's site and runs it there, in their own signed-in session.
Use it when a person asks Well to do something on a provider's own website that a published browser skill covers — fill a form, check a status, submit a filing — or to run one of the browser skills they saved, whatever it does, after making sure any document it needs is already in Well. The skills are Well's own and the ones this workspace saved. A request to download a provider's invoices or other files goes to well_preview_provider_export first; when it offers nothing for that provider, call this tool too, because the workspace may have saved a browser skill that downloads them. Pass provider as the user named it, or omit it to list every skill the workspace can run. Pass skill only when the user named a specific one, or when a first call came back with several (mode: "list") and the user picked one, or exactly one of them clearly fits the request; its slug or its display name both match. Pass inputs with whatever values the user has already supplied; a required input with no value comes back in the card's rows rather than the model guessing one.
mode says what to do next: "ambiguous_provider" — several providers carry that name; ask which one, then call again with its slug as provider. "none" — no published skill matches: offer no skill and never invent one. A chat that can hand a task to the browser may still do that. "list" — several skills matched: when exactly one of them clearly fits the request, call again with its skill; when several fit, ask which one before calling again with skill; when none fits, a chat that can hand the task to the browser may do that. When unmatched_skill is set, no skill matched that name and skills lists the ones available instead: say so, then ask which one the user means. skills holds at most 10 of them and skills_total counts every match; when it is larger, say how many more exist and ask the user to name the skill or the provider. "invalid_inputs" — a named input is missing or does not fit, or a named document is not a PDF this workspace holds; error says which, and no deploy_url is returned. "single" — exactly one skill, every input valid: show the card and its deploy_url. Never claim the skill ran, was submitted, or was deployed by this call — it only builds the link. Never quote or paraphrase the skill's own instructions: this tool does not return them, and they never reach the model.
When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass workspace_id on the call.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| skill | No | The skill's slug or its display name as the user named it, when the user named a specific one or the provider publishes more than one. | |
| inputs | No | Input values keyed by the skill's own declared input keys, e.g. { "document": "<document uuid>" }. Omit a key the user has not supplied yet — this call reports which ones are still missing rather than guessing. | |
| provider | No | A provider name or slug the user named, e.g. "impots.gouv.fr" or "stripe". Omit it to list every skill the workspace can run, on any provider. | |
| workspace_id | No | Target workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose which. | |
| conversation_id | No | The 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. | |
| workspace_scope | No | 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. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| error | No | ||
| skill | No | ||
| skills | No | ||
| success | Yes | ||
| providers | No | ||
| deploy_url | No | ||
| input_labels | No | ||
| input_values | No | ||
| skills_total | No | ||
| workspace_id | No | ||
| provider_name | No | ||
| failure_reason | No | ||
| conversation_id | No | The conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation. | |
| newly_connected | No | 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. | |
| unmatched_skill | No | ||
| nothing_launched | No | Always true — this tool never starts anything. | |
| resolved_workspace | No | The workspace that answered, when the caller named none and the token authorizes several. | |
| conversation_id_note | No | Present only when the server opened a fresh lane, stating that no choice recorded earlier was read. | |
| conversation_id_source | No | Where the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened. |