feat(plugins): add Peec AI plugin

Merged
KI
3d ago
+470-0

Adds a first-party Peec AI plugin that proxies Peec's hosted MCP server (https://api.peec.ai/mcp, 56 read and 50 write tools). Agents can read AI-search visibility, the sources answers cite, query fanouts, AI crawler visits and Peec's recommended actions instead of scraping the Peec UI in a browser pane.

Connector: peec_mcp

  • OAuth 2.0, dynamic client. Peec publishes protected-resource and authorization-server metadata under the /mcp path (/.well-known/oauth-protected-resource/mcp, /.well-known/oauth-authorization-server/mcp), supports dynamic client registration (no client id metadata document), PKCE S256, and the single default scope.
  • Personal access token. For headless setups. Peec accepts it as the same bearer token.
  • Identity. Peec has no userinfo endpoint and no whoami tool. list_projects returns columnar JSON ({columns, rows}), so account and user are the first project's id and name. This is the same first-container approach neon_mcp uses.

Skills

  • diagnose-ai-visibility (read-only): for each lost prompt, reads the answers and their cited sources, maps the question to our own page, and picks one cause (technical, missing, weak, or third-party) with one fix. It never proposes a new page when a weak page exists.
  • work-peec-actions: works through Peec Actions with site fixes first, flags scanner-probe "missing pages" as false positives, and logs shipped work as completed actions with the real ship date so Peec's Impact view can measure before and after. Every write shows the change list and waits for a yes.

Also

Catalog entry, a theme-following glyph icon (desktop + marketing), peec.ai link unfurl, marketing plugins card with translations for all locales, and a docs page.

Verification

  • bun run check:plugins: all plugins valid and published (peec@1.0.0).
  • bun run check:i18n: passes. The new string is translated in all 16 locales.
  • New test peec_mcp reads the first project from a columnar result. I checked that it fails when the probe tool name is wrong. Connector, plugin, shared and CLI plugin suites pass (200 + 52 + 16 tests).
  • tsc --noEmit is clean for shared, trpc and marketing. Desktop shows only the pre-existing errors from generated files missing in a fresh worktree (routeTree.gen), none in touched files.
  • Not verified: a live OAuth connect against Peec. It needs this on a deployed API. Peec's discovery and registration endpoints answer as described above. The list_projects response shape comes from Peec's docs, and a mismatch would show up as a clear identity-probe error with the result's shape.

Summary by cubic

Adds a first-party Peec AI plugin that proxies Peec's hosted MCP server (https://api.peec.ai/mcp), so agents can read AI-search visibility, cited sources, query fanouts, AI crawler visits, and Peec's recommended actions instead of scraping the Peec UI.

New Features

  • peec_mcp connector supports OAuth 2.0 with dynamic client registration and personal access tokens; identity reads the first project from list_projects since Peec has no userinfo endpoint.
  • diagnose-ai-visibility skill diagnoses lost prompts and picks one cause with one fix.
  • work-peec-actions skill triages Peec Actions and logs shipped work with the real ship date so Peec's Impact view can measure it.
  • Adds catalog entry, glyph icon for desktop and marketing, peec.ai link unfurl, marketing card with translations in all 16 locales, and a docs page.

Migration: Approval flow is not guaranteed; OAuth connect against Peec was not verified live and needs a deployed API.

Summary by CodeRabbit

  • New Features
    • Added Peec AI to the plugin marketplace, desktop app, and plugin directory under Data & APIs. Connect your Peec AI account to track brand visibility in AI search, investigate visibility issues, and review recommended actions and their results.
  • Documentation
    • Added a Peec AI guide covering its capabilities, connection options, and project access requirements.
  • Localization
    • Added translations for the brand visibility tagline in supported languages.