Connects Claude to the eighty iOS app's live backend, exposing the same 35 API operations the mobile client uses: browse and create quests, update character stats, send social challenges, check leaderboards, view profiles. OAuth 2.1 with PKCE means no API keys. Your MCP session and your phone share one account in real time. Useful if you want an LLM to plan your day as RPG quests, coach you through them, or interact with eighty's social layer without opening the app. Most tools are free, challenges and extended leaderboard rows require Premium. The server is public at mcp.80l.app, this repo holds docs and example prompts.
Public tool metadata for what this MCP can expose to an agent.
browse_questsBrowse available quests. Returns a list of quests the user hasn't taken yet.Browse available quests. Returns a list of quests the user hasn't taken yet.
No parameter schema in public metadata yet.
browse_quests_for_skillsBrowse quests that match the user's favorite skills.1 paramsBrowse quests that match the user's favorite skills.
limitnumberget_daily_questGet today's daily quest status. Returns the daily quest ID and completion status from the user's profile.Get today's daily quest status. Returns the daily quest ID and completion status from the user's profile.
No parameter schema in public metadata yet.
get_quest_detailsGet full details of a quest including all steps and their completion status.1 paramsGet full details of a quest including all steps and their completion status.
questIdstringtake_questStart working on a quest. Changes the quest status to 'taken'. Free users can have up to 3 active quests.1 paramsStart working on a quest. Changes the quest status to 'taken'. Free users can have up to 3 active quests.
questIdstringcomplete_quest_stepMark a single step of a quest as completed.2 paramsMark a single step of a quest as completed.
stepIdstringquestIdstringcomplete_questMark a quest as fully completed. All steps should be completed first.1 paramsMark a quest as fully completed. All steps should be completed first.
questIdstringget_quest_historyView the user's past quest activities — completed, rejected, and in-progress quests.2 paramsView the user's past quest activities — completed, rejected, and in-progress quests.
limitnumberoffsetnumbercreate_questCreate a new quest draft with a title, description, and steps.3 paramsCreate a new quest draft with a title, description, and steps.
stepsarraytitlestringdescriptionstringedit_questEdit an existing quest draft. Only the fields provided will be updated.4 paramsEdit an existing quest draft. Only the fields provided will be updated.
stepsarraytitlestringquestIdstringdescriptionstringpublish_questPublish a quest draft, making it visible to other users.1 paramsPublish a quest draft, making it visible to other users.
questIdstringlist_my_questsList quests created by the current user.2 paramsList quests created by the current user.
limitnumberoffsetnumberget_skillsGet the full domain skills hierarchy available in the app.Get the full domain skills hierarchy available in the app.
No parameter schema in public metadata yet.
get_skill_questsGet quests associated with a specific skill.2 paramsGet quests associated with a specific skill.
limitnumberskillIdstringadd_favorite_skillAdd a skill to your favorites. Favorited skills influence quest recommendations.1 paramsAdd a skill to your favorites. Favorited skills influence quest recommendations.
skillIdstringremove_favorite_skillRemove a skill from your favorites.1 paramsRemove a skill from your favorites.
skillIdstringget_profileGet the current user's profile information.Get the current user's profile information.
No parameter schema in public metadata yet.
update_profileUpdate the current user's profile. Only the fields provided will be updated.3 paramsUpdate the current user's profile. Only the fields provided will be updated.
biostringusernamestringdisplayNamestringget_badgesGet the current user's earned badges.Get the current user's earned badges.
No parameter schema in public metadata yet.
get_activity_timelineGet the current user's activity timeline, showing recent actions and events.2 paramsGet the current user's activity timeline, showing recent actions and events.
limitnumberoffsetnumberfollow_userFollow another user by their user ID.1 paramsFollow another user by their user ID.
userIdstringunfollow_userUnfollow a user by their user ID.1 paramsUnfollow a user by their user ID.
userIdstringget_followersGet the list of followers for a user. Defaults to the authenticated user if no userId is provided.3 paramsGet the list of followers for a user. Defaults to the authenticated user if no userId is provided.
limitnumbercursorstringuserIdstringget_followingGet the list of users that a user is following. Defaults to the authenticated user if no userId is provided.3 paramsGet the list of users that a user is following. Defaults to the authenticated user if no userId is provided.
limitnumbercursorstringuserIdstringget_feedGet the activity feed for the authenticated user, showing activity from people they follow.2 paramsGet the activity feed for the authenticated user, showing activity from people they follow.
limitnumbercursorstringlikeLike a piece of content (e.g. a quest completion).2 paramsLike a piece of content (e.g. a quest completion).
targetIdstringtargetTypestringquestCompletionunlikeRemove a like from a piece of content.2 paramsRemove a like from a piece of content.
targetIdstringtargetTypestringquestCompletionview_public_profileView a user's public profile by their username — returns the same rich payload the iOS app shows on tap (level, stats, streaks, badges, completed quests, follower/following counts).1 paramsView a user's public profile by their username — returns the same rich payload the iOS app shows on tap (level, stats, streaks, badges, completed quests, follower/following counts).
usernamestringlist_quest_takersList users who have taken or completed a specific quest.3 paramsList users who have taken or completed a specific quest.
limitnumberoffsetnumberquestIdstringsearch_usersSearch for users by name or username.2 paramsSearch for users by name or username.
limitnumberquerystringsend_challengeSend a challenge to another user to complete a quest. Requires eighty Premium.4 paramsSend a challenge to another user to complete a quest. Requires eighty Premium.
userIdstringquestIdstringtimeLimitstring24h · 48h · 7d · nonequestTitlestringrespond_to_challengeAccept or decline a challenge you have received. Requires eighty Premium.2 paramsAccept or decline a challenge you have received. Requires eighty Premium.
responsestringaccept · declinechallengeIdstringlist_challengesList challenges you have sent (you are the challenger) or received (you are the challenged). Requires eighty Premium.3 paramsList challenges you have sent (you are the challenger) or received (you are the challenged). Requires eighty Premium.
rolestringsent · receivedlimitnumberoffsetnumberget_challenge_detailsGet full details of a specific challenge. Requires eighty Premium.1 paramsGet full details of a specific challenge. Requires eighty Premium.
challengeIdstringget_leaderboardGet the global leaderboard. Free users are capped at 10 results; Premium users can retrieve up to 50.2 paramsGet the global leaderboard. Free users are capped at 10 results; Premium users can retrieve up to 50.
limitnumberoffsetnumberA public Model Context Protocol server that lets any MCP-compatible client — Claude Desktop, Claude.ai Connectors, Cursor, ChatGPT Apps, MCP Inspector — read and write a real-life RPG character sheet.
The server is live at
https://mcp.80l.app. This repo is the documentation, example prompts, and reference screenshots — not the server source.

eighty is a gamified self-improvement iOS app: real-world quests, character stats, skill trees, badges, streaks, leaderboards, social challenges. The MCP server exposes the same 35 actions the iOS app uses — browse_quests, create_quest, take_quest, complete_quest, get_profile, send_challenge, view_public_profile, the whole catalog — so an LLM client can drive the experience: plan your day as quests, coach you through them, send challenges to friends, react to your social feed, level up your character.
It's the same backend the iOS app talks to. No fork. Your MCP session and your iOS app are two views over one account.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"eighty": {
"url": "https://mcp.80l.app"
}
}
}
Restart Claude Desktop. On first tool call, OAuth opens in your browser — sign in with Google, Apple, or email/password. (New users get an account auto-provisioned at sign-in.) You're now connected.
Full setup for other clients (Cursor, Claude.ai web Connectors, MCP Inspector, ChatGPT Apps) is in docs/auth.md.
Inspector — Anthropic's reference MCP client — runs locally with no setup:
npx @modelcontextprotocol/inspector
In the browser: set Transport Type to Streamable HTTP, URL to https://mcp.80l.app, Connection Type to Via Proxy, click Connect. Authorize via the OAuth popup. The full tool catalog loads in the sidebar.
35 tools across 7 categories — quests, quest creation, skills, profile, social, challenges, leaderboard. Plus 4 ambient resources and 3 pre-built prompts. Full reference in docs/tools-reference.md.
A few signature examples:
| Tool | What it does |
|---|---|
view_public_profile | Same rich profile shape the iOS app shows on tap (level, stats, streaks, badges, completed quests, follower counts). |
create_quest + publish_quest | Author a real quest from MCP that ships into eighty's catalog after review. |
send_challenge (Premium) | Real-time challenge to another user with a time limit — fires a push notification to their phone. |
whats_next (prompt) | One-shot personalized recommendation drawn from your profile, active quests, favorite skills, and today's daily quest. |
Hand-picked example prompts (copy-paste into your client) are in prompts/.
client → mcp.80l.app (OAuth 2.1) → same backend handlers the iOS app uses → persistence
The MCP server is a thin authorization shell — every tool delegates to the same handler the iOS app calls. One source of truth for business rules (quest caps, premium gating, social-graph privacy, idempotency). See docs/architecture.md.
OAuth 2.1 + PKCE + Dynamic Client Registration (RFC 7591). No API keys, no developer-portal signup. Any spec-compliant MCP client auto-discovers the OAuth endpoints from /.well-known/oauth-protected-resource and registers itself. Full wire-level flow in docs/auth.md.
Most of the surface is free. Four tools (challenges) plus the top-50 leaderboard rows (rows 11–50) require an active eighty Premium subscription, which is sold through the iOS App Store. See docs/premium-features.md for what's gated and how to upgrade.
Reference captures showing the server in use. Real demo data from staging; no PII.
Claude Desktop — claude-desktop/screenshots/
01-quests-browse-quests.png — browse_quests listing02-profile-character-sheet.png — get_profile (Atlas Lv 58)03-social-public-profile.png — view_public_profile rich response (Ember Lv 45)04-challenges-pending.png — list_challenges + get_challenge_detailsMCP Inspector — inspector/screenshots/
07-inspector-tool-list.png — tool catalog + connected state08-inspector-browse-quests.png — tool execution + JSON response09-inspector-view-public-profile.png — view_public_profile (Ember)10-inspector-prompts.png — the three MCP prompts.
├── README.md (you are here)
├── docs/
│ ├── architecture.md (thin proxy → backend handlers)
│ ├── tools-reference.md (all 35 tools with signatures)
│ ├── auth.md (OAuth 2.1 setup per client)
│ └── premium-features.md (what's gated, how to upgrade)
├── claude-desktop/
│ ├── claude_desktop_config.json (drop-in config snippet)
│ └── screenshots/ (4 + 2 bonus reference captures)
├── inspector/
│ └── screenshots/ (4 captures from MCP Inspector)
└── prompts/
├── README.md (index)
└── 01–08-*.md (8 example prompts)
MIT.
Built by @alemetlem. Star the repo if you want to see more public MCPs for consumer apps.