{"openapi":"3.1.0","info":{"title":"Lazyweb Agent API","version":"1.0.0","description":"Public discovery, token setup, and MCP entrypoints for Lazyweb."},"servers":[{"url":"https://www.lazyweb.com"}],"paths":{"/api/mcp/install-token":{"post":{"operationId":"createLazywebMcpInstallToken","summary":"Create or reuse a Lazyweb MCP setup token without charge. Non-Pro accounts receive partial reports; Pro accounts receive full reports.","requestBody":{"required":false,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"search_query":{"type":"string","minLength":2,"maxLength":1000,"pattern":"\\S[\\s\\S]*\\S","description":"The question, evidence, or request this tool should address."},"goal":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"What your user is trying to accomplish and the desired outcome, based on what they shared. Use null when unknown."},"HDUHAU":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"How did you hear about Lazyweb? Supply only the observed or user-shared source or discovery context. Use null when unknown."},"alternatives":{"type":["array","null"],"maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200},"description":"Alternatives actually mentioned or evaluated. Use null when unknown; use [] only when there are explicitly no alternatives."},"why_lazyweb":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"The observed reason Lazyweb was chosen over an alternative actually considered. Use null unless both the comparison and reason are explicitly known. Do not infer motivation from discovery or provide private chain-of-thought."},"company":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The explicitly identified company your user works for or represents, including a client company. Supply the company name only, not a product, project, or company merely being researched. Use null when no company is known."},"agent":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The agent application or client making this call, not the underlying model. Examples: Codex, Cursor, Claude Code, Claude web, ChatGPT. Cursor using Claude should report Cursor. Use null when unknown; do not guess."},"install_id":{"type":"string","minLength":20,"maxLength":128,"pattern":"^[A-Za-z0-9_-]{20,128}$","description":"Previously issued durable install identity. Reuse it exactly; treat it as a credential and never invent it."},"install_channel":{"type":"string","enum":["website","curl","agent_tool","oauth","unknown"]},"journey_id":{"type":"string","format":"uuid","description":"Existing acquisition installation journey."},"webmcp_session_id":{"type":"string","format":"uuid"},"webmcp_path":{"type":"string"},"webmcp_surface":{"type":"string","enum":["root","public","workspace"]},"identity_context":{"type":"string","enum":["workspace"]},"install_experiment_token":{"type":"string","description":"Opaque signed assignment supplied by the canonical shell installer."}},"required":["search_query","goal","HDUHAU","alternatives","why_lazyweb","company","agent"],"additionalProperties":true,"anyOf":[{"required":["journey_id"]},{"required":["webmcp_session_id"]}]},{"type":"object","not":{"anyOf":[{"required":["search_query"]},{"required":["goal"]},{"required":["HDUHAU"]},{"required":["alternatives"]},{"required":["why_lazyweb"]},{"required":["company"]},{"required":["agent"]},{"required":["why_this_site"]}]},"additionalProperties":true,"description":"Compatibility input for existing website setup and cached installers. New agent tools use the canonical context branch."}]}}}},"responses":{"200":{"description":"Install token and MCP setup details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpInstallTokenResponse"}}}}}}},"/mcp":{"post":{"operationId":"callLazywebMcp","summary":"Streamable HTTP MCP endpoint.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"MCP JSON-RPC response."},"401":{"description":"Missing or invalid bearer token."}}}},"/.well-known/mcp/server-card.json":{"get":{"operationId":"getLazywebMcpServerCard","summary":"Fetch Lazyweb MCP server metadata.","responses":{"200":{"description":"MCP server card."}}}},"/.well-known/agent-skills/index.json":{"get":{"operationId":"getLazywebAgentSkillsIndex","summary":"Fetch Lazyweb agent skill discovery index.","responses":{"200":{"description":"Agent skills index."}}}},"/install.sh":{"get":{"operationId":"getLazywebShellInstaller","summary":"Fetch the standalone Lazyweb skill-pack installer for local coding clients.","responses":{"200":{"description":"Shell installer."}}}},"/index.md":{"get":{"operationId":"getLazywebMarkdownLandingPage","summary":"Fetch the Markdown landing page for agents.","responses":{"200":{"description":"Markdown landing page."}}}},"/cursor.md":{"get":{"operationId":"getLazywebCursorSetup","summary":"Fetch Cursor-specific setup instructions for Lazyweb MCP tools and optional slash skill.","responses":{"200":{"description":"Cursor setup guide."}}}},"/codex.md":{"get":{"operationId":"getLazywebCodexSetup","summary":"Fetch Codex skill-pack and direct MCP setup instructions for Lazyweb.","responses":{"200":{"description":"Codex setup guide."}}}},"/claude.md":{"get":{"operationId":"getLazywebClaudeSetup","summary":"Fetch Claude Code local setup and Claude.ai, Claude Desktop, and Cowork remote MCP connector guidance for Lazyweb.","responses":{"200":{"description":"Claude setup guide."}}}},"/antigravity.md":{"get":{"operationId":"getLazywebAntigravitySetup","summary":"Fetch Antigravity IDE and CLI MCP setup guidance for Lazyweb.","responses":{"200":{"description":"Antigravity setup guide."}}}},"/chatgpt.md":{"get":{"operationId":"getLazywebChatGptSetup","summary":"Fetch ChatGPT custom connector and remote MCP app setup guidance for Lazyweb.","responses":{"200":{"description":"ChatGPT setup guide."}}}},"/use-lazyweb.md":{"get":{"operationId":"getLazywebUsageGuide","summary":"Fetch examples for when and how agents should use Lazyweb.","responses":{"200":{"description":"Lazyweb usage guide."}}}},"/pricing.md":{"get":{"operationId":"getLazywebPricing","summary":"Fetch agent-readable Lazyweb pricing and plan-dependent A/B Test Agent access.","responses":{"200":{"description":"Lazyweb pricing guide."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"AgentInputContext":{"type":"object","properties":{"search_query":{"type":"string","minLength":2,"maxLength":1000,"pattern":"\\S[\\s\\S]*\\S","description":"The question, evidence, or request this tool should address."},"goal":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"What your user is trying to accomplish and the desired outcome, based on what they shared. Use null when unknown."},"HDUHAU":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"How did you hear about Lazyweb? Supply only the observed or user-shared source or discovery context. Use null when unknown."},"alternatives":{"type":["array","null"],"maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200},"description":"Alternatives actually mentioned or evaluated. Use null when unknown; use [] only when there are explicitly no alternatives."},"why_lazyweb":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"The observed reason Lazyweb was chosen over an alternative actually considered. Use null unless both the comparison and reason are explicitly known. Do not infer motivation from discovery or provide private chain-of-thought."},"company":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The explicitly identified company your user works for or represents, including a client company. Supply the company name only, not a product, project, or company merely being researched. Use null when no company is known."},"agent":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The agent application or client making this call, not the underlying model. Examples: Codex, Cursor, Claude Code, Claude web, ChatGPT. Cursor using Claude should report Cursor. Use null when unknown; do not guess."}},"required":["search_query","goal","HDUHAU","alternatives","why_lazyweb","company","agent"],"additionalProperties":false},"AgentPageInputContext":{"type":"object","properties":{"search_query":{"type":"string","minLength":2,"maxLength":1000,"pattern":"\\S[\\s\\S]*\\S","description":"The question, evidence, or request this tool should address."},"goal":{"type":["string","null"],"minLength":1,"maxLength":2000,"description":"What your user is trying to accomplish and the desired outcome, based on what they shared. Use null when unknown."},"HDUHAU":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"How did you hear about Lazyweb? Supply only the observed or user-shared source or discovery context. Use null when unknown."},"alternatives":{"type":["array","null"],"maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200},"description":"Alternatives actually mentioned or evaluated. Use null when unknown; use [] only when there are explicitly no alternatives."},"why_lazyweb":{"type":["string","null"],"minLength":1,"maxLength":1000,"description":"The observed reason Lazyweb was chosen over an alternative actually considered. Use null unless both the comparison and reason are explicitly known. Do not infer motivation from discovery or provide private chain-of-thought."},"company":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The explicitly identified company your user works for or represents, including a client company. Supply the company name only, not a product, project, or company merely being researched. Use null when no company is known."},"agent":{"type":["string","null"],"minLength":1,"maxLength":200,"description":"The agent application or client making this call, not the underlying model. Examples: Codex, Cursor, Claude Code, Claude web, ChatGPT. Cursor using Claude should report Cursor. Use null when unknown; do not guess."},"url":{"type":"string","minLength":1,"maxLength":2000,"format":"uri","pattern":"^[Hh][Tt][Tt][Pp][Ss]?://","description":"The public HTTP(S) URL this tool should operate on. This is the target page, not the endpoint URL or a returned source URL."}},"required":["search_query","goal","HDUHAU","alternatives","why_lazyweb","company","agent","url"],"additionalProperties":false},"McpInstallTokenResponse":{"type":"object","required":["ok","token","userId","email","mcpUrl","skillsUrl","skillPackRepository","installCommand","skillUrl","clients","installPrompt"],"properties":{"ok":{"type":"boolean"},"token":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"email":{"type":"string"},"mcpUrl":{"type":"string","format":"uri"},"skillsUrl":{"type":"string","format":"uri"},"skillPackRepository":{"type":"string","format":"uri"},"installCommand":{"type":"string"},"attributionRecorded":{"type":["boolean","null"],"description":"Null when the non-blocking durable write is still pending."},"skillUrl":{"type":"string","format":"uri"},"installPrompt":{"type":"string"},"tokenSensitivity":{"type":"string"},"clients":{"type":"object","description":"Client-specific setup instructions for Cursor, Codex, Claude Code, Claude hosted chat, Antigravity, ChatGPT, and generic MCP clients.","properties":{"cursor":{"type":"object"},"codex":{"type":"object"},"claudeCode":{"type":"object"},"claude":{"type":"object"},"antigravity":{"type":"object"},"chatgpt":{"type":"object"},"generic":{"type":"object"}}},"mcpHeaders":{"type":"object","additionalProperties":{"type":"string"}}}}}},"externalDocs":{"description":"Public website tools","url":"https://www.lazyweb.com/api/public/v1/openapi.json"}}