Skip to content

fix(hubspot): Create Engagement without CONFIGURE_COMPONENT#1

Open
e11man wants to merge 14 commits into
masterfrom
fix/hubspot-create-engagement-agent-friendly
Open

fix(hubspot): Create Engagement without CONFIGURE_COMPONENT#1
e11man wants to merge 14 commits into
masterfrom
fix/hubspot-create-engagement-agent-friendly

Conversation

@e11man
Copy link
Copy Markdown

@e11man e11man commented Apr 27, 2026

Summary

MCP and agent hosts often cannot call CONFIGURE_COMPONENT or complete multi-step reloadProps flows. Create Engagement used engagementType.reloadProps plus common-create schema-driven additionalProps, which required that stack.

Changes

  • Remove reloadProps from Engagement Type and override additionalProps to return {}, so HubSpot engagement fields are supplied only via Object Properties (JSON) in a single tool invocation.
  • Replace objectType / objectId / associationType propDefinition remote options with plain string props so agents can pass raw HubSpot IDs (e.g. from Search CRM).
  • Tighten validation: require engagementType; require Associated Object ID and Association Type ID together or both omitted; coerce association type to number.
  • Bump hubspot-create-engagement to 0.0.36.

Trade-off

The workflow builder no longer expands per-property HubSpot fields after picking an engagement type; authors use Object Properties or dedicated actions (Create Note, Add Note to Contact, etc.) for guided UIs.

Testing

  • npx eslint components/hubspot/actions/create-engagement/create-engagement.mjs

TonyHeeee and others added 14 commits April 23, 2026 14:24
…0666)

* feat(fitbit): add activity summary action

Refs PipedreamHQ#20573

* fitbit: bump package version to 0.7.0

* fitbit: fix lint issues in activity summary files

* remove authKeys method

---------

Co-authored-by: Michelle Bergeron <michelle.bergeron@gmail.com>
…pedreamHQ#20679)

* microsoft_power_bi: rewrite action set for AI-optimized MCP tools

Replaces the propDefinition-heavy registry actions with a static-schema
set aligned to the MCP AI-optimized tools playbook. Every prop is
visible upfront (no async options / remoteOptions / reloadProps), so
the MCP server can serve clean JSONSchema to LLMs.

Added:
- list-workspaces  — identity anchor (Power BI has no /me endpoint)
- list-reports     — reports in a workspace
- list-datasets    — datasets in a workspace
- list-dashboards  — dashboards in a workspace
- get-refresh-history
- execute-dax-query — POST /executeQueries; description carries DAX syntax
- export-report    — async export with built-in polling (PDF/PPTX/PNG/...)
- add-rows-to-push-dataset — replaces add-rows-dataset-table

Rewrote:
- refresh-dataset — static schema, returns a structured
  { status, requestId, datasetId, groupId, location, headers } shape

Removed:
- add-rows-dataset-table (replaced by add-rows-to-push-dataset)
- cancel-refresh        (cancel is not a core user intent; Push datasets
                         — the only API-creatable type — never produce
                         cancellable history entries, so the tool was
                         unreachable via the seed-creatable surface)
- create-dataset        (Push-dataset-only; niche vs. Power BI Desktop)
- get-dataset-refresh   (superseded by get-refresh-history)

App file:
- Added _groupPrefix() helper for optional /groups/{id} segment.
- Added resolveGroupId({ workspaceId, workspaceName }) — resolves a
  workspace name server-side so callers don't need two round trips.
- Added listGroups, listReports, listDatasets, listDashboards,
  executeQueries, startReportExport, getReportExportStatus,
  getReportExportFile.
- Extended existing methods (addRowsToTable, refreshDataset,
  getRefreshHistory, getTables) to accept optional groupId.
- Removed cancelRefresh method + refreshId propDefinition
  (only used by the dropped cancel-refresh action).

All actions accept workspaceName as an alternative to workspaceId,
or neither for My workspace — eliminates an extra LLM turn on every
workspace-scoped call.

Validated end-to-end via the MCP eval harness — full evaluation notes
and seed setup in pd-connect-eval-monster (evals/microsoft_power_bi).

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

* microsoft_power_bi: address CodeRabbit feedback + bump dependent versions

- Bump get-reports, sources/dataset-refresh-{completed,failed},
  sources/new-dataset-refresh-created to satisfy the dependent-version
  CI check (they transitively depend on the modified app file).
- Unbold "My workspace" across all action descriptions (literal term,
  not a tool name).
- refresh-dataset: harden requestId extraction from the Location
  header — filter empty segments so a trailing slash doesn't suppress
  the x-ms-request-id fallback.
- export-report: distinguish terminal failure vs. poll-timeout in the
  $summary message.
- get-refresh-history: simplify params construction (platform axios
  strips undefined values).
- app: refactor getReportExportFile to delegate to _makeRequest
  instead of an inline axios call with its own try/catch.

Not addressed: the "move shared props to propDefinitions" suggestion
on execute-dax-query. These tools are deliberately fully-inlined to
stay visible to the MCP server's JSONSchema — propDefinition routes
through remoteOptions/async options, which the MCP surface cannot
serve. Reply pending on the PR comment.

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

* microsoft_power_bi: move shared workspace props to app propDefinitions

Addresses CodeRabbit feedback on execute-dax-query:64 — fully static
propDefinitions are MCP-compatible (unlike `async options`), so the
shared workspaceId + workspaceName props belong in the app file. Each
action now uses `propDefinition: [app, "workspaceId"]` / `[app,
"workspaceName"]` instead of duplicating the shape inline.

- Added static workspaceId + workspaceName propDefinitions to the app
  file (no async options — MCP can serve the JSONSchema unchanged).
- Updated 8 actions (add-rows-to-push-dataset, execute-dax-query,
  export-report, get-refresh-history, list-dashboards, list-datasets,
  list-reports, refresh-dataset) to reference the app-level defs.

Not moved: `datasetId`. The existing app-level `datasetId`
propDefinition uses `async options()`, which MCP cannot serve. It's
also referenced by `sources/common.mjs` and `get-reports` (non-MCP
paths that benefit from the dropdown). Leaving it inlined in MCP
actions keeps both paths working without adding a second, differently-
named propDefinition.

Version bumps (app file changed → all dependents bump):
- New MCP actions: 0.0.1 → 0.0.2 (8 files)
- refresh-dataset: 0.1.0 → 0.1.1
- Unmodified dependents: get-reports 0.0.4→0.0.5,
  sources/dataset-refresh-completed 0.0.6→0.0.7,
  sources/dataset-refresh-failed 0.0.6→0.0.7,
  sources/new-dataset-refresh-created 0.0.3→0.0.4.

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

* add example to impersonatedUserName prop description

* fix versions

* fix source descriptions

* improve prop descriptions for agent use

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Michelle Bergeron <michelle.bergeron@gmail.com>
…ctivity (PipedreamHQ#20669)

* make folders for fitbit actions

* feat(fitbit): add activity summary action

Refs PipedreamHQ#20573

* added steps functionality

* added weight/BMI functionality

* added tony's code

* add MCP actions for steps and weight

changed components to comply with guidelines

* trying to fix conflicts

* revert accidental changes

* remove extra quotes

* Fix formatting of Authorization header

* Added heart r heart rate tool to components

* Added heart rate tool

* fitbit: remove empty actions and accidental binaries

* Readded add heart rate files

* feat(fitbit): add sleep and nutrition water tools

# Conflicts:
#	components/fitbit/fitbit.app.mjs

* fix body weight and steps to comply with guidelines

* Fixed issues in hearrtt rate tool

* fix(fitbit): address versioning and lint issues

* refactor(fitbit): reuse prop definitions and tighten heart rate inputs

* updates

* revert .gitignore

---------

Co-authored-by: TonyHeeee <donglinh@andrew.cmu.edu>
Co-authored-by: Jessica Zheng <jzheng5@andrew.cmu.edu>
Co-authored-by: belugaaaaaaaa <126969412+belugaaaaaaaa@users.noreply.github.com>
Co-authored-by: Zhanhan Liu <belugazhan@gmail.com>
Co-authored-by: Michelle Bergeron <michelle.bergeron@gmail.com>
Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
…pedreamHQ#20596)

* new group actions

* versions

* Update components/microsoft_entra_id/actions/update-user/update-user.mjs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* update

* version

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…mHQ#20625)

* Initial app file and Create User action

* Adding remaining user actions

* Adding stage actions

* Adding company/account actions

* Adding "contact" actions

* Adding more actions

* Adding order actions

* update prop descriptions

* add pagination

* new actions

* pnpm-lock.yaml

* pnpm-lock.yaml

* updates

* updates

* update prop descriptions

* update

* pnpm-lock.yaml

---------

Co-authored-by: GTFalcao <gtfalcao96@gmail.com>
* update appointmentId prop

* version
…empty results (PipedreamHQ#20694)

* fix(google-sheets): return explicit null/[] instead of undefined for empty results

get-cell returned implicit undefined for empty cells; get-values-in-range
returned undefined when Google API omits the values key for empty ranges;
list-worksheets could destructure undefined if the sheets key was absent.
All three caused ret to be stripped from the action response JSON, which
the Python SDK collapses to None — misleading MCP clients into thinking
the action failed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(google-sheets): bump package.json version to 0.14.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(google-sheets): add $summary exports and guard nested cell access

- get-cell: use values?.[0]?.[0] ?? null to guard against [[]] shape;
  add $summary for both empty-cell and value-found paths
- get-values-in-range: add $summary with row count
- list-worksheets: add $summary with worksheet count

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(filepost): add FilePost integration

Adds app file and 4 actions for FilePost (https://filepost.dev):
- Upload File: from /tmp path or public URL → returns CDN URL
- List Files: paginated file listing
- Get File: retrieve file metadata by ID
- Delete File: delete a file by ID

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

* fix(filepost): clarify file_id field in prop description

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

* fix(filepost): address CodeRabbit review comments

- list-files: clamp page (>=1) and perPage (1-100) before API call
- upload-file: add 30s AbortController timeout and 50 MB streaming size
  guard when downloading from a remote URL

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

* updates

* updates

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
Co-authored-by: Michelle Bergeron <michelle.bergeron@ahp7jvtgvfr.celonis.cloud>
* Bump fast-xml-parser from 5.5.7 to 5.7.0

Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.7 to 5.7.0.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](NaturalIntelligence/fast-xml-parser@v5.5.7...v5.7.0)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.7.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* update

* versions

* Update components/jenkins/jenkins.app.mjs

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michelle Bergeron <michelle.bergeron@gmail.com>
Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…ipedreamHQ#20686)

* shopify_developer_app: include fulfillment tracking in search_orders

Mirror of the change merged in PipedreamHQ#20676 for the shopify app. Expand
LIST_ORDERS fulfillments selection to include createdAt, updatedAt,
and trackingInfo (number, url, company) so search_orders returns
shipment tracking without a separate fetch.

* shopify_developer_app: bump all component versions

CI requires all component versions to bump together with the package
version bump.
- Remove reloadProps from engagementType and override additionalProps to
  skip schema-driven fields so MCP/agents can set objectProperties in one step
- Replace objectType/objectId/associationType propDefinitions (remote options)
  with plain string props for raw HubSpot IDs
- Validate engagementType and association pairs; coerce association type ID
- Bump hubspot-create-engagement to 0.0.36
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.

8 participants