Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for outlook-assistant

Pod holds 18 of 90 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 outlook-assistant.

Most discussed

v3.7.2 E2E test sweep — 48 findings across all 22 tools

Summary

Manual E2E sweep of every tool/action permutation in v3.7.2 against a live Personal Outlook.com account, run on 2026-05-05.

  • Tools touched: 22 / 22
  • Findings: 48 (F-1 through F-48)
  • Account type: Personal Outlook.com (M365-only features marked skipped)
  • Write safety: Self-only sends + cleanup; sentinel naming (e2e-test-2026-05-05, [E2E v3.7.2])
  • Cleanup status: ✅ All sentinels removed, mailbox state restored

Severity histogram

| Severity | Coun

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

search-emails: searchAllFolders=true silently drops kqlQuery and returns wrong results

Summary

The search-emails tool's searchAllFolders=true branch is unreliable in two ways:

  1. kqlQuery is silently ignored. A KQL filter that should narrow results is dropped; the call returns a chronological dump of recent inbox messages with _Search strategy: combined-search_ (a strategy line that lies about what was applied).
  2. query returns zero where without searchAllFolders it returns matches. The cross-folder branch sometimes finds strictly fewer results than the i

Read the thread · 2026-05-05 · open · 3 comments

Add JSDoc comments to exported functions in utils/graph-api.js

The utils/graph-api.js module is the core Graph API client used by every tool module, but its exported functions lack JSDoc documentation.

What to do:

  • Add @param and @returns JSDoc comments to all exported functions in utils/graph-api.js
  • Include brief descriptions of what each function does
  • Document any important side effects (e.g., automatic token refresh)

Why this matters:

  • Helps contributors understand the API surface without reading the full implementation
  • Enables

Read the thread · 2026-03-09 · closed · 3 comments

v3.7.3 regression: F-24 fix incomplete — chokepoint misses JSON-stringified arrays from MCP transport

Summary

The post-tag commit 9b4373a ("fix(coerce): close v3.7.3 verification gaps (F-17, F-24)") claims to fix F-24 (array literals in string-typed params like to/cc/bcc), but the fix only catches the case where the value arrives as a real JS array. In practice, MCP clients (Claude Code's MCP harness, at minimum) JSON-stringify the array literal before transmission when the schema declares type: "string", so the chokepoint receives a string like '["nathanschram@live.com"]' (liter

Read the thread · 2026-05-05 · closed · 2 comments

Theme: tool outputs omit useful context (IDs, pagination, identity)

Tracking issue: #159 Severity: inefficiency Theme: Tools return human-readable output but skip details that callers (especially AI agents) need to drive subsequent operations

The pattern

A common failure mode: tool A creates a thing, tool B operates on it. If A doesn't return the ID, the caller has to make an extra `list` call (with potential ambiguity if names aren't unique). Or: a list returns 50 items with no pagination indicator, leaving the caller unsure whether more exis

Read the thread · 2026-05-05 · closed · 2 comments

Theme: param-shape mismatches — array/boolean/string schema-vs-handler drift

Tracking issue: #159 Severity: blocker (multiple sub-findings) Theme: Param shape mismatches across the entire tool surface

The pattern

Schema declares one type, handler reads another. Common variants:

  • Schema says `type: 'array'` → MCP delivers a JSON-stringified array → handler iterates over the characters.
  • Schema says `type: 'boolean'` → MCP delivers a string → handler does `=== true` and gets `false`.
  • Schema says `type: 'string'` ("comma-separated") → caller

Read the thread · 2026-05-05 · closed · 2 comments

feat: publisher-verified shared multi-tenant app (one-click setup for read-only)

Summary

Register a publisher-verified shared multi-tenant Azure app owned by Little Bear Apps so end users can connect Outlook Assistant without each creating their own Azure app. The shared app is read-only by design; users who need write scopes (Mail.Send, Mail.ReadWrite, etc.) continue to use BYO mode via OUTLOOK_CLIENT_ID override.

One app covers both Microsoft 365 work/school accounts and personal Microsoft accounts (outlook.com, hotmail.com, live.com) via `signInAudi

Read the thread · 2026-04-20 · open · 2 comments

feat: add draft email tool (create, update, send, delete, reply, forward)

Summary

Add a consolidated draft tool to manage email drafts via the Microsoft Graph API. Follows the existing action-based routing pattern used by update-email, folders, manage-rules, etc.

Actions

Action Graph API Description
create POST me/messages Create new draft in Drafts folder
update PATCH me/messages/{id} Update existing draft (subject, body, recipients, importance)
send `POST me/messages/{id}/sen

Read the thread · 2026-03-29 · closed · 2 comments

Most recent

docs: folders delete is recoverable (moves to Deleted Items), not "no recycle-bin recovery"

Summary

The folders tool's delete action is described as permanent:

action=delete permanently removes a folder (by folderName/path or folderId) and its contents — there is no recycle-bin recovery.

But on personal Outlook.com, deleting a mail folder actually moves it (and its contents) to Deleted Items, where it is recoverable — it is not an unrecoverable hard delete.

Observed during the v3.9.0 live E2E sweep: after folders delete folderName="e2e-v390-parent", t

Read the thread · 2026-07-22 · open · 0 comments

docs: raw searchExpression field-scoped $search returns 0 on personal Outlook.com

Summary

On personal Outlook.com accounts, a raw searchExpression (formerly kqlQuery) using field-scoped $search syntax — e.g. subject:"LinkedIn", from:github.com — often returns 0 results, even when matching messages clearly exist. The raw-$search branch intentionally does not fall back to the OData/client-side ladder (that's the #169 V37-F-1 fix that stopped it silently dropping the filter), so the user just sees "No emails found".

Surfaced during the v3.9.0 live E2

Read the thread · 2026-07-22 · open · 0 comments

feat: nested folder addressing (path syntax + folder IDs) for folders tool

Summary

The folders tool cannot address any non-top-level (nested) folder for move, stats, or delete. On work/school (Entra ID) accounts — where deep folder trees are the norm — this makes large parts of the mailbox unreachable.

Reported by @boz-tech on #159 (v3.8.1, Claude Desktop / Windows, work-school Entra ID account). Splitting into its own issue because #159 is the (now closed) v3.7.2 personal-account E2E sweep tracker; this is a distinct cross-cutting capability gap.

Read the thread · 2026-07-22 · closed · 0 comments

Security Audit: bump @modelcontextprotocol/sdk to clear transitive hono (high) + body-parser (low) advisories

Context

The required Security Audit CI gate (npm audit --omit=dev --audit-level=high) fails on main due to pre-existing, transitive advisories, not any first-party code:

  • hono (high) — via @modelcontextprotocol/sdk@hono/node-serverhono@4.12.7. Advisories: serve-static path traversal on Windows (GHSA-wwfh-h76j-fc44), CORS wildcard-with-credentials (GHSA-88fw-hqm2-52qc), Lambda adapter cookie/header issues, body-limit bypass. All are HTTP-server issues; this s

Read the thread · 2026-07-21 · open · 0 comments

Device-code auth returns empty output on failure (reported via LinkedIn)

Report

A user ("Ben", Windows 11, Claude Cowork remote-connector session) reported that:

  • auth { action: "authenticate", method: "device-code" } "completes successfully but returns empty output" — no device code, no verification URL.
  • Follow-up auth { action: "status" } still shows "Not authenticated."

Root cause

handleDeviceCodeAuth() called initiateDeviceCodeFlow() with no try/catch. When the HTTPS request to Microsoft throws (blocked outbound egress in a sandbo

Read the thread · 2026-07-21 · closed · 0 comments

docs: add docs/faq/index.md for help-centre FAQPage schema

Context

The littlebearapps.com help centre now emits Schema.org FAQPage JSON-LD on any help article whose category: faq frontmatter is set, or whose body contains ≥3 question-shaped H2s. The category exists in the help collection schema, but no tool currently has a dedicated FAQ article — synced or hand-written. This issue tracks creating that scaffold for Outlook Assistant.

The marketing-site infrastructure (FAQPage extractor, author byline, heading anchors, per-tool `llms.tx

Read the thread · 2026-05-05 · open · 1 comment

Theme: schema-vs-docs param-name drift across tools

Tracking issue: #159 Severity: docs / inefficiency Theme: Param names are inconsistent across tools and not always discoverable

The pattern

Each tool was built with its own naming conventions. There's no shared vocabulary for:

  • The identifier of the thing being managed (`id` vs `eventId` vs `ruleId` vs `categoryId` vs `sharedMailbox`)
  • The display name (`name` vs `displayName`)
  • The email of a contact / shared mailbox (`email` vs `emails` vs `sh

Read the thread · 2026-05-05 · closed · 1 comment

Theme: invalid actions silently fall through to default handler

Tracking issue: #159 Severity: bug (UX + correctness) Theme: Multi-action tools' switch statements default to `get`/`list` for unknown actions

The pattern

Every multi-action tool has:

```js switch (action) { case 'create': return handleCreate(args); case 'update': return handleUpdate(args); case 'delete': return handleDelete(args); case 'get': default: return handleGet(args); // ← swallows typos } ```

Calling `mailbox-settings action=set-auto-repl

Read the thread · 2026-05-05 · closed · 1 comment

Theme: PATCH-then-format silent failures across mutating tools

Tracking issue: #159 Severity: bug (data integrity) Theme: Tool reports "updated!" but Graph state didn't change

The pattern

Multiple tools follow this template:

  1. Read current state (GET).
  2. Build a partial settings object.
  3. PATCH it to Graph.
  4. GET fresh state.
  5. Format and return: "X updated!\n\n{formatted state}".

When step 3's PATCH is silently rejected by Graph (or the partial object has no effect), step 5 still returns "updated!" — but the formatted state s

Read the thread · 2026-05-05 · closed · 1 comment

Token refresh fails for device-code auth — client_secret sent for public client flow

Bug

When tokens are obtained via the device code flow (a public client flow), the subsequent token refresh always fails because refreshAccessToken() in token-storage.js unconditionally includes client_secret in the refresh request. Microsoft rejects this for public client flows:

"Public clients can't send a client secret." — Microsoft docs

This means device-code-authenticated

Read the thread · 2026-04-16 · closed · 0 comments

The remaining reports are on the project's issue tracker.