# `Dialup.Session`
[🔗](https://github.com/SouichiroTsujimoto/Dialup/blob/main/lib/session.ex#L1)

Issues scoped capability grants and headless sessions for HTTP MCP.

- `grant/2` — bearer token for an existing browser session process
- `start/2` — agent-first headless session (`POST /_dialup/agent-session`)
- `browser_url/1` — one-time join URL for browser handoff (`issue_browser_url`)

Browser handoff completes at `POST /_dialup/finalize-join` (cookie + token consumption).
See `guides/agent-handoff.md`.

# `browser_url`

Issues a one-time browser join URL for an existing session process.

Returns `browserUrl`, `browserToken`, and `expiresInMs`. The human client completes join via
WebSocket attach and `POST /_dialup/finalize-join` (see `guides/agent-handoff.md`).

# `grant`

# `revoke`

# `start`

Starts a headless session for an agent without an open browser tab.

Returns `{:ok, descriptor}` with `token`, `endpoint`, `grant`, `path`, and `sessionId`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
