Skip to content

Add seven connectors users had built by hand: Binance, Pancake, Higgsfield, Meta Catalog, SellerCloud, Avito, WATI - #1128

Merged
helpcodeai merged 5 commits into
mainfrom
feat/connectors-users-built-by-hand
Oct 19, 2026
Merged

helpcodeai merged 5 commits into
mainfrom
feat/connectors-users-built-by-hand

Conversation

@helpcodeai

Copy link
Copy Markdown
Contributor

Summary

Seven catalog connectors for APIs that Cloud users wired up by hand as custom connectors in October 2026. The numbers are tool calls on those custom connectors over the last 14 days:

Adapter Evidence Tools
binance 410 calls (spot + futures market data) 21, keyless, read-only
pancake (pages.fm) 377 calls, mostly tagging conversations 18
higgsfield 239 calls (image/video generation + status polling) 17
sellercloud one user imported 119 tools by hand 30, read-only
avito 69 calls (mostly price updates) 25
meta-catalog 51 calls 19, writes off
wati hand-built, 10 tools 10

Depends on #1127. This branch sits on top of it (counts and the catalog URL match), so merge #1127 first. The diff below then shrinks to this commit.

Changes

  • 7 adapters under packages/backend/src/adapters/intl/, each with a static *.live.spec.ts. Live calls are gated behind RUN_<SLUG>_LIVE=1.
  • 6 logos. meta-catalog reuses the meta-ads icon. Every SVG was checked for scripts, event handlers and external references.
  • Writes that message customers or publish are installed switched off. This covers WATI broadcast, session and interactive messages; Pancake send, reply and private reply; Avito send, mark read, autoload upload and profile update; and the Meta Catalog writes. Writes that stay on (WATI single template send, Avito price update, Pancake tag/assign/notes) say in their descriptions to ask the user first.
  • Responses that run to hundreds of kilobytes are cut with select mappings, measured on real data:
    • SellerCloud lists of 10 rows: orders 71 → 12 KB, products 196 → 9 KB, inventory 172 → 6 KB;
    • Pancake conversations, 60 rows: 199 → 59 KB.
  • WATI uses API v1 only. The v3 endpoints answered 403 to a real customer's token from WATI's API Endpoint screen (404 under the tenant path), so they are out of scope and the instructions say why.
  • catalog-search.spec.ts: "facebook" now also returns meta-catalog in the top results; the alias makes that correct.
  • Counts go from 477 to 484 adapters and from 20 to 21 keyless.

Cloud and self-hosted behave the same; nothing here is deployment-specific. Binance refuses US IPs (451), which the instructions explain.

Type

  • New feature

Testing

Live checks from the Cloud droplet (not part of CI):

  • Each adapter's paths, auth and parameters were exercised read-only with the credentials of the custom connector it replaces.
  • The script ran inside the backend container and printed only status codes and response shapes, never values.
  • No billable calls, no writes, no messages sent.

Results:

  • Binance: spot and futures endpoints return 200 from the droplet. The live spec (RUN_BINANCE_LIVE=1) passes 45/45.
  • SellerCloud:
    • POST /api/token returns 200 with access_token and expires_in;
    • warehouses, orders, catalog, inventory, customers, brands and queued jobs return 200;
    • model.pageSize is honoured.
  • Higgsfield:
    • auth is Authorization: Key id:secret;
    • soul styles, marketing presets and soul ids return 200;
    • the status of an unknown request returns 404 JSON;
    • no generation was run.
  • Meta Catalog:
    • permissions, catalogs, get catalog, products, get product, product sets, set products, feeds, feed uploads, upload errors and diagnostics all return 200;
    • /me/businesses returns an empty list for a system user token, which the instructions now say.
  • Pancake:
    • tags, conversations (v2), staff, customers and posts (with since/until) and tag statistics return 200;
    • without since, the API answers 200 with success:false, which errorWhen turns into an error.
  • Avito:
    • the client_credentials token (form post) returns 200;
    • self, items, item, balance, the category tree and chats return 200;
    • the autoload endpoints return 403/401 because that account doesn't use autoload.
  • WATI (v1): templates and contacts return 200. Messages return result:false "Can't find Conversation" for a contact without chats, which is now mapped to 404.

Repository checks:

  • node scripts/validate-adapters.mjs --warn: exit 0. 1458 warnings, the same set as origin/main; none from the new adapters.
  • node scripts/adapter-count.mjs --check: OK, 484 adapters (21 keyless, 7323 tools).
  • node scripts/regenerate-catalog.mjs: catalog.ts regenerated.
  • packages/backend:
    • npx tsc --noEmit -p tsconfig.json: exit 0.
    • npx jest: 667 suites passed, 4 skipped, 1 failed; 20,164 tests passed. The failing suite is database.engine.hana.spec.ts with "Cannot find module 'hdb'", because the hdb module is missing from my local node_modules.

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (adapter instructions, counts)
  • All existing tests pass (except the HANA suite noted above)
  • This PR has a descriptive title

Notes

  • Docs mismatch: docs/tool-definition.md says client_secret_post is the OAuth2 default, but for client credentials the code sends HTTP Basic. Avito therefore sets tokenAuthMethod explicitly. Not changed here.
  • Higgsfield MCP: Higgsfield runs an official MCP server at https://mcp.higgsfield.ai/mcp, with OAuth and dynamic registration. A user had tried cloud.higgsfield.com/mcp, which does not resolve. An MCP-bridge adapter could follow.
  • Pancake POS (pos.pages.fm/api/v1, api_key) is a separate product and could get its own adapter.

@helpcodeai
helpcodeai force-pushed the feat/connectors-users-built-by-hand branch from 25ebf1e to 3af241b Compare October 18, 2026 20:08
Comment thread packages/backend/src/adapters/intl/binance.live.spec.ts Fixed
@helpcodeai
helpcodeai force-pushed the feat/connectors-users-built-by-hand branch from 3af241b to a4ba91e Compare October 18, 2026 20:18
…atches

A LOGIN_TOKEN login now goes through the connector proxy when the tool call
it serves is proxied. Playtomic answers logins from datacenter IPs with a 403
page, so its proxied tools never got a token; through the proxy the login
and club search answer 200 again (checked from the Cloud droplet). Both
Playtomic adapters are listed again.

The custom connector form asks /api/adapters/match-url with the base URL the
user types and offers the ready-made catalog connector for that API. Users
built Printify, Fatture in Cloud, Pinterest, Yandex Disk, Etsy and Telegram
connectors by hand this month while the catalog had them.
Binance, Pancake, Higgsfield, Meta Catalog, SellerCloud, Avito and WATI.
Custom connectors on the Cloud in October 2026 showed which APIs people
wire up themselves: Binance market data (410 calls in 14 days), Pancake
conversation tagging (377), Higgsfield generation (239), SellerCloud
(119 hand-made tools), Avito, the Meta product catalog and WATI.

Each adapter follows the vendor's official reference and was tried
read-only from the Cloud droplet with the credentials of the customer
connector it replaces; Binance is keyless. List responses that run to
hundreds of kilobytes (SellerCloud, Pancake) are cut to the useful fields.
@helpcodeai
helpcodeai force-pushed the feat/connectors-users-built-by-hand branch from a4ba91e to 8620fbf Compare October 18, 2026 21:07
@helpcodeai
helpcodeai enabled auto-merge (squash) October 19, 2026 07:58
@helpcodeai
helpcodeai merged commit 8229fce into main Oct 19, 2026
14 checks passed
@helpcodeai
helpcodeai deleted the feat/connectors-users-built-by-hand branch October 19, 2026 08:04
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 19, 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