quizbase
Skip to content
Command Palette
Search for a command to run...
QuizBase · Docs
by Maciej Dzierżek · published May 15, 2026 · 5 min read · Beginner
claude-project-daily-quiz hero illustration
Illustration for: Daily trivia in Claude.ai Project with QuizBase MCP · Generated with Nano Banana, brand style

Daily trivia in Claude.ai Project with QuizBase MCP#

A Claude.ai Project is a persistent workspace with custom instructions, attached files, and now — since the Custom Connectors release — real tools that Claude can call mid-conversation. Wire QuizBase to your Project, and “give me today’s question” becomes a one-line prompt that returns a fresh question, scores your answer, and updates your streak artifact.

This guide gets you from zero to a working morning routine in under five minutes. No code, no deploy, no infrastructure — Claude.ai does the orchestration, QuizBase MCP does the data, your Project artifact tracks the streak.

What you’ll build#

A Claude.ai Project called “Morning trivia” with these properties:

  • Custom instructions that tell Claude to fetch one question via quizbase_random every time you say “morning” or “today’s question”
  • Custom Connector wiring QuizBase MCP — Claude can call all 12 tools, including quizbase_topics for niche follow-ups
  • Streak artifact — a simple JSON document Claude updates with { date, questionId, correct, streak } after each round
  • Deterministic same-question mode (optional Step 4) — pick today’s question by date hash, so you and a friend can compare answers without spoiling the question by sharing the ID directly

The mechanic — date hash for “same question, same day”#

The plain version (random per call) is what you want for solo practice — fresh questions, no memorisation. But the interesting version is the daily-challenge variant: deterministic seeded by today’s date, so every person running this Project today sees the same question.

QuizBase doesn’t have a ?seed= parameter (deliberate design — stable question IDs let the client do the seeding; see /docs/api/questions-by-id). Instead you fetch a batch of N (say 365) once a quarter, cache it as a Project file, and let Claude pick today’s index by hashing the ISO date:

hash("2026-05-15") % 365 = 142  →  pick batch[142]

Tomorrow’s hash gives a different index, ergo a different question. Same date globally gives the same hash, ergo same question for everyone. The pattern is documented at /docs/api/questions-by-id and powers the MCP Slack trivia bot too.

Step 1 — Get a QuizBase publishable key#

Open API keys in your QuizBase dashboard and create a qb_pk_* (publishable) key. Free tier gives 500 requests/day, which is roughly 7 questions/day for a year and a half — plenty for personal use. Copy the key once; you can’t see it again after closing the dialog.

If you don’t have an account yet, sign up — no credit card, free tier unlocks the full production API.

Step 2 — Connect Claude.ai to QuizBase MCP#

In Claude.ai, click your avatar → SettingsConnectorsAdd custom connector.

  • Name: QuizBase
  • URL: https://quizbase.runriva.com/mcp
  • Authentication: Bearer token. Paste your qb_pk_* key here.

Save. Open a new chat and type “what tools do you have from QuizBase” — Claude lists all 12 quizbase_* tools. If the connector shows red, your key is wrong or expired — back to step 1.

Step 3 — Create a Project with custom instructions#

In the sidebar, click ProjectsNew Project. Name it “Morning trivia”. In the Project’s custom instructions field, paste this:

You are my morning trivia coach. When I say "morning" or "today's question",
call quizbase_random with difficulty=medium and a mixed category.

After each question:
1. Show the question text and four shuffled answer choices (A–D).
2. Wait for my answer.
3. Reveal the correct answer with the source attribution (author + license).
4. Update the streak artifact: if I got it right, increment streak; if wrong, reset to 0.

Always render the attribution. It's a license compliance requirement.

Optional: add a guard so the Project only uses the QuizBase connector — Project settings → Connectors → toggle on QuizBase, toggle off the rest. Keeps Claude focused.

Step 4 — Streak artifact for daily tracking#

The first time you say “morning”, ask Claude: “Create a streak.json artifact with { date: null, currentStreak: 0, longestStreak: 0, history: [] }.” Claude creates a Project artifact you can view and reset anytime. After each round Claude appends to history and updates the counters.

The artifact lives across chats in the same Project — your Monday score persists when you open the Project on Wednesday. To compete with a friend, share the Project (or just the prompt text — they wire their own key) and compare currentStreak once a week.

Step 5 — Daily-challenge mode (optional)#

If you want the deterministic same-question-globally pattern, two changes:

1. Add this to your custom instructions:

For daily-challenge mode (when I say "daily" instead of "morning"):
- Fetch the batch with quizbase_list(limit=50, category=mixed) and cache as
  a Project file named daily-pool.json (only on Monday, otherwise use cached).
- Hash today's ISO date with djb2: h = 5381; for each char c: h = (h*33) ^ c.code
- index = h % daily-pool.length, fetch that question, present.
- Friends running the same Project on the same date see the same question.

2. First Monday of each month, say “daily refresh” — Claude refetches daily-pool.json. The cache stays valid for 30 days; bigger pools (say 365) refresh quarterly.

This is the same pattern the MCP Slack trivia bot uses for its weekly leaderboard, just adapted to single-user Project context.

Pitfalls#

  • Custom Connectors are per-workspace, not per-Project. If you have personal + work Claude.ai workspaces, you add QuizBase to each. The Project just scopes which connectors are exposed to that conversation.
  • Free tier is 500 requests/day across all keys. One question per day is 0.2% of your budget — you could run 7 of these Projects without thinking about it. See rate limits for upgrade triggers.
  • Attribution is mandatory. QuizBase questions ship under CC BY-SA / CC BY / MIT. The custom instructions block above already says “always render the attribution” — keep that line. Skipping it puts you out of license compliance.
  • Streak resets when you start a new chat in the same Project. Claude reads the streak.json artifact at the start of each conversation, so the streak persists; but if Claude can’t find the artifact (deleted, renamed) it starts a new one. Keep the file name stable.

What next#

  • Topic deep-dive mode — extend the custom instructions to call quizbase_topic_by_slug for “today’s question about Napoleon” or “give me Python trivia”. Same flow, narrower pool.
  • Voice dictation — Claude.ai mobile reads questions aloud if you tap the voice icon. Combined with daily mode this is a 90-second commute habit.
  • Wire a second MCP server — Wikipedia, your reading list, Anki — and Claude can compose “give me today’s question + a 2-line explainer + add it to my Anki deck” without writing any code.

Ready to set it up? Grab a free publishable key, add the connector, paste the instructions, ship the routine in five minutes. Question wrong or unclear? Each question has a stable ID — Claude can call quizbase_report with one prompt (“the previous question is wrong”) and the question goes to QuizBase’s moderation queue for review.