Hosted MCP

Chab's hosted MCP endpoint is /mcp. An MCP client connects with browser-based OAuth authorization and PKCE. You can approve a connection as a guest, with no Chab account, or as a verified free or paid account. The browser approval page shows the permissions and the client's validated return destination, and requires explicit consent. If you have an account, choose Sign in instead on the guest-start page to return to the same host authorization after login. The guest consent page also offers this sign-in choice. If your existing guest trial needs current market-policy review or renewed Terms/acceptable-use acceptance, Chab sends you through the browser activation page before showing the connection consent again; this reuses the same trial identity and does not award a second credit allotment. A REST guest-trial bearer token is not an MCP OAuth token; do not paste one into an MCP client.

Dynamic client registration is intended once per host installation, not once per user. If a host receives HTTP 429 while registering or starting many unapproved consent flows, it should reuse its registered client and retry after the rate-limit or ten-minute consent window. An already-approved client remains usable by other users even when new client registrations are full. If a refresh response is lost, retrying the exact old refresh token for the same client and MCP resource within two minutes returns the original successful response, including the same replacement token; it does not rotate again. After that window, presenting the old token returns OAuth invalid_grant and revokes that connection's token family. The client must re-authorize through the browser if it lost the replacement token. A new account connection does not automatically inherit the prior connection's MCP-only result history, although the account's own history remains available through its account views.

The hosted operation tools are chab_operation_start, chab_operation_status, chab_operation_result, chab_operation_cancel, and chab_operation_artifact. The start tool accepts every provider operation in All tools, subject to the connection's approved scopes, explicit spending consent and current readiness. Clients should call tools/list after connecting because the visible tools reflect the connection's approved permissions. The artifact tool defaults to metadata. Pass content: "inline" to receive a PNG or JPEG up to 2 MiB as an image block, or UTF-8 text in pages of up to 64 KiB. Text pages return next_offset; pass it as offset for the next page. You may choose a smaller max_bytes (4–65,536) for clients with tighter response limits. Pass content: "link" for larger images or other binary files: the result contains a download URL valid for at most five minutes and three downloads, bounded by artifact retention. Anyone holding that URL can download while the original connection remains authorized. Keep it private. Revocation, trial expiry, claiming a guest trial, or loss of account authority disables it. Image rendering and clickable links depend on the MCP client.

Hosted artifact transfers are free: they use a transfer allowance that costs zero credits. Account transfers remain metered; guest transfers are recorded against the operation. The allowance is limited to 120 transfers per hour for both the connection and its beneficiary, plus 128 MiB per calendar day for a guest or 1 GiB for an account team. Byte limits apply to both each connection and the shared beneficiary. Limits use UTC; a download reserves its full file size even if interrupted. Inline pages count separately. An exhausted allowance returns artifact_transfer_limit_exceeded; inline content above its limit returns inline_content_too_large and should be retrieved with content: "link". Other binary formats or text that is not valid UTF-8 return inline_content_unavailable for inline requests; use content: "link". If an artifact or its connection can no longer be authorized for delivery, the tool returns artifact_delivery_unavailable.

To convert your own file, use the browser hosted MCP file-upload handoff when chab_file_upload_link is available in your connection's tool list. Tool errors include the same public error code and human-readable explanation as the /v1 API, including user_action, signup_url and upgrade_url, so an agent can show a useful next step without guessing.

Guest connection setup is available only while trial spending, funding, and dispatch are enabled. If those services are paused, sign in or try again later. Guest connections use the same one-off promotional credits, expiry, and abuse controls as the browser trial. These promotional credits do not refresh monthly. Approval requires the browser check and current Terms and acceptable-use acceptance. A connection has its own daily spend cap; other per-beneficiary limits still apply. A guest connection lasts until the trial ends or seven days pass, whichever comes first.

Guest connections also offer chab_sign_up. When the trial runs out, the agent asks the person for their email address and calls it. Chab emails a link; when the person confirms, a free account is created (or they sign in to their existing one), the trial credits left and the operation history move into it, and new accounts get bonus credits. The guest connection then ends: the person signs in to the Chab server once more in their AI client and approves it with their account. Claiming a trial does not transfer guest OAuth credentials to the new account. The claimed operation history remains visible to the claiming account through its account history; another guest connection cannot read it.

If a hosted operation was already dispatched to a provider, revoking or reconnecting the OAuth connection does not automatically release its reserved credits. Chab may read that exact provider task for cost settlement without restoring the revoked connection's bearer or result access. If the provider's actual cost remains unknown, the hold may require support review. An accepted search task already incurs its fixed provider cost. Cancelling or revoking a hosted connection after task acceptance may therefore settle the reserved charge without exposing the provider result through that connection.

Guest reconnects require a fresh browser challenge. Re-consenting the same AI client renews its existing connection: earlier access and refresh tokens stop working, but that connection can still read its previous results. A different client gets a separate connection and cannot read that history. At the connection limit, only stale connections without retained operation history may be retired; current valid connections still count against the limit. Reconnecting does not grant another trial-credit allotment.

An account connection also requires explicit operation-spending consent. New guest connections display a 25-credit rolling-24-hour allowance; new account connections display a 1,000-credit allowance. Existing connections retain their previously approved limits unless you explicitly approve renewed consent with the displayed allowance. These limits are ceilings, not free credit grants, and every operation still needs enough eligible balance and current readiness. Guest quick research needs a 25-credit hold. Paid research has model-dependent requirements: see research before choosing a model and credit budget. Research can incur provider cost before a final answer is ready. Verified free accounts can use the free tools and their available promotional credits; paid accounts use their eligible balance. A failed or exhausted credit check does not confer an overdraft. Revoking a connection invalidates its access and refresh credentials.

The OAuth token endpoint checks that a code or refresh token was actually issued by this server before doing expensive grant processing. Unknown or malformed grants return OAuth invalid_grant. Repeated exchanges of one grant, or a high rate of requests from one source, can return HTTP 429 with Retry-After; wait for that interval before retrying. Valid grants from a shared AI host are not slowed down by other clients' unknown grants.

Native clients can register an HTTP loopback callback on localhost, 127.0.0.1, or [::1]. Registered confidential clients may authenticate at the token endpoint with HTTP Basic; a lost refresh response can be retried with the same client credentials during the two-minute retry window. If an account must accept updated Terms during browser authorization, Chab returns to the pending authorization after acceptance.

For verified free accounts, Chab evaluates market eligibility from the account's recorded browser-origin country, not the AI host's server location. The host's shared IP address is not counted as the account's promotional IP-velocity limit; per-account and per-connection spend limits still apply.

The public GET /v1/cli/compatibility response reports whether hosted operation transport is currently enabled, the advertised operation keys, and whether accountless browser OAuth is available. anonymous_access: false means every MCP request still needs an approved OAuth connection; guest_credentials_accepted: false means REST bearer credentials are not accepted at /mcp.

If hosted operations are not enabled in a particular environment, use the documented /v1 API, CLI, or local chab mcp serve adapter instead. Local MCP runs on your machine and calls /v1 using your own REST credential; it is a separate transport from Chab's hosted MCP endpoint.