Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/mu/issues.md or /mcp/mu/issues.json, or Pod over MCP.

Reported issues for mu

Pod holds 17 of 22 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to mu.

Most discussed

Security review #4

Standing audit of the agent tool / auth / wallet surface against the invariants in internal/docs/SECURITY.md. Goal: no path where the model can decide whose data is used or how the user's funds are spent.

Read the thread · 2026-07-07 · closed · 5 comments

Fix guest search UI escaping and input rendering

Goal: make the guest Search service page feel reliable as part of Mu's first-run service surface.\n\nScope:\n- Fix the client-side search escaping/rendering so recent searches and typed queries preserve spaces instead of rendering them as greater-than entities.\n- Keep public routes, REST/MCP contracts, and provider behavior unchanged.\n- Preserve the existing guest search flow and graceful empty/provider states.\n\nAcceptance criteria:\n- A guest visiting /search can enter a multi-word query an

Read the thread · 2026-06-30 · closed · 1 comment

/mcp reads the whole request body into memory with no limit, before auth or payment

The problem

isToolsList in internal/api/mcp_micro.go:208 runs on every /mcp request:

body, err := io.ReadAll(r.Body)
r.Body = io.NopCloser(bytes.NewReader(body))

No MaxBytesReader, no LimitReader. One request declaring a large body allocates that much server memory, and it happens before the auth challenge, before the x402 payment gate, before anything decides whether the caller is allowed to be here at all. /mcp is the agent door and is deliberately reachable

Read the thread · 2026-08-24 · closed · 0 comments

Derive MCP tools from the service registry, carrying each tool's cost

Prerequisite for micro/xyz building blocks.

The problem

Registering a service gets you an agent tool, the /agent/new picker entry, the app SDK catalogue entry and a status check — all derived from service.Services(). It does not get you an MCP tool.

mcpResolver() builds from the tool registry, and those tools are hand-written:

tool structs in internal/api/mcp.go:              73
tool structs in main.go:                           8
anything deriving a tool from service.Se

[Read the thread](https://github.com/micro/mu/issues/1445) · 2026-08-01 · closed · 0 comments

### Keep generic finance policy out of AI-news leads

Goal: Preserve the fast, readable guest AI-news path while preventing generic finance or policy stories from leading a request for today's AI news unless the story has concrete AI action, AI product/model behavior, AI agent/tool impact, or explicit AI governance substance.

Scope: Refine the existing news ranking/filtering used by the agent for AI-news prompts. Do not add new surfaces or change public contracts.

Acceptance criteria:
- A guest `/agent` prompt like `Find today's AI news` prioriti

[Read the thread](https://github.com/micro/mu/issues/1391) · 2026-07-10 · closed · 0 comments

### Ensure deployed AI-news answers don't stream stale items first after PR 1297

Goal: keep the live guest ask → answer loop truthful for same-day AI-news prompts after PR #1297 by ensuring the deployed /agent news_search answer starts with the freshest dated evidence or a clear stale-results caveat.

Scope: the web /agent streaming and final synthesis paths for prompts such as `Find today's AI news` when news_search returns mixed dated evidence. Avoid public-contract changes.

Acceptance criteria:
- A CI-verifiable regression covers the native/deployed-style streaming path 

[Read the thread](https://github.com/micro/mu/issues/1299) · 2026-07-08 · closed · 0 comments

### Keep deployed AI-news answers from leading with stale dotted-tool results

Goal: make the live guest ask → answer loop for same-day AI-news prompts lead with current evidence or an explicit freshness caveat instead of stale results.\n\nScope: the deployed/native news_search and any dotted-tool/native-streaming paths used by /agent for prompts such as "Find today's AI news". This is a refinement of the existing core loop; do not change public MCP/A2A/REST contracts.\n\nAcceptance criteria:\n- Add CI-verifiable coverage reproducing a same-day AI-news prompt whose availab

[Read the thread](https://github.com/micro/mu/issues/1270) · 2026-07-08 · closed · 0 comments

### Resolve DNS before web_fetch connects to prevent SSRF to internal IPs

Invariant broken: tool content and model-supplied public parameters must not let an attacker reach internal resources from the server. web_fetch/search URL validation blocks literal private hosts, but it does not resolve DNS and validate the connect IP before the HTTP client dials.\n\nFile: search/fetch.go:653-674\n\nExploit scenario: an attacker places prompt-injection text in a webpage/email telling the agent to call web_fetch on https://attacker-controlled.example/latest. That hostname resolv

[Read the thread](https://github.com/micro/mu/issues/1189) · 2026-07-06 · closed · 0 comments

## Most recent

### Disclose stale-only news results before today story lists

Goal: When a guest asks for today/latest AI news and news_search only has older items, the agent answer must not present March-May archive stories as today's news.\n\nScope: Keep the fast news_search provider path and clean source URLs. Improve ranking/framing so same-day or recent evidence wins when present; if the result set is stale-only, put an explicit no-current-results/stale-only disclosure before the list and label older stories as background.\n\nAcceptance criteria:\n- A prompt like `Fi

[Read the thread](https://github.com/micro/mu/issues/1187) · 2026-07-06 · closed · 0 comments

### Surface freshness caveats in AI-news agent answers

Goal: make the live guest agent answer for prompts like "Find today's AI news" carry the freshness caveat that news_search now provides, instead of presenting stale provider results as today's news.

Scope: preserve the fast news_search path and current clean source links, but ensure synthesis/rendering includes an upfront request-date/freshness disclosure when returned AI-news items are older than the requested today/latest window.

Acceptance criteria:
- A guest/web agent prompt "Find today's 

[Read the thread](https://github.com/micro/mu/issues/1177) · 2026-07-05 · closed · 0 comments

### Require sessions before invoking MCP auth handlers

Invariant broken: RegisterToolWithAuth handlers received an empty accountID for unauthenticated MCP calls instead of being rejected before handler invocation. File/line: internal/api/mcp.go:632-641. Exploit scenario: prompt-injected tool content tells a guest MCP client to call an auth-bound unmetered tool such as apps_fork; before this hardening, the handler could run with accountID="", creating or testing resources under an unbound/empty owner instead of a server-bound authenticated session. F

[Read the thread](https://github.com/micro/mu/issues/1079) · 2026-07-04 · closed · 0 comments

### Use successful weather tool results in agent answers

Goal: make guest weather-backed agent answers use successful live weather_forecast output instead of reporting the tool as unavailable when provider data is present.

Scope:
- Keep existing /agent, MCP/A2A/REST, webhook, and env contracts unchanged.
- Preserve the fast explicit unavailable-provider fallback when weather_forecast truly fails.
- Ensure weather prompts such as "Weather in New York today" render a concise location/date-specific answer from the forecast rows with source and generated

[Read the thread](https://github.com/micro/mu/issues/997) · 2026-07-02 · closed · 0 comments

### Reduce AI-news fallback answer synthesis latency

Goal: Make the guest core loop for current/topic news prompts feel fast after the news provider is unavailable and Mu falls back to web search.\n\nScope: Keep existing /agent, MCP/A2A/REST, webhook, and env contracts unchanged. Focus on the current fallback path for prompts such as "Find today's AI news": after web results are available, stream a concise, source-linked answer quickly rather than waiting several seconds for synthesis. Preserve topic specificity, source links, request-date anchori

[Read the thread](https://github.com/micro/mu/issues/987) · 2026-07-02 · closed · 0 comments

### Reduce weather-backed agent answer completion latency

Goal: keep simple weather-backed prompts feeling fast end to end, not just fast to first event.

Scope:
- Focus on the existing web /agent weather path and shared synthesis/streaming code as needed.
- Preserve public contracts for /agent, MCP, A2A, REST, webhook, and env names.
- Do not add new product surface area.

Acceptance criteria:
- A guest prompt such as "Weather in New York today" still emits early progress/tool status promptly.
- The final concise weather answer completes quickly inste

[Read the thread](https://github.com/micro/mu/issues/974) · 2026-07-02 · closed · 0 comments

### Keep unavailable news fallbacks topic-specific

Goal: when dedicated news_search is unavailable, guest /agent prompts for current topics such as "Find today's AI news" should fall back to web/search context that preserves the user's specific topic instead of broad technology-news filler.\n\nScope: guest /agent synthesis and search-query construction for current/news prompts when news_search returns unavailable. Do not change public /agent, MCP, A2A, REST, webhook, or provider env contracts.\n\nAcceptance criteria:\n- Add CI-verifiable coverag

[Read the thread](https://github.com/micro/mu/issues/964) · 2026-07-01 · closed · 0 comments

### Reduce first-token latency for guest agent answers

Goal: make the core ask → answer loop feel fast for first-run guests without changing public API/MCP/A2A contracts.\n\nScope: guest /agent prompts that use existing news, markets, and weather tools. The 2026-07-01 live review saw market and technology-news answers stream only after roughly 20-22s, even though the final answers were readable and tool calls were no longer duplicated.\n\nAcceptance criteria:\n- Add CI-verifiable coverage or instrumentation around agent streaming latency/progress be

[Read the thread](https://github.com/micro/mu/issues/951) · 2026-07-01 · closed · 0 comments

### Synthesize mixed-source agent answers instead of raw tool payloads

Goal: Make guest and signed-in agent answers readable when a prompt fans out across multiple services and some providers are unavailable.\n\nScope:\n- Preserve existing /agent and service contracts.\n- For prompts like "Find today AI news", synthesize usable blog/social/search/news context into a human answer instead of rendering raw JSON/text payloads from tools.\n- Keep explicit unavailable-provider disclosure, but do not let an unavailable provider prevent synthesis from supported sources.\n-

[Read the thread](https://github.com/micro/mu/issues/915) · 2026-07-01 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/micro/mu/issues).