Inspiration

We watch a lot of finance content. Every market cycle, the same pattern: creators with millions of subscribers make confident, dated predictions — “NVDA will break $200 by April”, “the Fed will pivot in Q1”, “Bitcoin to $250K this year”. When those calls go wrong, the title quietly changes. The pinned comment is deleted. The video disappears from the channel altogether. Retail investors — the people taking these calls at face value — never see the original receipts. We kept asking the obvious question: why does no neutral, tamper-evident record of these claims exist? Block explorers do this for transactions. does it for the web. Nothing does it for the people moving retail capital. NOCAPY is that ledger.

What it does

NOCAPY is an independent record of the public predictions financial creators make — and the edits they make to those predictions afterwards. Ask it a natural-language question (“Tell me about Meet Kevin”, “Who’s bullish on NVDA right now?”, “Has CryptosRUs ever tampered with a TSLA call?”) and the agent surfaces:

Every prediction the creator has made, anchored to its publish date and timestamped in-video. • Window-based outcome resolution, did the price ever touch the target inside the stated timeframe, against real market data. • A breakdown of sub-signals, never a composite “credibility score”: quantified hit-target rate, halfway-or-better rate, directional accuracy, integrity, tenure. • Every detected tamper event: title edits, description rewrites, pinned-comment swaps, deletions with before/after diffs. • A live leaderboard, embedded from MongoDB Atlas Charts, showing every tracked creator’s outcome breakdown side by side. It’s an analyst, not an advisor. It quotes numbers, source text, and tamper diffs and explicitly refuses to invent narratives the data doesn’t support.

How we built it

Three tools fan out from the agent: a deterministic Python creator lookup (handles @ prefix, URLs, partial matches, Gemini was unreliable at this through the MCP path), the MongoDB MCP server (every read against Atlas), and yfinance market data.

Challenges we ran into

Cold start of the MCP server. Cloud Run with min-instances=0 plus the npx fetch of mongodb-mcp-server@latest blew past our 15s MCP-session timeout on the first request. Fix: pin one warm instance + cache the MCP server image. • Atlas IP allowlist vs. Cloud Run egress. Cloud Run egress IPs are dynamic without a VPC connector. We opened 0.0.0.0/0 for the judging window with a calendar-anchored cleanup ticket, because building a static-egress VPC the night before the deadline was the wrong tradeoff. • “Hit anytime in window” vs “hit on target_date”. Our v0.1.0 scoring resolved against the closing price on the target date. Creators almost always phrase predictions as “will hit X by Y” — meaning ever, before Y. We re-resolved every outcome under v0.2.0 (CRED-38) with window-based logic. Many “miss”es flipped to “hit_100”. • Direction-only calls without explicit price targets. “It will go up next week” is a real prediction class. We added timeframe-aware bands (few_days / short / medium / long / very_long) with default thresholds, plus a stated_magnitude_pct override when the creator names a percentage. (Path B / CRED-55.) • Gemini billing depletion at 3 AM on submission day. The prepayment credit ran out during the demo recording. Topping up unblocked it in two minutes — included here as a reminder to future hackathon teams: top up before the deadline week. • Cross-language creator names. A few Chinese-language YouTubers in the dataset broke filter assumptions in the leaderboard chart. We added a $nin on creator names and shipped.

Accomplishments that we're proud of

• A working, deployed, end-to-end agent that surfaces real data — not a slide deck.
• 1,632 predictions resolved, 10 tamper events tracked, 105 creators in the credscore_public dataset.
• The whole scoring methodology is versioned (v0.2.0) and open — every rubric, every threshold, every window definition is in the README. No black-box “credibility score”.
• A deterministic tool path for the lookup that ships around Gemini’s regex variance, so the demo of “tell me about X” is reliable across model retries.
• A schema designed from day one for six platforms (YouTube, TikTok, X, Threads, Truth Social, RedNote) — only YouTube is fully wired, but adding the next ingestor is one file, not a rewrite.

• A working, deployed, end-to-end agent that surfaces real data — not a slide deck.
• 1,632 predictions resolved, 10 tamper events tracked, 105 creators in the credscore_public dataset.
• The whole scoring methodology is versioned (v0.2.0) and open — every rubric, every threshold, every window definition is in the README. No black-box “credibility score”.
• A deterministic tool path for the lookup that ships around Gemini’s regex variance, so the demo of “tell me about X” is reliable across model retries.
• A schema designed from day one for six platforms (YouTube, TikTok, X, Threads, Truth Social, RedNote) — only YouTube is fully wired, but adding the next ingestor is one file, not a rewrite.

What we learned

  1. MCP is the real unlock for agent-to-database integration. Hand-rolling FunctionDeclaration tools for every collection-and-filter combination is a dead end — the MCP server gives the agent introspection without surrendering control.
  2. Refusing the composite score is harder to sell, but more honest. “Show me concrete sub-signals, not one number” is a load-bearing product opinion that we kept getting tempted to abandon under demo pressure. We didn’t, and the result is more defensible.
  3. Time semantics are the hardest part of prediction scoring. “By next week”, “in the next couple of months”, “by year-end” — every one of those phrases needs an explicit timeframe band with a documented default. Skip this step and the scoring drifts.
  4. Pre-flight checklists for live demos save deadlines. IP allowlists, billing credits, MCP cold starts, embedding authorization on Atlas Charts — every one of these failed silently for us in the final 24 hours. They each took two minutes to fix once located; the location was the cost.

What's next for NOCAPY

The other five platforms. TikTok, X, Threads, Truth Social, RedNote ingest. The schema is ready; we need the per-platform ingestors and tamper-event semantics.

  1. Crypto + macro prediction classes. Stocks and ETFs are wired. CoinGecko integration (CRED-45) is filed and scoped.
  2. Researcher bulk API. Read-only, paginated access to the resolved-outcomes corpus for academic / journalism use.
  3. A public research-request queue. The current Section-06 form is single-vote; we’d open it up to community voting so coverage is genuinely demand-driven.
  4. A separate, lighter-weight read-only DB user for the public Cloud Run deployment, and a static-egress VPC connector that retires the 0.0.0.0/0 allowlist for good.

Built With

  • fastapi
  • gemini
  • google-adk
  • google-cloud-run
  • mcp
  • mongodb-atlas
  • mongodb-mcp
  • python
  • youtube-data-api
Share this project:

Updates