Reported issues for Nooticr
Pod holds 16 of 18 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.
Back to Nooticr.
Most discussed
"Track what @x is doing" picks analyze_creator_profile, never track_competitor
What's wrong
The quest prompt "Track what @fixture_creator_1 has been doing on TikTok, and keep an eye on them from now on" selected analyze_creator_profile in 3 of 3 runs. track_competitor — the tool whose name is literally the user's own verb — was never called. (The host did go on to watch_creator correctly, so the second half of the journey works.)
This is a tool-selection collision, not a chaining failure, and it is invisible to every other tier in the repo: both tools…
Read the thread · 2026-09-07 · closed · outside contributor · 1 comment
show_* tools are never retrieved — a tool nobody searches for steers nothing
What's wrong
64 tools is past the point where Claude Code keeps them all in context, so every one of them sits behind a ToolSearch and only enters context if a search returns it. Over the 36 quest runs whose expected chain ends in a show_* tool:
| called | |
|---|---|
ToolSearch never returned the show_* tool |
0 / 18 |
ToolSearch did return it |
14 / 18 |
the model's first ToolSearch query already named it |
9 / 10 |
| it was not in the first query | 5 /… |
Read the thread · 2026-09-07 · closed · outside contributor · 1 comment
A sessionless tools/call is rejected 400 because reInitialize() gives the transport a session the client never learned
Separate from #64 (which is the protocol-version rejection and accounts for every Claude
400): a tools/call can arrive with no mcp-session-id header and be rejected 400 by
the SDK's session validation. Observed on openai-mcp/1.0.0:
09-07 06:52 ua=openai-mcp/1.0.0 method=tools/call proto=None sid=no → 400 (480ms)
09-07 06:52 ua=openai-mcp/1.0.0 method=None proto=None sid=no → 400 ( 92ms)
Rare — 2 in a ~10% Workers Logs sample over 7 days, so on the order of…
Read the thread · 2026-09-08 · closed · outside contributor · 0 comments
The OAuth metadata document 404s at the path-inserted URL RFC 9728 tells clients to build, so spec-compliant discovery fails before it finds the working root form
RFC 9728 tells a client that knows the resource is https://mcp.nooticr.com/mcp to build
the metadata URL by inserting the well-known segment before the resource path:
https://mcp.nooticr.com/.well-known/oauth-protected-resource/mcp
We only match the bare root form, so that request 404s.
GET /.well-known/oauth-protected-resource/mcp 404 75 reqs ua=undici (MCP TS SDK), node
GET /.well-known/oauth-protected-resource 200 65 reqs ua=undici
$ curl -o /dev/null -w…
[Read the thread](https://github.com/Nooticr/nooticr-mcp/issues/65) · 2026-09-08 · open · outside contributor · 0 comments
### Claude negotiates MCP protocol 2026-07-28, the pinned SDK stops at 2025-11-25, and every such request is rejected with HTTP 400
Claude's newer client negotiates **`MCP-Protocol-Version: 2026-07-28`**. The bundled
SDK's supported list stops at `2025-11-25`, so `validateProtocolVersion()` rejects the
request with **HTTP 400** before any method dispatch happens. Those sessions never get
as far as `tools/list` — the server is simply unusable for that client.
It is **26.1% of Claude's authenticated POSTs to `/mcp`** (130 of 498 over 7 days),
present every hour of every day in the window.
> **Correction to the first version…
[Read the thread](https://github.com/Nooticr/nooticr-mcp/issues/64) · 2026-09-08 · closed · outside contributor · 0 comments
### The evidence reaches only one of the two channels, and the host decides which — on Claude.ai the model gets "Here are 4 comments" and no comments
#44 found that **guidance** was landing in a channel Claude Code drops. #51 fixed that by writing guidance into both channels. This is the same defect pointed the other way, and it is worse: the **evidence** still lives in one channel only, and on the host this connector actually ships to, that is the channel the model never sees.
## From a real session
A user called `find_people_with_problem` on Claude.ai. The full tool result the model received, verbatim:
17 posts that might be someone…
Read the thread · 2026-09-08 · closed · outside contributor · 0 comments
A failing platform gets retried with reworded queries instead of reported
What happened
From a real session, after Reddit's discovery endpoint started failing (Nooticr/nooticr-server#50):
discover_social_posts { platform: "reddit", niche: "creator burnout tracking analytics multiple platforms manually" } → error
discover_social_posts { platform: "reddit", niche: "tired of manually checking competitor social media posts" } → error
discover_social_posts { platform: "reddit", niche: "social media analytics burnout small business" } →…
[Read the thread](https://github.com/Nooticr/nooticr-mcp/issues/49) · 2026-09-07 · closed · outside contributor · 0 comments
### No tool answers "find people who have the problem my product solves"
## What happened
From a real session. *"Please search on X and Reddit for people that might see our product (nooticr) as a great use for their daily struggle."*
A clear, common, commercially central request: **find prospects by the pain they describe.** The model reached for `discover_social_posts` and fed the pain point in as the `niche`:
discover_social_posts { platform: "twitter", limit: 8, niche: "struggling to track social media analytics competitor research"…
Read the thread · 2026-09-07 · closed · outside contributor · 0 comments
Most recent
Guidance never reaches Claude Code — move it inside structuredContent
What's wrong
evidence.ts's premise is stated in its own header:
"A tool result is the only channel to the calling model — prompts are user-controlled and cannot drive anything. So the guidance below is not documentation; it is the steering, and it lands in the model's context."
It does not land. When a tool result carries structuredContent, Claude Code drops every content text block, keeps the non-text blocks, and appends the serialised structuredContent as the only text…
Read the thread · 2026-09-07 · closed · outside contributor · 0 comments
"What should I tag?" is answerable on one network out of ten
The gap
The discovery half of the surface is deliberately wide — discover_social_posts
sweeps nine networks, get_user_posts reads ten, search_mentions monitors
nine. The two tools that answer what to attach to a post are not:
| tool | reach | source |
|---|---|---|
discover_hashtags |
TikTok only | TikTok Creative Center trend board |
discover_sounds |
TikTok + Instagram | SOUND_PLATFORMS |
discover_hashtags does not even take a platform argument — its inputs are…
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
Every creator is measured only against themselves — nothing benchmarks you against a competitor, or two creators against each other
The gap
The surface has a strong, deliberate stance on baselines, and it applies it in
one direction only. track_competitor:
scores each against the median of that same window, because a raw view count mostly measures follower count — outperformance against themselves is the signal
why_did_this_underperform does the same for one post:
One post measured against the creator's own recent median rather than against another post ... excludes the post from its own baseline
That…
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
The harness has no memory: every tool is a fresh fetch, so "what changed since last month" cannot be asked at any price
The gap
README frames this server as three things — read, understand, make — plus "it monitors a name". Every one of the 64 tools answers about now. Nothing answers about change, and no amount of credits buys the answer, because the past was never kept.
Three tools come close and each stops one step short:
| tool | what it remembers | what it cannot tell you |
|---|---|---|
catch_up_watchlist |
a per-creator snapshot marker, moved forward on each run | how often they post,… |
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
README says "49 tools" (64 are registered) and "those two ask first" (six do)
Two counts in README.md have fallen behind the code. Both are load-bearing —
CLAUDE.md opens by calling the README "the product surface ... and doubles as
the contract this server promises hosts".
1. "49 tools"
README.md's Tools section:
49 tools, grouped by what you are trying to do.
tools/list against the built dist/index.js returns 64, and the README's
own tables already have 64 unique tool rows — I diffed them and they match the
registered set exactly, in both…
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
1,286 outputSchema properties emit "type" as an array, which strict MCP clients either reject or silently drop
What's wrong
npm run contract:host passes, and reports:
0 errors, 1291 warnings across 64 tools.
OK: 64 tools, 115 resources, both host contracts intact
Broken down, the 1,291 are:
| count | warning |
|---|---|
| 1,286 | `type` is an array (["string","number","boolean"]). The array form is legal JSON Schema, but several MCP clients read `type` as a single string and either reject the tool or drop the constraint. |
| 5 | ``` Schema carries no validation keyword at all,… |
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
search_spoken_mentions names a two-network ceiling for a reason that is false — the real reachable set is Douyin today, and four to five more once whisper is provisioned
Second rewrite, after adversarial verification. Revision 1 argued only for Douyin. Revision 2 over-corrected to "every video-bearing platform". A 3-lens verification pass refuted the broad version: the reachable set is specific, smaller than revision 2 claimed, and split by whether an operator has provisioned a whisper model. Revision 2's repricing section was also wrong and has been removed. The corrected numbers are below.
What's wrong (the part that survived verification,…
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
understand_social_post's description drops LinkedIn while its own url hint lists it — and proseOf merges the two, so the check cannot see the contradiction
What's wrong
understand_social_post makes two platform claims that disagree with each
other.
Its description names nine:
Supports TikTok, Instagram, YouTube, X, Reddit, Douyin, Xiaohongshu, Weibo and Bilibili.
Its url input hint names ten:
Full public post URL (TikTok/Instagram/YouTube/X/Reddit/Douyin/Xiaohongshu/Weibo/Bilibili/LinkedIn).
postDetail in vendor/platform-capabilities.json serves ten, LinkedIn
included, so the hint is right and the description…
Read the thread · 2026-09-06 · closed · outside contributor · 0 comments
The remaining reports are on the project's issue tracker.