Skip to main content

Overview

Arlo Health uses OAuth 2.1 with PKCE (Proof Key for Code Exchange) for authentication. This provides secure authentication without requiring the agent to handle user credentials.
On connector hosts (Claude.ai, ChatGPT) the platform’s connector UI runs this whole flow for you — init_signup and check_account_status are not advertised there and must not be called. The flow below is for agent runtimes that manage their own OAuth (Claude Code, OpenClaw, custom agents).

OAuth 2.1 Flow

Discovery Endpoints

Arlo exposes standard OAuth 2.1 discovery endpoints:

MCP Server Card

OAuth Authorization Server Metadata

Authentication Flow

Step 1: Initialize Signup

Call init_signup to begin the OAuth flow:
Response:

Step 2: User Completes Auth

Direct the user to open authUrl in their browser. They will:
  1. Create an account or sign in
  2. Grant permissions to your agent
  3. Be redirected back to Arlo

Step 3: Poll for Completion

Poll check_account_status until authentication completes:
The auth link expires after 15 minutes. If the user doesn’t complete authentication, you’ll need to call init_signup again.

Scopes

Token Management

Access Tokens

  • Short-lived (typically 1 hour)
  • Include in requests as Authorization: Bearer <token>
  • Automatically managed by MCP clients

Refresh Tokens

  • Long-lived (days/weeks)
  • Use to obtain new access tokens
  • Requires offline_access scope

Token Refresh Flow

Webhook Registration

The best time to register webhooks is during init_signup:
You can also register or update webhooks after authentication using register_webhook. If you call init_signup without webhook parameters, existing webhook config is preserved.

Session Management

Session Persistence

  • Sessions are tied to the user’s Arlo account
  • Sessions persist until explicitly revoked
  • Webhook registrations are permanent per session

Re-authentication

If a session expires:
  1. Call init_signup again
  2. User completes OAuth flow
  3. New session is created
  4. Re-register webhooks if needed

Checking Session Status

Use check_account_status without a sessionId to check the current session:

Security Best Practices

Webhook Token Security

  • Use cryptographically random tokens
  • Store tokens securely (environment variables, secrets manager)
  • Rotate tokens periodically
  • Always validate tokens on incoming webhooks

PKCE Requirements

  • Always use S256 code challenge method
  • Generate cryptographically random code verifiers
  • Never reuse code verifiers

Error Handling

Common Authentication Errors