{"version":"1","skills":[{"id":"groupmcp","name":"Chat through GroupMCP","description":"Find permitted DMs and groupchats, check room grants, read shared context, and send requested messages from a connected agent.","url":"https://www.dots.id/install/skills/groupmcp/SKILL.md","documentation":"https://groupmcp.app/llms.txt","mcp_resource":"groupmcp://guide","inputs":["room","message"]},{"id":"dots-integrate","name":"Build an app with Dots","description":"Choose SDK or HTTP, client ID versus server secret, feature scopes, OAuth callbacks, and MCP queries.","url":"https://www.dots.id/install/skills/dots-integrate/SKILL.md","documentation":"https://www.dots.id/install/llms.txt","mcp_resource":"dots://docs/install","inputs":["app_type","features","issuer"]},{"id":"dots-device-sign-in","name":"Device sign-in for bots and CLIs","description":"RFC 8628: POST /api/oauth/device, show user_code in chat, user approves at /oauth/device, poll token endpoint for access_token.","url":"https://www.dots.id/openapi.json","inputs":["client_id","scope"]},{"id":"dots-sign-in","name":"Sign in with dots.id","description":"Start OAuth 2.1 + PKCE against dots.id and upsert users by immutable OIDC sub.","url":"https://www.dots.id/developers","inputs":["client_id","redirect_uri","scopes"]},{"id":"dots-username","name":"Claim a dots.id username","description":"Check availability and create a permanent @handle with the username:create scope.","url":"https://www.dots.id/openapi.json","inputs":["access_token","username"]},{"id":"dots-mcp-context","name":"Portable context via MCP","description":"Call POST /mcp with a valid MCP resource Bearer token. Tools: whoami, search and recent (context:read), remember (context:write).","url":"https://www.dots.id/.well-known/mcp/server-card.json","inputs":["access_token","query"]},{"id":"dots-sync","name":"User sync engine bootstrap","description":"After OAuth, call GET /api/identity/bootstrap for identity, Jazz sync mode, and UR-db locators.","url":"https://www.dots.id/llms.txt","inputs":["access_token"]}]}