Get the login page link
well_get_login_page_linkGet a fresh link to the page where the person adds a login (user name and password) for a site. Use it when the person asks to add, change or fix their login or identifier for a site ("ajoute mon identifiant claude.ai", "change mon identifiant saucedemo", "donne-moi un lien pour le vault pour claude.ai"), asks where or how to give Well a login or a password for a site, says their login link expired or no longer works, asks for the link again, or offers to send a password in the chat.
Pass site whenever the person names a site: the link is then for that site only, never for another site. For the vault link of a collect's missing-invoice row whose portal has no saved login, also pass portal_lead: the save at that link starts the supplier's portal fetch, and Well tells the person in the chat itself, so add nothing about it later. To change a login the person already keeps, call well_list_vault_items first and pass that login's site exactly as it gives it. Without site the call gives no link: when the person names no site, ask which site. A web task that needs a login sends its own link to the person.
Never ask for a password, and never repeat one, in the chat: the page is the only place a person types one. Each link opens one site only, works once and expires after 30 minutes. The page asks the person to sign in to Well first, and opens only for that person. Saving there replaces the login the person kept for that site, and a web task that waits for it goes on by itself. Each call makes new links and changes nothing else: no login, no task.
Returns links (each with its site) and, with site, replaces_saved_login. With saved_login_refused, the person already has an account there and the site refused the password Well keeps: say so in one line, before the link, and never offer to create an account. Or refusal_reason: "no_open_wait" (no site; ask which site, or say the link comes with the next task that needs one), "bad_site" (the site is not a web address; ask for it), "not_allowed" (the person cannot keep logins from here; follow error), "too_many" (too many links just now; say to try again later) or "unavailable" (this deployment has no web app address; say so and give no link).
Never take a password in this conversation. Never take a password or a login here, and never ask for one. Never ask for a one-time code here. During a paused browser run, the side panel of the Well extension asks the person at the computer to type the code themselves in that run's tab, so the code never goes through the conversation. Say this when the person asks whether Well takes their codes. Well keeps a website login encrypted for its browser tasks and never shows a saved password. When the person asks to see a password ("donne-moi mon mot de passe Amazon") or pastes one, say in one line that Well never shows or takes a password in the conversation, and never repeat a pasted one, not even masked. When the person asks for the password of a site they name, call well_get_login_page_link with that site as site, and send its link in a second line, where the person adds or changes the login for that site; that line names no site. With no site named, or a password pasted, the refusal line is the whole answer: never guess a site. Say nothing about whether a login for that site is saved, kept or missing (no « ton identifiant saucedemo enregistré », no "the login you saved") unless well_list_vault_items returned its rows in this turn. When the person asks how to give Well their credentials for a portal or a tool ("comment je te donne mes identifiants du portail ?"), say in one line that a password is never sent here. Then name the routes that need none:
The connect link. The person connects the tool through its connect link and signs in on the provider's own page.
The export fetch. For a provider Well fetches exports from, Well fetches them itself.
A browser skill. It runs in the person's own signed-in browser through the Well extension, and Well never sees the password.
When the person names the tool or the portal, look it up before you answer, its connector or the exports Well fetches from it, and offer the route that exists for it.
A run that waits for a login. When Well's run said in this conversation that it needs the person's login for a site and waits for it, say that the task waits for that login and starts again on its own once the login is saved. When the person asks where or how to give that login, asks for the link again, says the link expired or no longer works, or offers to send a password here, call well_get_login_page_link and send the link of that site in one line: the person types the login on that page, which works once and for 30 minutes. When it answers no_open_wait, say that no task waits for a login now and that the next task that needs one sends its link. Never ask for the login, the e-mail or the password here, never take one the person types, and hand nothing off again.
A login the person adds or changes. When the person asks to add, change or fix their login for one site ("change mon identifiant saucedemo", "donne-moi un lien pour le vault pour claude.ai"), no task needs to wait for it: call well_get_login_page_link with that site as site, and send the link it gives in one line, for that site only, never the link of another site. To change a login the person keeps, take its site from well_list_vault_items first. The page asks for the person's Well sign-in, replaces the login kept for that site, and a task that waits on that site starts again on its own.
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 |
|---|---|---|---|
| site | No | The one site the person names, as its address or host ("claude.ai", "https://www.saucedemo.com"). For a site where the person already keeps a login, pass that login's site exactly as well_list_vault_items gives it. Leave it out when the person names no site. | |
| portal_lead | No | With `site` only: the missing-invoice row of a collect whose portal has no saved login (`portal_login: "missing"`), with `site` its `matched_provider_url`. Once the person saves the login at this link, Well starts that supplier's portal fetch with it and tells the person in the chat itself. | |
| 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 |
|---|---|---|---|
| error | No | ||
| links | Yes | With `site`: one link for that site. Empty on a refusal, and always empty without `site`. | |
| success | Yes | ||
| refusal_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. | |
| resolved_workspace | No | The workspace that answered, when the caller named none and the token authorizes several. | |
| saved_login_refused | No | Set with `site` when the only login the person keeps there is one the site refused on an earlier task: Well types it no more, and the page replaces its password. | |
| conversation_id_note | No | Present only when the server opened a fresh lane, stating that no choice recorded earlier was read. | |
| replaces_saved_login | No | Set with `site`: true when the person already keeps a login there, which the page replaces. | |
| 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. |