Skip to content

Add 21 catalog adapters and extend Sellsy to 93 tools - #1342

Merged
helpcodeai merged 4 commits into
mainfrom
feat/catalog-gaps-block-21
Oct 30, 2026
Merged

helpcodeai merged 4 commits into
mainfrom
feat/catalog-gaps-block-21

Conversation

@helpcodeai

@helpcodeai helpcodeai commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds 21 catalog adapters and extends Sellsy from 14 to 93 tools. The new adapters cover logistics, marketplaces, subscriptions, messaging, SEO monitoring, browser agents, CRM, email, payments, spreadsheets and BI, e-signature, HR, speech and LLM routing. With them, these services work straight from the catalog, without a hand-made connector. Tools are mapped from each vendor's public API reference or OpenAPI file (docsUrl in each adapter). Where official or community MCP servers exist on GitHub, their tool lists guided which operations to cover; their code and descriptions were not copied. Deletes and writes that cannot be undone install switched off.

Changes

New adapters (595 listed after merging main (blocks 22 and AliExpress), up from 574; 27 keyless)

Adapter Region Auth Tools (off at install)
yunexpress intl API key header (pre-encoded OMS token) 16 (1)
qls nl Basic 32 (2)
emag-marketplace intl Basic, host per country 39
n11 intl appkey / appsecret headers (REST + SOAP) 24 (2)
allegro intl OAuth2 authorization code 53 (4)
appstle-subscriptions intl X-API-Key 37 (2)
podium intl OAuth2 authorization code 38 (3)
conductor-monitoring intl Reporting API token header 17
browser-use intl X-Browser-Use-API-Key, global or EU host 41 (4)
gohighlevel intl Private Integration token 53
cleverreach de OAuth2 authorization code 43 (1)
postmark intl Server token (+ optional account token) 49 (4)
paddle intl Bearer, live or sandbox host 57 (2)
smartsheet intl Bearer, US / EU / AU / Gov host 38 (1)
power-bi intl OAuth2 Microsoft Entra ID 35 (1)
adobe-acrobat-sign intl OAuth2 on the account's shard 33 (1)
docuseal intl X-Auth-Token, Cloud US / EU / self-hosted 21
hibob intl Basic (service user) 44 (5)
deepgram intl Authorization: Token 18
openrouter intl Bearer 13
better-stack intl Bearer (team token) 46

Notes:

  • eMAG: read calls are POST */read and */count, marked read-only. eMAG accepts calls only from IP addresses registered with them, which the instructions explain.
  • n11: returns, questions and invoice links exist only as SOAP services. They are sent as XML envelopes, and SOAP faults are reported as errors.
  • YunExpress:
    • The OMS host answers over plain HTTP only.
    • Its auth is Basic base64(code&secret), so the user pastes the encoded token and the instructions show how to compute it.
    • The newer open platform needs a millisecond HMAC signature, which the engine cannot produce.
  • Browser Use: uses API v4. v2 is legacy and answers only /browsers on the EU host.
  • Paid calls: Deepgram transcription and OpenRouter chat and embeddings are marked read-only, the same way openai_create_response is. Image generation is an additive write. All paid calls say so in their description.
  • Conductor: get_metrics and inspect_url use the Reporting API v1, which Conductor plans to retire.

Extended adapter

  • sellsy (+79):
    • New areas: individuals, contact companies, opportunities with pipelines, steps, sources and categories, estimates, credit notes, orders, deliveries, payments, items and prices, taxes, units, currencies, payment terms, custom fields, tasks, comments, calendar events, CRM activity, staff, teams, files, subscriptions, global search and quotas.
    • Existing tool names, parameters and mappings are unchanged. sellsy_search_companies and sellsy_search_invoices are now marked read-only (they are POST searches).
    • sellsy_validate_invoice installs switched off.

Other changes

  • Catalog regenerated. Quoted counts updated in the READMEs, CITATION.cff, glama.json, package.json and server.json. llms.txt and llms-full.txt regenerated.
  • Logos added for 20 adapters. YunExpress publishes no SVG, so it uses the generic fallback.

Cloud and self-hosted: the adapters behave the same in both modes; none is selfHostOnly.

Type

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

Testing

  • Added/updated unit tests
  • Tested manually (describe steps below)
  • No tests needed (explain why)

Each new adapter has a *.live.spec.ts with static assertions:

  • auth and base URL
  • the key endpoint mappings
  • tool prefixes, and that every declared parameter reaches the request
  • required path parameters, the probe, the instructions coverage and the switched-off set

Live parts are gated behind RUN_<SLUG>_LIVE=1 and only read.

Read-only tools were run against real accounts: GET or read-only POST only, response shapes checked, no writes sent.

  • sellsy: 58 read tools ok, covering lists, searches with empty filters and get-by-id. Orders and deliveries answered 403 for that account's plan or scopes, which is now documented.
  • conductor-monitoring: 14 ok.
    • list_alert_pages answered 404 because the test pair of alert id and website id did not match. Its mapping is the documented one.
    • The v1 inspect_url answered 500 on Conductor's side.
  • yunexpress: 11 ok. The tracking-number lookup answered "order not found" for the sample order number.
  • appstle-subscriptions: 15 ok. The upcoming-orders and portal-link reads need a contract or customer id; without one they answer 400.
  • n11: 8 ok, including the SOAP returns and questions services.
  • browser-use: 5 list reads ok on the EU host (runs, sessions, browsers, profiles, extensions).
  • qls: list_companies ok. Company-scoped reads answered 403 ("not authorized to access this company") for the account used. Paths follow the public v1 and v2 swagger.
  • emag-marketplace: answered "Invalid vendor ip" from an unregistered address, so the credentials were accepted. Data reads were not checked.
  • Without credentials: Allegro, Podium, HighLevel, CleverReach, Postmark, Paddle, Smartsheet, Power BI, Acrobat Sign, DocuSeal, HiBob, Deepgram, OpenRouter and Better Stack were checked only against their OpenAPI files and docs. DocuSeal's event routes answered 401 to an invalid token, which confirms they exist on DocuSeal Cloud.

Commands, run from the repository root unless noted:

  • node scripts/validate-adapters.mjs --warn: exit 0, no errors or warnings for the new or changed adapters (existing warnings unchanged)
  • node scripts/regenerate-catalog.mjs: 609 adapters across 15 regions
  • node scripts/adapter-count.mjs --check: OK, 595 adapters, 27 keyless, 9748 tools
  • node scripts/generate-llms-txt.mjs --check: exit 0
  • In packages/backend:
    • npx jest src/adapters: 578 suites passed, 1 skipped; 19,953 tests passed, 1,645 skipped
    • npx tsc --noEmit -p tsconfig.json: exit 0
    • npx eslint <the 22 new or changed specs>: exit 0

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): adapter suites run locally (above); the full backend suite runs in CI
  • This PR has a descriptive title

Related Issues

Website guides follow in a separate website PR.

New adapters built from each vendor's public API reference: YunExpress,
QLS, eMAG Marketplace, n11, Allegro, Appstle Subscriptions, Podium,
Conductor Website Monitoring, Browser Use (API v4), HighLevel,
CleverReach, Postmark, Paddle, Smartsheet, Power BI, Adobe Acrobat
Sign, DocuSeal, HiBob, Deepgram, OpenRouter and Better Stack.

Sellsy gains companies, contacts, opportunities, documents, payments,
catalog, tasks, calendar, staff and search tools; the existing 14 tools
keep their names and mappings. Deletes and irreversible writes install
switched off. Catalog regenerated, quoted counts updated to 593.
@helpcodeai
helpcodeai force-pushed the feat/catalog-gaps-block-21 branch from 70bced8 to 47d62d0 Compare October 30, 2026 15:22
helpcodeai and others added 2 commits October 30, 2026 16:34
eMAG only accepts whitelisted callers, so the instructions now give the
fixed Cloud outbound address. podium_cancel_invoice says it is switched
off and asks for confirmation; conductor_monitoring_list_websites no
longer claims every other tool needs the website id.
@helpcodeai
helpcodeai enabled auto-merge (squash) October 30, 2026 18:03
…ck-21

# Conflicts:
#	CITATION.cff
#	README.de.md
#	README.ja.md
#	README.md
#	README.zh-CN.md
#	glama.json
#	llms-full.txt
#	llms.txt
#	package.json
#	packages/backend/src/adapters/catalog.ts
#	server.json
@helpcodeai
helpcodeai merged commit 0aedc7b into main Oct 30, 2026
14 checks passed
@helpcodeai
helpcodeai deleted the feat/catalog-gaps-block-21 branch October 30, 2026 18:25
@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.

1 participant