Skip to content

Eight new connectors: HubSpot, monday.com, Kommo, Base (Baselinker), OneDrive, SharePoint, Excel, QuickBooks Online - #1016

Merged
helpcodeai merged 9 commits into
mainfrom
keysersoft/connectors-block2
Oct 10, 2026
Merged

helpcodeai merged 9 commits into
mainfrom
keysersoft/connectors-block2

Conversation

@helpcodeai

@helpcodeai helpcodeai commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Next block from the catalog gap list: the most-used CRMs and work tools we were missing, Microsoft 365 files, and QuickBooks.

Connector Tools Auth Off at install Live test 10 Oct
HubSpot 14 service key (Bearer), CRM scopes archive object 21/21, writes included (test contact, note and task archived)
monday.com 15 personal API token, GraphQL API-Version: 2026-07 archive item 11/11 reads (a company account, so no writes)
Kommo 16 long-lived token, {{KOMMO_SUBDOMAIN}}.kommo.com/api/v4 nothing deletes 14/14, writes included (test lead closed as lost)
Microsoft OneDrive 19 Entra delegated Files.ReadWrite delete, sharing link, invite 37/37, writes included, no leftovers
Microsoft SharePoint 29 Entra delegated Sites.ReadWrite.All + Files.ReadWrite.All deletes, sharing link, invite 46/46 reads (company tenant, writes skipped)
Microsoft Excel 15 Entra delegated Files.ReadWrite clear range, delete worksheet 29/29 reads
Base (Baselinker) 16 X-BLToken add order, stock update, create package not yet: stays unlisted
QuickBooks Online 17 Intuit OAuth2 (Basic client auth), sandbox switch send invoice, delete invoice 37/37 on an Intuit sandbox, writes included (test invoice deleted, customer deactivated)

Listed: the seven verified ones (counts 331 → 338). Base (Baselinker) stays unlisted until it passes a live test (no account yet).

Engine: a small opt-in {"__json": …} body marker (Baselinker sends its arguments as one JSON-encoded form field). It only applies where a tool's own mapping uses it; a caller-sent __json stays an ordinary object. No production tool uses the key today (checked on the cloud DB). It has its own spec.

HubSpot notes

  • Private apps are now "legacy" in HubSpot; new accounts get service keys (Development → Keys → Service Keys). The instructions cover both.
  • Portals with data privacy on require hs_legal_basis when creating contacts; this is documented.

Microsoft: the three adapters can share the Entra app used for Outlook; the instructions list the delegated permissions to add.

Tests

  • New specs: 222 passed.
  • Full backend suite: 11,109 passed. Only the HANA suite fails locally (no hdb).
  • tsc is clean; validate-adapters and adapter-count pass.

Three Microsoft Graph adapters on the same Entra app registration and
variables as Outlook (MICROSOFT_CLIENT_ID / _SECRET / _TENANT_ID), each
asking only for its own delegated scopes plus offline_access and User.Read:

- microsoft-onedrive (19 tools, Files.ReadWrite): drive, list root /
  folder / folder by path, item by id, path or in another drive, search
  (own and shared), create folder, upload and replace text files (raw
  text/plain PUT, conflictBehavior fail by default), copy, rename, move,
  permissions. Delete, sharing link and invite install switched off.
  No content download: Graph redirects to the whole file and a Range is
  not guaranteed, so the size cannot be capped. Write answers drop the
  pre-authenticated download URL; reads use a fixed $select.
- microsoft-sharepoint (29 tools, Sites.ReadWrite.All +
  Files.ReadWrite.All): root site, site search, site by path or id,
  subsites, libraries, folder listing, drive search, Microsoft Search
  (KQL), lists, columns, list items with expand=fields and OData filter,
  create/update items, create lists, folders and text files, rename,
  move, permissions, pages (200 KB cap). Deletes, sharing link and
  invite install switched off.
- microsoft-excel (15 tools, Files.ReadWrite): workbooks addressed by
  drive id + item id (OneDrive and SharePoint alike), find by search or
  path, worksheets, read range / used range with $select and a 200 KB
  cap, update range, add worksheet, tables, columns, rows, add rows,
  create table. Clear range and delete worksheet install switched off.

quickbooks-online (17 tools): Intuit OAuth2 with client_secret_basic,
com.intuit.quickbooks.accounting, base URL from QBO_API_URL (production
or sandbox host) and QBO_REALM_ID, minorversion=75 on every call,
errorWhen for a Fault in a 200 answer. Company info, query, get
customer/invoice/item/vendor/bill/payment, create and sparse-update
customer, create invoice, P&L, balance sheet, aged receivables and
payables. Send invoice and delete invoice install switched off.

Live specs: MS_GRAPH_ACCESS_TOKEN for the Microsoft three (SharePoint
discovers a reachable site), QBO_ACCESS_TOKEN + QBO_REALM_ID +
QBO_SANDBOX=1 for QuickBooks; *_LIVE_WRITE=1 adds round-trips on
"AnythingMCP test" objects cleaned up in finally.
…nlisted)

- hubspot: CRM API, date-versioned 2026-09 paths, service key (or legacy
  private app token) as Bearer. 14 tools: generic search/list/get/create/
  update over any object type, associations (read and default link),
  owners, account, pipelines with stages, properties (trimmed), notes and
  tasks. Archive installs switched off; POST search and association reads
  are marked read-only.
- monday: GraphQL API v2 with API-Version 2026-07 and the personal token
  in Authorization. 15 tools: me, workspaces, boards, board structure,
  items_page / next_items_page with column values, items by id, create
  item, change column values, move item, create group, updates read and
  post, users. Archive installs switched off. Every operation validated
  against the published 2026-07 schema; schemaUrl points the GraphQL
  builtins at it.
- baselinker: connector.php with X-BLToken, method + JSON parameters.
  16 tools over orders, statuses, sources, journal, packages, catalogs,
  warehouses, products, stock and couriers. addOrder, stock updates and
  createPackage install switched off. errorWhen turns status ERROR bodies
  into 401/403/404/429/400 failures.
- kommo: API v4 on the account subdomain with a long-lived token. 16
  tools: account, leads (list, filter, get, create, update), contacts,
  companies, pipelines and stages, custom fields, tasks, notes, users.

The REST engine gains a `{ "__json": ... }` body marker that sends a field
as the JSON text of its resolved value, which Baselinker's form field
`parameters` needs. Documented in docs/tool-definition.md.

All four are unlisted, so quoted adapter counts are unchanged. Each has a
static spec, request-shape checks against a local server, opt-in live
read-only calls and write round-trips behind <VENDOR>_LIVE_WRITE=1.
…ment hs_legal_basis

The properties query parameter of the properties API selects which fields
of each definition come back, not which properties, so a name filter
returned empty objects. hubspot_list_properties no longer offers it.

Accounts with data privacy (GDPR) settings on reject new contacts without
hs_legal_basis. The create tool and the instructions say so, the live write
test sets it, and its cleanup now fails the test if anything it created
could not be archived. Verified live against a test portal: 21/21.
@helpcodeai
helpcodeai requested a review from D3nisty as a code owner October 10, 2026 10:38
… a step fails

QuickBooks rejects a DisplayName containing a colon (error 2040, the colon
separates sub-customers). The live spec named its test customer after an
ISO timestamp, so the create call failed with 400. The timestamp now goes
in without colons, the spec requires a service item instead of silently
skipping the invoice, checks the delete answer, and deactivates the
customer even if deleting the invoice fails. The tool descriptions and
the error list name the restriction.
@helpcodeai
helpcodeai merged commit 570693e into main Oct 10, 2026
13 checks passed
@helpcodeai
helpcodeai deleted the keysersoft/connectors-block2 branch October 10, 2026 11:36
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 10, 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