Skip to content

fix(claude-directory): curated /mcp/directory endpoint, 30+ copy, pricing, privacy URL - #27

Closed
jshorwitz wants to merge 2 commits into
mainfrom
fix/claude-directory-curated-endpoint
Closed

jshorwitz wants to merge 2 commits into
mainfrom
fix/claude-directory-curated-endpoint

Conversation

@jshorwitz

@jshorwitz jshorwitz commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Why

This prepares the packages/claude-directory bundle (the folder we submit to the Claude plugin directory) for submission, following https://claude.com/docs/plugins/submit and https://claude.com/docs/plugins/pre-submission-checklist.

Until now the bundle pointed at https://mcp.synterai.com. Claude Code connects through a loopback OAuth redirect, so that URL hands it Synter's full 313-tool catalog, which includes image and video generation tools and the catch-all execute. The directory policy prohibits both (§4.B and the connector review criteria).

Changes

  • MCP endpoint: packages/claude-directory/.mcp.json now points at https://mcp.synterai.com/mcp/directory. That endpoint serves only the curated directory tools, whatever client connects. The server side is Synter-Media-AI/synter-media#13147 and must be deployed to production before this merges.
  • Generator and validator: build-packages.py generates and enforces that URL. It also adds privacyPolicyUrl to the bundle manifest; without it, claude plugin validate reported the note PRIVACY_URL_MISSING.
  • Platform count: the description says "30+ ad platforms" (owner decision, 2026-11-03).
  • Directory README (it becomes the listing description):
    • the 30+ claim and an install line;
    • the owner-approved pricing copy;
    • support and security contacts.
  • Archive digests: updated on purpose, because the contents changed.

Verification

All of these exited 0:

  • python3.11 -m unittest scripts/test_build_packages.py: OK, 10 tests.
  • node scripts/validate-manifests.js.
  • node scripts/check-directory-tools.js: 34 referenced tools, all in the 34-tool directory list.
  • node --test scripts/.
  • python3.11 scripts/build-packages.py --check-claude-directory: 70 files.
  • claude plugin validate ./packages/claude-directory (Claude Code 2.1.317):
    ✔ These checks found nothing to report
    ✔ Validation passed
    

Not done here (owner)

  • Merge only after #13147 is live on mcp.synterai.com. Before that, /mcp/directory does not exist on production: it falls through to the generic /mcp mount and fails (401 without a token, and the SDK has no route there), so the bundle would not connect.
  • Submit the bundle in the developer portal: Plugin bundle → repository Synter-Media-AI/plugin, path packages/claude-directory, from the same Claude organization as the connector.
  • Version is still 1.2.1, which is fine for a first submission. Raise it with every later release.

🤖 Generated with Claude Code

Superseded by #28. That draft is the combined review branch. This pull request stays open and is not closed from here. Do not merge this branch on its own. #28 keeps the curated https://mcp.synterai.com/mcp/directory bundle URL and the 30+ directory copy, together with the Cursor listing from #25. https://mcp.syntermedia.ai remains the live pending connector origin and is not redirected. #28 does not submit the bundle.

Why

This prepares the packages/claude-directory bundle (the folder we submit to the Claude plugin directory) for submission, following https://claude.com/docs/plugins/submit and https://claude.com/docs/plugins/pre-submission-checklist.

Until now the bundle pointed at https://mcp.synterai.com. Claude Code connects through a loopback OAuth redirect, so that URL hands it Synter's full 313-tool catalog, which includes image and video generation tools and the catch-all execute. The directory policy prohibits both (§4.B and the connector review criteria).

Changes

  • MCP endpoint: packages/claude-directory/.mcp.json now points at https://mcp.synterai.com/mcp/directory. That endpoint serves only the curated directory tools, whatever client connects. The server side is Synter-Media-AI/synter-media#13147 and must be deployed to production before this merges.
  • Generator and validator: build-packages.py generates and enforces that URL. It also adds privacyPolicyUrl to the bundle manifest; without it, claude plugin validate reported the note PRIVACY_URL_MISSING.
  • Platform count: the description says "30+ ad platforms" (owner decision, 2026-11-03).
  • Directory README (it becomes the listing description):
    • the 30+ claim and an install line;
    • the owner-approved pricing copy;
    • support and security contacts.
  • Archive digests: updated on purpose, because the contents changed.

Verification

All of these exited 0:

  • python3.11 -m unittest scripts/test_build_packages.py: OK, 10 tests.
  • node scripts/validate-manifests.js.
  • node scripts/check-directory-tools.js: 34 referenced tools, all in the 34-tool directory list.
  • node --test scripts/.
  • python3.11 scripts/build-packages.py --check-claude-directory: 70 files.
  • claude plugin validate ./packages/claude-directory (Claude Code 2.1.317):
    ✔ These checks found nothing to report
    ✔ Validation passed
    

Not done here (owner)

  • Merge only after #13147 is live on mcp.synterai.com. Before that, /mcp/directory does not exist on production: it falls through to the generic /mcp mount and fails (401 without a token, and the SDK has no route there), so the bundle would not connect.
  • Submit the bundle in the developer portal: Plugin bundle → repository Synter-Media-AI/plugin, path packages/claude-directory, from the same Claude organization as the connector.
  • Version is still 1.2.1, which is fine for a first submission. Raise it with every later release.
Open in Web Open in Cursor 

…t, 30+ copy, pricing, privacy URL

- packages/claude-directory/.mcp.json now targets
  https://mcp.synterai.com/mcp/directory, the curated connector surface that
  serves only reviewed tools to every client (Synter-Media-AI/synter-media
  #13147). The full-catalog root .mcp.json is unchanged for direct installs.
- build-packages.py generates and validates that URL and adds privacyPolicyUrl
  (claude plugin validate note PRIVACY_URL_MISSING).
- Manifest + marketplace description: "on 30+ ad platforms" (owner decision
  2026-11-03).
- Directory README: 30+ claim, install line, owner-approved pricing copy,
  support and security contacts.
- Reviewed archive digests updated deliberately for these content changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

…ge to pass strict validation

- Claude Code plugin validate --strict rejects privacyPolicyUrl as an unknown field
- The privacy URL (https://synterai.com/privacy) belongs in the Claude listing submission form instead
- Update build-packages.py, test assertions, and reviewed archive digest

Amp-Thread-ID: https://ampcode.com/threads/T-01a1a808-f80b-758b-a839-b5b8e1ecdde3
Co-authored-by: Amp <amp@ampcode.com>
@jshorwitz

Copy link
Copy Markdown
Member Author

Summary of changes in PR #27

  1. Commit 4a4f600: Point bundle at curated /mcp/directory endpoint, update copy to 30+, pricing, and support contacts.
  2. Commit 48541fa: Stop emitting privacyPolicyUrl in the Claude directory package manifest to resolve strict validation failure.
    • Root cause: Claude Code's plugin manifest schema does not accept privacyPolicyUrl, and claude plugin validate --strict treats unknown fields as errors.
    • Note: The privacy policy URL (https://synterai.com/privacy) is submitted via the Claude directory listing form instead of the plugin manifest.
    • Updated scripts/build-packages.py, scripts/test_build_packages.py, and regenerated packages/claude-directory/.claude-plugin/plugin.json.
    • Updated reviewed archive SHA256 digest for claude-directory to 22daffe7aa0de8710718e9766d2c7341890196d537120bfc74dbcaa4600c44a6.

Local & CI Validation

  • claude plugin validate packages/claude-directory --strict (Claude Code 2.1.318): Passed (✔ Validation passed)
  • npx -y @anthropic-ai/claude-code@2.1.263 plugin validate packages/claude-directory --strict: Passed
  • node scripts/validate-manifests.js: Passed
  • node scripts/check-directory-tools.js: Passed (34 referenced tools in directory)
  • node --test scripts/*.test.js: Passed (20 tests passed)
  • python3 -m unittest discover -s scripts -p 'test_*.py' -v: Passed (10 tests passed)
  • GitHub Actions CI: All checks green

What's left

  • Ensure Synter-Media-AI/synter-media#13147 is live on production mcp.synterai.com before merging.
  • Joel reviews and marks PR ready / merges.
  • Submit the bundle in the Claude developer portal with the privacy URL (https://synterai.com/privacy) in the listing form.

Copy link
Copy Markdown
Member Author

Closing as superseded by #28. Independent reconciliation found #28 preserves the curated https://mcp.synterai.com/mcp/directory bundle, 30+ copy, support/privacy/pricing links, manifest/build enforcement, and generated files. It resolves 34-vs-42 deliberately via a separate 42-name directory bundle list and merges the useful #25/#26 work. #28's two substantive CI checks passed at bbd608e; live connector/reviewer readiness remains separately blocked and this closure does not merge or submit anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant