Receipts, invoices and a payTo register for AI agents that pay with x402 (USDC on Base).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer lg_... session token from lounge.signup. Free tools such as register.lookup work without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Admin agents, the owner and finance. A checkout link at Polar for Books or Books for teams (plan + period), monthly or yearly (a year costs ten months), or for the archive (archive: month or year, €5 a month or €50 a year), which keeps receipts and documents of a company without a paid plan. Polar is the seller: it charges, handles VAT, issues the invoice and renews until cancelled. The invoices are in Polar's customer portal (billing.portal). Hand the link to a person of your company. It starts once Polar confirms the payment.
An EIP-4361 message you got from a challenge, signed by your wallet
Your client name, e.g. "claude-code 2.1"
The archive instead of a plan, monthly or yearly
A lounge session token (lg_...) if you have one
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mcp https://mcp.402lounge.com/mcp
Headers
Authorization (optional, not in the config above): Bearer lg_... session token from lounge.signup. Free tools such as register.lookup work without it.Admin agents, the owner and finance. A checkout link at Polar for Books or Books for teams (plan + period), monthly or yearly (a year costs ten months), or for the archive (archive: month or year, €5 a month or €50 a year), which keeps receipts and documents of a company without a paid plan. Polar is the seller: it charges, handles VAT, issues the invoice and renews until cancelled. The invoices are in Polar's customer portal (billing.portal). Hand the link to a person of your company. It starts once Polar confirms the payment.
| Argument | Type | Description |
|---|---|---|
| plan | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| period | string | |
| archive | string | The archive instead of a plan, monthly or yearly |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"plan": {
"enum": [
"books",
"teams"
],
"type": "string"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"period": {
"enum": [
"month",
"year"
],
"type": "string"
},
"archive": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "The archive instead of a plan, monthly or yearly"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Your company's plan with its period and end, its limits (null means no limit), what it uses this month (transactions, agents, wallets), whether the one-time 20 % over the limit is used, whether the month is locked, the archive (keeps receipts and documents without a paid plan, archive) and what happens to them without either (retention).
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}The invoices 402lounge issued to your company for payments in USDC, newest first, each with a PDF link (add ?lang=de for German). With id: one invoice with its full content. Plans bought through Polar get their invoice from Polar.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents, the owner and finance. A link to Polar's customer portal: payment method, invoices, change or cancel the plan.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents, the owner and finance. An offer to pay in USDC on Base: a plan (plan + period), the archive for a company without a paid plan (archive: month or year) or the seller check for level 2 (seller_check: your listing slug, one year). The price is net in EUR, with VAT for your company and the ECB rate of the day, and the amount in USDC is unique for 30 minutes. Pay it yourself with your x402 client on pay_url, or a person sends exactly amount_usdc to pay_to. 402lounge sends an invoice. Nothing renews by itself. With quote_id only: the status of that offer, with the invoice once paid.
| Argument | Type | Description |
|---|---|---|
| plan | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| period | string | |
| archive | string | The archive, monthly or yearly |
| quote_id | string | Read an offer instead of asking for one |
| seller_check | string | Slug of your listing, for the seller check |
| session_token | string | A lounge session token (lg_...) if you have one |
Admins only. Schedules the agent's deletion in 7 days. Its wallets stay with the company, unassigned, and its receipts stay in the books.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| agent_id* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_id"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"agent_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admins change any agent, an agent may rename itself. role is admin or agent. The company always keeps an admin or an owner.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| role | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| agent_id* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"role": {
"enum": [
"admin",
"agent"
],
"type": "string"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"agent_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Every agent with its role, its wallets and what it paid this month (receipts, USDC, EUR).
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents and the owner. Closes the company in 30 days: name confirms it with the company name. Until then everything can be read and the export works (GET /v1/company/export), calls that write are refused with company_closing. Then agents, people, sign-ins, sessions and wallets are removed. Receipts and issued documents stay locked until their retention period ends. cancel: true keeps the company. now: true with export_kept: true closes at once and deletes the receipts and documents too, after you downloaded the export. Documents in a seller's name stay with the seller.
| Argument | Type | Description |
|---|---|---|
| now | boolean | Close at once and delete everything |
| name | string | The company name, as confirmation |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| cancel | boolean | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| export_kept | boolean | With now: you downloaded the export and keep the records yourself |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"now": {
"type": "boolean",
"description": "Close at once and delete everything"
},
"name": {
"type": "string",
"maxLength": 160,
"minLength": 1,
"description": "The company name, as confirmation"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"cancel": {
"type": "boolean"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"export_kept": {
"type": "boolean",
"description": "With now: you downloaded the export and keep the records yourself"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Where documents and notices go. start sets the address and mails a 6-digit code, confirm checks it, remove clears it (only while the account has no company data). Admins only.
| Argument | Type | Description |
|---|---|---|
| code | string | |
| string | ||
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action* | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action"
],
"properties": {
"code": {
"type": "string",
"maxLength": 6,
"minLength": 6
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"start",
"confirm",
"remove"
],
"type": "string"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Legal data, VAT status, tier and level, what is missing for the next tier, its agents with this month's spending, its people and your role.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admins only. A code valid for seven days. A new agent signs up with lounge.signup {invite_code}, an agent with its own account calls company.join {code} and brings its wallets and receipts.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}With an invite code. Works while your own account has no company data, no vouchers and no other agents: your wallets, receipts and reports move into that company and your own account goes away. You join as an agent, and an admin there can make you admin.
| Argument | Type | Description |
|---|---|---|
| code* | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"maxLength": 12,
"minLength": 8
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}list shows them. invite adds a person by email with a role: owner (everything), finance (documents, VAT check, plan), adviser (reads and exports, changes nothing, for a tax adviser), viewer (reads). They sign in by email link. An address that is in another company already keeps its login and gets this company next to the others. role changes a role, remove takes someone out. Admins and owners only, except list.
| Argument | Type | Description |
|---|---|---|
| role | string | |
| string | ||
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| member_id | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"role": {
"enum": [
"owner",
"finance",
"adviser",
"viewer"
],
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"list",
"invite",
"role",
"remove"
],
"type": "string",
"default": "list"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"member_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Where the tax adviser or the team ask for things, like a receipt that is missing or a purchase nobody described. list shows open ones (status: done or all for more), show one with its answers (request_id), ask writes one (title, body, optional month like 2026-10 and receipt_id), answer replies (request_id, body) and opens it again, done and reopen change its status, delete takes it back. A new request mails the people who keep the books, an answer everybody in the thread. Whoever reads the receipts may use it.
| Argument | Type | Description |
|---|---|---|
| body | string | |
| month | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| title | string | |
| action | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| status | string | |
| receipt_id | integer | |
| request_id | string | |
| session_token |
Admins only. Your account starts as a company named after you. Add name, legal_form, address_line1, postal_code, city, country and email to make it a company that gets monthly vouchers, plus a VAT id (checked against VIES at once) for invoice_ready. Any subset works, and the answer lists what is still missing.
| Argument | Type | Description |
|---|---|---|
| skr | string | Chart of accounts for exports. OWN takes own_accounts |
| city | string | |
| name | string | Legal name of the company, without the legal form |
| string | Where documents and notices go. A code confirms it | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| vat_id | string | VAT id in the format of its country, like DE123456789 or ATU12345678 (GET /v1/countries). EU numbers are checked against VIES |
| country | string | ISO 3166 two-letter code, e.g. DE |
| currency | string | The currency amounts are shown in, next to USDC: EUR (default, the currency of the documents), USD, or any currency with an ECB reference rate |
Asks VIES again and updates the tier. Admins, owners and finance.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admins only. agent_id null leaves the wallet unassigned. Receipts already written keep the agent that paid, new ones get the new agent. Sessions of the previous agent made with that wallet end.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | |
| agent_id* | any | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address",
"agent_id"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"agent_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}A name for the company's own lists, e.g. "Research budget". Agents may name their own wallets, admins any. label null clears it.
| Argument | Type | Description |
|---|---|---|
| label* | any | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address",
"label"
],
"properties": {
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents and owners. A wallet the listing names proves the service is your company's: first call returns a challenge for that wallet, second call with wallet_proof {message, signature} signed by it claims the listing. The wallet moves to level 1 and payments to it name the listing on receipts. A listing your company holds takes more wallets the same way.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing slug, e.g. glassnode |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | A payTo wallet of the listing |
| wallet_proof | object | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"address"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{1,59}$",
"description": "The listing slug, e.g. glassnode"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "A payTo wallet of the listing"
},
"wallet_proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
}
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}A listing with its wallets (network and level), what its calls cost, other networks it takes and its links. Company and location show from level 2 on. Free, no account.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing slug, e.g. glassnode |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{1,59}$",
"description": "The listing slug, e.g. glassnode"
}
}
}We call one paid URL once without paying, read its 402 answer and show the listing it would make: name, description, price, logo and the wallet you get paid on. Says so when the host or the wallet is listed already, then claim that listing instead.
| Argument | Type | Description |
|---|---|---|
| url* | string | One https URL that answers 402 Payment Required |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 8,
"description": "One https URL that answers 402 Payment Required"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Services that take x402 payments, with their level (0 listed, 1 wallet verified), what they offer (MCP, .well-known/x402, llms.txt) and a link. Search by name, description or host. filter: all, verified or mcp. sort: level, new or name. Free, no account.
| Argument | Type | Description |
|---|---|---|
| q | string | Words to look for, e.g. "on-chain data" |
| sort | string | |
| limit | integer | |
| filter | string | |
| offset | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"description": "Words to look for, e.g. \"on-chain data\""
},
"sort": {
"enum": [
"level",
"new",
"name"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"filter": {
"enum": [
"all",
"verified",
"mcp"
],
"type": "string"
},
"offset": {
"type": "integer",
"maximum": 10000,
"minimum": 0
}
}
}Admin agents and owners. Puts the service behind one paid URL into the directory on level 0, under your company: its payTo wallet on Base, the call and its price from the 402 answer. contact_email is only for us, never shown. Then prove the wallet with directory.claim for level 1.
| Argument | Type | Description |
|---|---|---|
| url* | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| contact_email* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"contact_email"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 8
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"contact_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 200
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admins, owners and finance. Issues a cancellation for a document, with your reason. The original keeps its number and turns to cancelled. Its payments are open again, so invoices.issue for that month (or the nightly run for last month) puts them in a new document.
| Argument | Type | Description |
|---|---|---|
| id* | string | Id or number of the document |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| reason* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"reason"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 4,
"description": "Id or number of the document"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"reason": {
"type": "string",
"maxLength": 500,
"minLength": 3
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Drafts of the documents the month would get today, one per seller, with lines, totals and the tax case. Nothing is stored and there is no number. Default: the current month (Europe/Berlin). The PDF of a draft is at /v1/invoices/draft/pdf?month=&seller=.
| Argument | Type | Description |
|---|---|---|
| month | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}The full document as JSON, by id or number, with where its archived files lie and their sha256. The PDF is at /v1/invoices/{id}/pdf with your session token.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 4
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admins, owners and finance. Runs by itself every night for last month. Call it for an older finished month or after a cancellation. One document per seller: the monthly overview on Free, the voucher with the tax note on Books. Payments that arrive after a document get a supplement. Pairs with receipts that lack a EUR rate are skipped and listed. Needs the company data and a confirmed email (tier company).
| Argument | Type | Description |
|---|---|---|
| month | string | Finished month, default: last month |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Finished month, default: last month"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Monthly vouchers per seller (and later invoices), newest first. Optional month like 2026-10.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| month | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Schedules your deletion as an agent in 7 days. cancel: true keeps you. Your wallets and receipts stay with the company. Needs a fresh signature with the delete statement (first call returns the challenge).
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| cancel | boolean | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| confirm* | boolean | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"confirm"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"cancel": {
"type": "boolean"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"confirm": {
"type": "boolean",
"const": true
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Everything 402lounge keeps about you as an agent off chain, as JSON. The company's books come from receipts.list and invoices.list.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Your name inside the company, 1 to 40 characters, unique in the company. Company data lives in company.update.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Which clients this agent has used. deactivate ends their sessions, activate turns them back on, disconnect forgets them.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| app_client | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"list",
"deactivate",
"activate",
"disconnect"
],
"type": "string",
"default": "list"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"app_client": {
"type": "string",
"maxLength": 40
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}A one-time browser link (10 minutes) into your company's dashboard, signed in as you, for the human behind you.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Who you are (agent and role), your company with its agents, people and level, its wallets, your apps, terms state and pending notices.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Terms changes, moderation decisions, deletion and security notes, for you and for your company. ack marks one as read.
| Argument | Type | Description |
|---|---|---|
| id | integer | |
| all | boolean | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"all": {
"type": "boolean"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"list",
"ack"
],
"type": "string",
"default": "list"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Rules, prices, the current terms and the exact sentences you will sign. Free, no account.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}create: a new lg_ token (needs a signature or an existing token). list and revoke manage them.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action* | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_id | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"create",
"list",
"revoke"
],
"type": "string"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Free. Your account is a company from the first call, named after you until company.update adds the legal data. With invite_code you join an existing company instead. Proves your wallet with a signature: first call returns a challenge, second call with proof {message, signature} creates the account. Wallets that cannot sign pay 0.001 USDC over HTTP instead (pay_instead in the answer), once payments are open.
| Argument | Type | Description |
|---|---|---|
| name* | string | Your name as an agent, unique inside your company, e.g. "Research" |
| string | Optional: where documents and notices of your new company go. Ignored with invite_code. | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| accept* | object | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address | string | Your wallet address, so the challenge comes back as a finished message |
| provider | string | awal, cdp, viem, other |
| invite_code | string | From company.invite, to join that company |
Versions, hashes and links of the terms and the privacy notice. With accept: true you confirm a new version: first call returns a challenge, second call with proof {message, signature} records it.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| accept | boolean | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"accept": {
"type": "boolean"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}The new wallet proves itself: first call returns a challenge for it, second call with wallet_proof {message, signature} adds it. It belongs to your company and you operate it. How many follows the plan: Free 1, Books 5 per agent and 15 in all, Books for teams without limit.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | |
| provider | string | |
| wallet_proof | object | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"provider": {
"type": "string",
"maxLength": 40
},
"wallet_proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
}
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}All wallets of your company, each with the agent that operates it. mine: true lists only yours.
| Argument | Type | Description |
|---|---|---|
| mine | boolean | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mine": {
"type": "boolean"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}The wallet you sign in with. It has to be assigned to you.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Your own wallets (admins: any wallet of the company). Not the one you sign in with, and never your last one. Sessions made with that wallet end. Its receipts stay.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| address* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}A single receipt of your company by id or transaction hash.
| Argument | Type | Description |
|---|---|---|
| id* | string | Receipt id or 0x transaction hash |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 66,
"minLength": 1,
"description": "Receipt id or 0x transaction hash"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Receipts of your company for one month (default: the current month, Europe/Berlin), newest first, each with the agent that paid. Totals per seller and per agent, and the reports still waiting for the chain. mine: true, agent_id or wallet narrow it.
| Argument | Type | Description |
|---|---|---|
| mine | boolean | Only the receipts of wallets you operated |
| limit | integer | |
| month | string | Like 2026-10 |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| before | integer | Page: the smallest receipt id of the previous page |
| client | string | Your client name, e.g. "claude-code 2.1" |
| status | string | Only receipts with this seller status |
| wallet | string | Only one paying wallet |
| agent_id | string | Only one agent of the company |
| session_token | string | A lounge session token (lg_...) if you have one |
Call this after every x402 payment: the transaction hash from the PAYMENT-RESPONSE header plus the URL you paid. 402lounge matches it with the transfer on Base and writes a receipt with the seller from the register, the catalogue description and a provisional EUR value. Free.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| amount | string | What you paid, in USDC, e.g. "0.002" |
| client | string | Your client name, e.g. "claude-code 2.1" |
| pay_to | string | The payTo address from the payment requirements |
| network | string | |
| tx_hash* | string | The settlement transaction, 0x plus 64 hex characters |
| description | string | What you bought, in your words. The seller's catalogue wins when it knows the URL. |
| resource_url | string | The URL you paid for (the 402 resource) |
| session_token | string | A lounge session token (lg_...) if you have one |
Wallet in, seller out: the listing that owns a payTo address, its verification level, its paid endpoints and the last health check. Free, no account. Call it before you pay someone new.
| Argument | Type | Description |
|---|---|---|
| address* | string | A payTo address on Base |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "A payTo address on Base"
}
}
}Level 2 for a listing of your company on level 1: action start {listing} opens the check and returns its steps. The domain of the listing is proved by an email address at it: email {id, email} sends a code there, confirm_email {id, code} confirms it. Without a mailbox, add the DNS TXT record from the check instead (_402lounge.<host>, value 402lounge-verify=<token>). verify {id} runs the steps again (company data with the name of the person who acts for the company, VIES, the domain, EU sanctions list, payment). Once all pass, 402lounge approves it, then the listing is on level 2 for a year. checkout {id} gives the Polar link for 10 € a year, included in Books. get {id}, withdraw {id}.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| code | string | confirm_email: the six-digit code from the mail |
| string | email: an address at the domain of the listing | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action* | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| listing | string | The listing slug, e.g. glassnode |
| session_token | string |
Your company as a seller: every listing with its level (0 listed, 1 wallet verified, 2 company verified, 3 invoicing), the company check and its steps, the seller profile (register entry, representative), the invoicing mandate and self-billing, and what is missing for the next level.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Invoices 402lounge issued in your name (L-2610-10427-01), credit notes your buyers issued to you (G-...) and their cancellations, newest first, each with its e-invoice. With id the whole document. PDF and XML: GET /v1/seller/invoices/{id}/pdf and /xml.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| limit | integer | |
| month | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string",
"maxLength": 80
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents, the owner and finance. Cancels an invoice in your name or a credit note you received, with a reason: a cancellation in your number range follows, the original stays. The payments are open again and the next monthly run issues them anew.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| reason* | string | |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"reason"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"reason": {
"type": "string",
"maxLength": 500,
"minLength": 3
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}Admin agents and owners. get shows the mandate text (link, version, sha256) and whether it is signed. sign: first call returns a challenge, sign it with your wallet and call again with agreement_proof {message, signature}. Then, with a listing on level 2 and Books, buyers on level 3 get monthly invoices in your name (§ 14 (2) UStG), issued by 402lounge. revoke ends it at the end of the month.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action* | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| confirm | boolean | |
| session_token | string | A lounge session token (lg_...) if you have one |
| agreement_proof | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"get",
"sign",
"revoke"
],
"type": "string"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"confirm": {
"type": "boolean"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
},
"agreement_proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
}
}
}
}Admin agents and owners. What level 2 needs on top of the company data: the name of the person who acts for the company (representative_name, the role is optional). The commercial register court and number help the check but are optional, no_register: true where there is none. sole_proprietor: true when the company is one person, then show_name says whether the register may show the name.
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| client | string | Your client name, e.g. "claude-code 2.1" |
| show_name | boolean | |
| no_register | boolean | |
| session_token | string | A lounge session token (lg_...) if you have one |
| register_court | any | e.g. Amtsgericht Charlottenburg |
| register_number | any | e.g. HRB 123456 |
| sole_proprietor | boolean | |
| representative_name | any | |
Admin agents and owners. Without a mandate, a company on level 2 can agree that its buyers on level 3 issue credit notes (Gutschriften) for what they paid, on any plan. get, sign (challenge, then agreement_proof), revoke (at the end of the month).
| Argument | Type | Description |
|---|---|---|
| proof | object | An EIP-4361 message you got from a challenge, signed by your wallet |
| action* | string | |
| client | string | Your client name, e.g. "claude-code 2.1" |
| confirm | boolean | |
| session_token | string | A lounge session token (lg_...) if you have one |
| agreement_proof | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"get",
"sign",
"revoke"
],
"type": "string"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"confirm": {
"type": "boolean"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
},
"agreement_proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
}
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"plan": {
"enum": [
"books",
"teams"
],
"type": "string"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"period": {
"enum": [
"month",
"year"
],
"type": "string"
},
"archive": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "The archive, monthly or yearly"
},
"quote_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Read an offer instead of asking for one"
},
"seller_check": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{1,59}$",
"description": "Slug of your listing, for the seller check"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}| string |
| A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"body": {
"type": "string",
"maxLength": 4000
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"title": {
"type": "string",
"maxLength": 200
},
"action": {
"enum": [
"list",
"show",
"ask",
"answer",
"done",
"reopen",
"delete"
],
"type": "string",
"default": "list"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"status": {
"enum": [
"open",
"done",
"all"
],
"type": "string"
},
"receipt_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"request_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}| language | string | null | Language of documents and mails: en, de, fr, it, es, nl, pt, sv, da, fi or nb. Null takes the language of the country |
| fx_method | string | How USDC becomes EUR on documents. Today only ecb_daily (ECB reference rate of the payment day) |
| legal_form | string | GmbH, UG, AG, e.K., Inc., ... |
| tax_number | string |
| vat_status | any | How the company stands with VAT: vat_id, tax_number (registered, VAT id still to come), small_business (§ 19 UStG) exempt (only VAT-exempt sales) or not_registered (no VAT registration, the USA or another country without VAT). Decides the tax note on its documents |
| postal_code | string |
| own_accounts | any | With skr OWN: the expense, clearing and USDC holding accounts of your chart, 4 to 8 digits |
| address_line1 | string |
| address_line2 | string |
| address_state | string | State or province, written after the city in the USA, Canada and Australia (TX, ON, NSW) |
| session_token | string | A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"skr": {
"enum": [
"SKR03",
"SKR04",
"OWN"
],
"type": "string",
"description": "Chart of accounts for exports. OWN takes own_accounts"
},
"city": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Legal name of the company, without the legal form"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Where documents and notices go. A code confirms it"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"vat_id": {
"type": "string",
"maxLength": 30,
"description": "VAT id in the format of its country, like DE123456789 or ATU12345678 (GET /v1/countries). EU numbers are checked against VIES"
},
"country": {
"type": "string",
"description": "ISO 3166 two-letter code, e.g. DE"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "The currency amounts are shown in, next to USDC: EUR (default, the currency of the documents), USD, or any currency with an ECB reference rate"
},
"language": {
"type": [
"string",
"null"
],
"description": "Language of documents and mails: en, de, fr, it, es, nl, pt, sv, da, fi or nb. Null takes the language of the country"
},
"fx_method": {
"enum": [
"ecb_daily"
],
"type": "string",
"description": "How USDC becomes EUR on documents. Today only ecb_daily (ECB reference rate of the payment day)"
},
"legal_form": {
"type": "string",
"maxLength": 40,
"description": "GmbH, UG, AG, e.K., Inc., ..."
},
"tax_number": {
"type": "string",
"maxLength": 30
},
"vat_status": {
"anyOf": [
{
"enum": [
"vat_id",
"tax_number",
"small_business",
"exempt",
"not_registered"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "How the company stands with VAT: vat_id, tax_number (registered, VAT id still to come), small_business (§ 19 UStG) exempt (only VAT-exempt sales) or not_registered (no VAT registration, the USA or another country without VAT). Decides the tax note on its documents"
},
"postal_code": {
"type": "string",
"maxLength": 12,
"minLength": 3
},
"own_accounts": {
"anyOf": [
{
"type": "object",
"required": [
"expense",
"clearing",
"usdc"
],
"properties": {
"usdc": {
"type": "string",
"pattern": "^\\d{4,8}$"
},
"expense": {
"type": "string",
"pattern": "^\\d{4,8}$"
},
"clearing": {
"type": "string",
"pattern": "^\\d{4,8}$"
}
}
},
{
"type": "null"
}
],
"description": "With skr OWN: the expense, clearing and USDC holding accounts of your chart, 4 to 8 digits"
},
"address_line1": {
"type": "string",
"maxLength": 120,
"minLength": 2
},
"address_line2": {
"type": "string",
"maxLength": 120
},
"address_state": {
"type": "string",
"maxLength": 40,
"description": "State or province, written after the city in the USA, Canada and Australia (TX, ON, NSW)"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}| session_token |
| string |
| A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"accept"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Your name as an agent, unique inside your company, e.g. \"Research\""
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Optional: where documents and notices of your new company go. Ignored with invite_code."
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"accept": {
"type": "object",
"required": [
"terms",
"privacy",
"business"
],
"properties": {
"terms": {
"type": "string"
},
"privacy": {
"type": "string"
},
"business": {
"type": "boolean",
"const": true
}
}
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Your wallet address, so the challenge comes back as a finished message"
},
"provider": {
"type": "string",
"maxLength": 40,
"description": "awal, cdp, viem, other"
},
"invite_code": {
"type": "string",
"maxLength": 12,
"minLength": 8,
"description": "From company.invite, to join that company"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mine": {
"type": "boolean",
"description": "Only the receipts of wallets you operated"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Like 2026-10"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"before": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page: the smallest receipt id of the previous page",
"exclusiveMinimum": 0
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"status": {
"enum": [
"verified",
"listed",
"unverified"
],
"type": "string",
"description": "Only receipts with this seller status"
},
"wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Only one paying wallet"
},
"agent_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Only one agent of the company"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}| payment_response | any | The raw PAYMENT-RESPONSE header, if you still have it |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tx_hash"
],
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"amount": {
"type": "string",
"maxLength": 24,
"description": "What you paid, in USDC, e.g. \"0.002\""
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"pay_to": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The payTo address from the payment requirements"
},
"network": {
"enum": [
"base",
"base-sepolia"
],
"type": "string"
},
"tx_hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "The settlement transaction, 0x plus 64 hex characters"
},
"description": {
"type": "string",
"maxLength": 280,
"description": "What you bought, in your words. The seller's catalogue wins when it knows the URL."
},
"resource_url": {
"type": "string",
"format": "uri",
"maxLength": 500,
"description": "The URL you paid for (the 402 resource)"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
},
"payment_response": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
],
"description": "The raw PAYMENT-RESPONSE header, if you still have it"
}
}
}| A lounge session token (lg_...) if you have one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"code": {
"type": "string",
"pattern": "^\\s*\\d{6}\\s*$",
"description": "confirm_email: the six-digit code from the mail"
},
"email": {
"type": "string",
"maxLength": 200,
"minLength": 3,
"description": "email: an address at the domain of the listing"
},
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"action": {
"enum": [
"start",
"get",
"verify",
"email",
"confirm_email",
"checkout",
"withdraw"
],
"type": "string"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"listing": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{1,59}$",
"description": "The listing slug, e.g. glassnode"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
}
}
}| representative_role |
| any |
| e.g. Managing director |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"proof": {
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"description": "An EIP-4361 message you got from a challenge, signed by your wallet"
},
"client": {
"type": "string",
"maxLength": 40,
"description": "Your client name, e.g. \"claude-code 2.1\""
},
"show_name": {
"type": "boolean"
},
"no_register": {
"type": "boolean"
},
"session_token": {
"type": "string",
"description": "A lounge session token (lg_...) if you have one"
},
"register_court": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"minLength": 2
},
{
"type": "null"
}
],
"description": "e.g. Amtsgericht Charlottenburg"
},
"register_number": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 2
},
{
"type": "null"
}
],
"description": "e.g. HRB 123456"
},
"sole_proprietor": {
"type": "boolean"
},
"representative_name": {
"anyOf": [
{
"type": "string",
"maxLength": 120,
"minLength": 2
},
{
"type": "null"
}
]
},
"representative_role": {
"anyOf": [
{
"type": "string",
"maxLength": 60,
"minLength": 2
},
{
"type": "null"
}
],
"description": "e.g. Managing director"
}
}
}