Skip to content

Add the deed.page adapter - #1327

Merged
helpcodeai merged 6 commits into
HelpCode-ai:mainfrom
f-o-x11:feat/deed-page-adapter
Oct 30, 2026
Merged

helpcodeai merged 6 commits into
HelpCode-ai:mainfrom
f-o-x11:feat/deed-page-adapter

Conversation

@f-o-x11

@f-o-x11 f-o-x11 commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a connector for deed.page, static hosting that AI agents can publish to. The adapter bridges deed.page's own remote MCP server (https://deed.page/mcp) the same way the other MCP-type adapters do. That lets an AnythingMCP workspace give Claude or ChatGPT a way to put a generated page online at https://<slug>.deed.page/, with OAuth, per-tool roles and the audit log in front of it.

This PR comes from the deed.page team. Disclosure: I work on deed.page.

Changes

  • intl/deed-page.json: an MCP connector with a Bearer DEED_PAGE_TOKEN credential and a snapshot of the 27 tools the server lists today, prefixed deed_page_.
  • Installs switched off: deleting a site or webhook, removing a custom domain, rotating or revoking the token, and agent_seats. Rotating through the connector would break the stored credential, and creating a seat returns a fresh token to the model. The instructions explain why and how to turn them on.
  • The instructions and the publish/update tool descriptions tell the AI to show the user what it will publish and wait for a yes, because everything published is public.
  • intl/deed-page.live.spec.ts: static conformance checks (prefixing, described parameters, which tools are off, and that this stays true after tool discovery). It also has a live suite gated behind RUN_DEED_PAGE_LIVE=1 that compares the snapshot with the server's tool list and runs publish, read back as the owner, delete, then checks for a 404.
  • Logo, regenerated catalog.ts, updated quoted counts (562 to 563 adapters) and regenerated llms.txt / llms-full.txt.

Type

  • Bug fix
  • New feature
  • Documentation
  • Refactoring
  • Performance improvement
  • Other (describe below)

Testing

All commands were run from the repo root unless noted, on Node 24 after npm ci:

  • node scripts/validate-adapters.mjs --warn: 577 passed, 0 failed, with no warnings for deed-page.

  • node scripts/regenerate-catalog.mjs: 577 adapters across 15 regions.

  • node scripts/adapter-count.mjs --check: OK, every quoted count equals 563 adapters (27 keyless, 8708 tools).

  • node --test scripts/validate-adapters.test.mjs scripts/generate-llms-txt.test.mjs: 44 passed.

  • In packages/backend, RUN_DEED_PAGE_LIVE=1 npx jest src/adapters/intl/deed-page.live.spec.ts: 11 passed. That includes the live publish, read, delete and 404 round trip against deed.page. The test site is removed at the end.

  • In packages/backend, npx jest src/adapters/catalog: 4 suites, 10704 tests passed.

  • In packages/backend, npx jest src/adapters/mcp-adapter src/adapters/setup-guide src/adapters/env-var-meta src/adapters/adapters.service: 108 passed.

  • Added/updated unit tests

  • Tested manually (describe steps below)

  • No tests needed (explain why)

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (if applicable)
  • All existing tests pass (npm test). I ran the adapter and catalog suites above, not the full backend suite.
  • This PR has a descriptive title

Related Issues

None. Links: https://deed.page, docs at https://deed.page/docs, and the agent skill at https://github.com/f-o-x11/deed-page-skill.

@github-actions

Copy link
Copy Markdown

👋 Welcome, @f-o-x11, and thanks for opening your first PR on AnythingMCP!

A few quick pointers:

  • Make sure CI is green before requesting review (Backend, Frontend, Playwright, CodeQL, Trivy).
  • If this is a new adapter, the parametrised catalog.spec.ts test will validate it automatically.
  • Sign off your commits if you can — it's not blocking, just nice to have.

Someone from the core team will look at this within ~48h. If you don't hear back, please ping us in Discussions / Q&A.

⭐ While you wait — if you find AnythingMCP useful, a star helps others discover it.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@f-o-x11

f-o-x11 commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

I have read the CLA Document and I hereby sign the CLA

github-actions Bot added a commit that referenced this pull request Oct 29, 2026

@helpcodeai helpcodeai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @f-o-x11, and thanks for disclosing that you work on deed.page. The adapter is well made: we found no security issues (the SVG is clean, the live suite only runs behind RUN_DEED_PAGE_LIVE=1), and switching off delete, domain removal and token rotation/revocation by default is the right call. The "show the user and wait for a yes" wording in the publish tools is good too.

Before we can merge, we need a few changes. Catalog adapters have to serve the user of the workspace, not the vendor's sales funnel:

  1. Switch off by default deed_page_get_upgrade_link, deed_page_claim_share_credit and deed_page_set_badge ("enabled": false, like the delete tools). Please also remove from the snapshot description of get_upgrade_link the sentence that lets the agent complete the payment itself. An administrator can still switch these tools on when they actually want them.
  2. Remove the attribution parameters via, heard_from and how_heard from the parameter schemas of the snapshot tools (publish_site, update_site, finalize_upload, get_upgrade_link, wherever they appear). Please extend your static spec so that tool discovery doesn't bring them back.
  3. In the instructions, keep one sentence on the paid plans (limits and where to upgrade) for when a plan limit error appears, without directing the agent toward an upgrade.
  4. Rebase on main once #1329 (Immich) is in. The quoted counts will then be 564, so please rerun node scripts/adapter-count.mjs --check and node scripts/generate-llms-txt.mjs.

Publish and update can stay on by default, since they are the point of the connector.

- Install deed_page_get_upgrade_link, deed_page_claim_share_credit and
  deed_page_set_badge switched off, like the delete tools, and drop the
  sentence in get_upgrade_link that let the agent complete the payment.
- Remove via, heard_from and how_heard from the snapshot schemas and list
  them in a new per-tool omitParameters policy, which mergeDiscoveredMcpTools
  applies at install and on Discover tools so the server's schema cannot
  bring them back. Documented in docs/tool-definition.md.
- Keep a single neutral sentence on paid plans, for plan-limit errors.
- Static spec: pins the new switched-off set, the omitted parameters through
  discovery, and the plan sentence; mcp-adapter.spec covers omitParameters.
Ran node scripts/adapter-count.mjs and node scripts/generate-llms-txt.mjs after merging main (HelpCode-ai#1329).
@f-o-x11

f-o-x11 commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the careful review. All four points are addressed in 401291a:

  1. deed_page_get_upgrade_link, deed_page_claim_share_credit and deed_page_set_badge now install with "enabled": false, like the delete tools. The sentence in the get_upgrade_link description that let the agent complete the payment is gone. It now says to call the tool only when the user asks for an upgrade link, and that the user opens the link and decides.
  2. via, heard_from and how_heard are gone from every snapshot schema (publish_site, update_site, plan_upload, finalize_upload, get_upgrade_link) and from the descriptions. Discovery takes the server's schema as is, so I added a small optional per-tool omitParameters field that drops those properties (and any required entries) at install and on every Discover tools. It's documented in docs/tool-definition.md and covered in mcp-adapter.spec.ts. The deed.page static spec runs discovery against schemas that still contain the fields and checks they don't come back. Happy to change the shape if you'd prefer something else.
  3. The instructions keep one sentence on paid plans, for plan-limit errors only: tell the user which limit was hit; deed_page_whoami shows the plan and its limits, and the plans are listed at https://deed.page/pricing. Nothing points the agent toward an upgrade.
  4. feat(adapters): add read-only Immich adapter (#1238) #1329 is in. I merged main into the branch instead of rebasing, to avoid a force-push; with a squash merge the merge commits won't show in history. node scripts/adapter-count.mjs --check passes at 564 adapters, and llms.txt / llms-full.txt are regenerated.

The deed.page adapter spec passes locally (the live tests stay skipped without RUN_DEED_PAGE_LIVE=1).

@helpcodeai helpcodeai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @f-o-x11, all four points are done, and omitParameters is a clean way to keep vendor fields out of the schema. CI is green. Merging.

@helpcodeai
helpcodeai enabled auto-merge (squash) October 30, 2026 08:12
@helpcodeai
helpcodeai merged commit e4ee95b into HelpCode-ai:main Oct 30, 2026
14 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 30, 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.

2 participants