Skip to content

Explain non-database connectors in the ChatGPT plugin, mark directory sign-ups - #1545

Merged
helpcodeai merged 3 commits into
mainfrom
feat/chatgpt-plugin-followups
Nov 6, 2026
Merged

helpcodeai merged 3 commits into
mainfrom
feat/chatgpt-plugin-followups

Conversation

@helpcodeai

Copy link
Copy Markdown
Contributor

Summary

Two follow-ups now that the AnythingMCP database plugin is published in OpenAI's plugin directory.

  1. API connectors are explained in the plugin.
    • Problem: the plugin (/mcp/chatgpt-app) only queries databases. A workspace whose connectors are APIs (Odoo, Perplexity, Etsy…) saw them listed with nothing to do.
    • Change: anythingmcp_list_connectors now returns otherConnectorsHint. It names those connectors and says they are connected to ChatGPT from the dashboard (MCP Servers → server → ChatGPT).
    • Unchanged: the endpoint still never returns a server URL, by design since Add /mcp/chatgpt-app with fixed single-operation tools for the OpenAI plugin #1226. No tool name, description or schema changes, so the reviewed tool definitions stay the same.
  2. Directory sign-ups are attributed.
    • Problem: someone who signs up from the directory plugin reaches /login through an OAuth redirect, so signup_attributed records direct.
    • Capture: the resource-indicator middleware captures the directory plugin endpoint (chatgpt-app, file-search) in a signed, httpOnly mcp_directory cookie, like the existing mcp_app one.
    • Marking: when an account created at most 2 h earlier authorizes that endpoint, signup_attributed gets directory: 'chatgpt' and directory_plugin, and a server-only directory_signup event is written once.
    • Unchanged: the channel fields are left untouched, because other code reads first_channel to mean "no stated intent" for direct.

Changes

  • mcp-server/chatgpt-app-toolset.ts: OTHER_CONNECTORS_HINT, added to anythingmcp_list_connectors when non-database connectors are in scope.
  • auth/resource-indicator.middleware.ts: DIRECTORY_PLUGIN_ENDPOINTS, MCP_DIRECTORY_COOKIE, parseDirectoryPlugin.
  • audit/directory-signup.ts (new): markDirectorySignup, which never throws.
  • auth/login.controller.ts: calls it when an authorize flow reaches the grant step.
  • audit/product-event.service.ts: directory_signup, server-only.
  • Docs: docs/integrations/chatgpt.md and docs/operations/signup-attribution.md (with a report query).

Cloud and self-hosted: same code in both. The directory plugins exist only on Cloud, so on self-hosted the cookie is simply never set.

Type

  • New feature

Testing

  • Added/updated unit tests
    • chatgpt-app-toolset.spec.ts: the hint appears with API connectors, is absent for databases only, and no /mcp/ URL appears.
    • directory-signup.spec.ts: inside and outside the window, repeat, missing row, DB failure, parseDirectoryPlugin cases.
    • resource-indicator.middleware.spec.ts: cookie set for chatgpt-app, cleared for /mcp.

Commands, run in packages/backend:

  • npx jest src/audit/directory-signup.spec.ts src/auth/resource-indicator src/auth/login.controller src/mcp-server/chatgpt-app src/audit/product-event: all passing.
  • npx eslint <changed files>: clean.
  • npx tsc --noEmit -p tsconfig.json: clean.

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (if applicable)
  • This PR has a descriptive title

@helpcodeai
helpcodeai merged commit 6dc1870 into main Nov 6, 2026
16 checks passed
@helpcodeai
helpcodeai deleted the feat/chatgpt-plugin-followups branch November 6, 2026 07:52
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant