Skip to main content
Glama
guanyuyan
by guanyuyan

login

Opens a visible browser for manual authentication and saves the site session to disk so future web fetches can access protected pages automatically.

Instructions

打开带界面的浏览器手动登录,并把该站登录态持久化到磁盘。

用于 web_fetch 报告 login_required=true 的站点:浏览器会以非无头方式打开目标页, 请在弹出的窗口里完成登录;检测到登录成功或超时后,登录态(cookie 等)会被保存, 之后该站的 web_fetch 会自动带上登录态。

Args: url: 目标站点任一页面 URL(按域名区分登录态)。 timeout: 等待手动登录完成的秒数,超时也会保存当前状态便于下次继续。 session: 会话名(默认 default)。需要多账号/多身份时分别用不同名字登录, web_fetch 时传同一个 session 即可,互不覆盖。

Input Schema

NameRequiredDescriptionDefault
urlYes
sessionNodefault
timeoutNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.10.1
    • addedInput schema / properties / session
      Added value: +{
      +  "default": "default",
      +  "title": "Session",
      +  "type": "string"
      +}
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the browser is non-headless (human interaction required), that the call blocks until login succeeds or the timeout elapses, that state is saved even on timeout, and that state is keyed by domain and isolated per session. It omits where the credentials land on disk and whether an existing valid login is overwritten.

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?

Front-loaded with the one-line action summary, then the operational context, then per-argument notes. Slightly repetitive between the opening line and the second paragraph, but every clause carries information an agent needs.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the description covers the rest of what matters for a side-effecting, human-in-the-loop tool: interaction model, timeout behavior, and state keying. Nothing essential to invoking it correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does: url is 'any page of the target site, keyed by domain', timeout is seconds waited with state still saved on expiry, and session is a namespace for parallel identities that web_fetch must match. That is real semantics — particularly the domain keying and the session must-match rule — not present in the schema.

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?

States a specific action chain — open a headed browser, let the user log in manually, persist the resulting cookies to disk — and anchors it to a concrete sibling trigger (web_fetch returning login_required=true). An agent can distinguish this from session_list/session_export without reading any schema.

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

Usage Guidelines4/5

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

Gives an explicit activation condition: use it for sites where web_fetch reports login_required=true. It also explains the multi-account case via distinct session names. It stops short of saying when NOT to use it (e.g. checking existing state with session_list first, or that it is unnecessary when a session is already valid).

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