Your life already has stats.
UserPoints just shows the sheet.
Paste one prompt into ChatGPT, Claude or your local agent. Every night it asks how your day went and posts a clean JSON payload to UserPoints. We score it, award points, track streaks, and hand you tomorrow's quest.
character sheet
@scott
Builder / Monk
LVL
27
STREAK
46d
TODAY
+0
RANK
#118
today's log — synced by agent
live- +60
06:40 · habit
5km run before sunrise
BODY
- +120
09:15 · quest
Shipped the billing refactor to prod
CRAFT
- +45
12:02 · thought
Realized I say yes to meetings out of guilt, not value
MIND
- +70
16:30 · event
Coffee with an old teammate, offered to mentor them
SOCIAL
- +45
22:10 · habit
Phone in the drawer, read 20 pages
FOCUS
How it works
No tracker to babysit. Your agent does the logging; you just talk.
1 · Spawn your chronicler
Copy the UserPoints prompt into any LLM. It becomes a nightly agent that interviews you in 60 seconds — no new app to open.
2 · Connect via MCP or token
Add the UserPoints MCP server to Claude Desktop, Cursor or your own runtime — or just give the agent a bearer token and let it POST.
3 · Get scored, level up
We turn quests, habits, thoughts and events into points across five stats, unlock achievements, and generate one quest for tomorrow.
Connect your LLM in two minutes
MCP for Claude Desktop and Cursor. A copy-paste prompt for ChatGPT, Gemini, or any other LLM.
Claude Desktop / Cursor / Windsurf
- Sign in and create a token on your dashboard.
- Copy the MCP config below.
- Paste it into your app's MCP settings and restart.
- Claude Desktop: Settings → Developer → Edit Config
- Cursor: Settings → MCP → Add new server
- Say "log my day to UserPoints" and your agent handles the JSON.
MCP uses mcp-remote to bridge UserPoints' API into standard tools. No extra account or SDK required.
{
"mcpServers": {
"userpoints": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://userpoints.com/api/public/v1/days"],
"env": {
"UP_TOKEN": "up_live_…your token…"
}
}
}
}API-first, agent-shaped
One endpoint to write a day, one to read your sheet. Everything a human can see, an agent can call.
{
"date": "2026-08-12",
"entries": [
{
"kind": "quest",
"text": "Shipped the billing refactor to prod",
"stat": "CRAFT",
"effort": 4,
"mood": 2
},
{
"kind": "thought",
"text": "I say yes to meetings out of guilt",
"stat": "MIND",
"effort": 2,
"mood": -1
}
],
"notes": "Long day, but I made the hard call."
}{
"awarded": 165,
"breakdown": [
{ "stat": "CRAFT", "xp": 120, "reason": "high-effort quest" },
{ "stat": "MIND", "xp": 45, "reason": "honest reflection" }
],
"level": 27,
"streak": 46,
"unlocked": ["Ship It"],
"next_quest": "Say no to one meeting tomorrow."
}MCP server
userpoints.log_day, userpoints.get_sheet, userpoints.quests — drop-in for Claude, Cursor, Codex.
Bearer tokens
Scoped, revocable, per-device. Your agent on your machine, your data.
Webhooks
Fire on level-up, streak break or achievement so your own automations can react.
How points work
Scoring is transparent and boring on purpose: you can read every award and argue with it. Honesty beats grinding — inflated logs decay.
Quests
Things you finished. Effort × impact, 20–150 points.
Habits
Repeatable actions. Streak multiplier up to 2×.
Thoughts
Honest reflections. Rewarded for candor, not length.
Events
Things that happened to you and how you met them.
From coaches
Better with other people
Guilds
Join a 6-person guild. Shared weekly XP goal, no shaming, one party quest.
Seasons
12-week seasons with a soft reset. Keep your achievements, chase a new rank.
Shareable sheets
Post your weekly recap card. Your friends see the streak and want one.
Day 1 is the hardest level. Start it tonight.
Grab a token, paste the prompt, and let your agent handle the rest.
free while in season 0 · export everything, always