Skip to content

Conversation

@GTFalcao
Copy link
Collaborator

@GTFalcao GTFalcao commented Sep 30, 2025

Summary by CodeRabbit

  • New Features
    • Added action annotations across many integrations to surface UI hints: destructive, read-only, and external-access indicators. Improves clarity and safety when running actions (e.g., updates vs. reads, potential data changes).
  • Chores
    • Incremented versions for numerous actions to reflect metadata updates.

@vercel
Copy link

vercel bot commented Sep 30, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Sep 30, 2025 8:23pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Sep 30, 2025 8:23pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 30, 2025

Walkthrough

This PR updates numerous action modules by bumping their version fields and adding an annotations object (destructiveHint, openWorldHint, readOnlyHint). No runtime logic, control flow, or method signatures change; only exported metadata is modified.

Changes

Cohort / File(s) Summary
• Read-only actions (annotations readOnlyHint: true, destructiveHint: false)
components/_0codekit/actions/compress-pdf/compress-pdf.mjs, components/_0codekit/actions/read-barcode/read-barcode.mjs, components/_2chat/actions/check-phone-number-whatsapp/check-phone-number-whatsapp.mjs, components/_2markdown/actions/html-file-to-markdown/html-file-to-markdown.mjs, components/_2markdown/actions/html-to-markdown/html-to-markdown.mjs, components/_2markdown/actions/pdf-to-markdown/pdf-to-markdown.mjs, components/_8x8_connect/actions/get-log-result/get-log-result.mjs, components/abstract/actions/validate-email/validate-email.mjs, components/accuweather/actions/*/*, components/acuity_scheduling/actions/check-availability-times/check-availability-times.mjs, .../find-appointments-by-client-info/find-appointments-by-client-info.mjs, .../get-appointment-types/get-appointment-types.mjs, .../get-appointments/get-appointments.mjs, .../get-availability-times/get-availability-times.mjs, .../get-products/get-products.mjs, components/add_to_calendar_pro/actions/get-*/get-*.mjs, components/adalo/actions/get-records/get-records.mjs, components/_twocaptcha/actions/check-account-balance/check-account-balance.mjs, components/_twocaptcha/actions/retrieve-solution/retrieve-solution.mjs, components/activecampaign/actions/find-*/find-*.mjs, components/activecampaign/actions/get-*/get-*.mjs, components/activecampaign/actions/list-*/list-*.mjs, components/addressfinder/actions/verify-address-au/verify-address-au.mjs
Version bumped; added annotations with readOnlyHint: true; no logic changes.
• Non-destructive, not read-only (annotations destructiveHint: false, readOnlyHint: false)
components/_1crm/actions/create-*/create-*.mjs, components/_2chat/actions/create-contact/create-contact.mjs, components/_2markdown/actions/url-to-markdown/url-to-markdown.mjs, components/_360nrs/actions/send-sms/send-sms.mjs, components/_46elks/actions/*/*sms*.mjs, components/_46elks/actions/make-phone-call/make-phone-call.mjs, components/_4dem/actions/*/*.mjs, components/_8x8_connect/actions/request-log/request-log.mjs, components/_8x8_connect/actions/send-sms/send-sms.mjs, components/_twocaptcha/actions/submit-captcha/submit-captcha.mjs, components/ably/actions/publish-*/publish-*.mjs, components/abyssale/actions/*/*.mjs, components/accelo/actions/create-*/create-*.mjs, components/accelo/actions/create-request/create-request.mjs, components/acelle_mail/actions/*/*.mjs, components/actitime/actions/create-*/create-*.mjs, components/activecampaign/actions/create-*/create-*.mjs, components/activecampaign/actions/add-contact-to-automation/add-contact-to-automation.mjs, components/activecampaign/actions/tag-contact/tag-contact.mjs, components/acymailing/actions/*/*.mjs, components/adalo/actions/create-record/create-record.mjs, components/add_to_calendar_pro/actions/create-*/create-*.mjs, components/addevent/actions/*/*.mjs
Version bumped; added annotations with destructiveHint: false, readOnlyHint: false; no logic changes.
• Destructive actions (annotations destructiveHint: true, readOnlyHint: false)
components/_1crm/actions/update-*/update-*.mjs, components/_2chat/actions/send-whatsapp-text-message/send-whatsapp-text-message.mjs, components/accelo/actions/update-contact/update-contact.mjs, components/accredible/actions/delete-credential/delete-credential.mjs, components/accredible/actions/update-credential/update-credential.mjs, components/actitime/actions/modify-leave-time/modify-leave-time.mjs, components/activecampaign/actions/update-deal/update-deal.mjs, components/activecampaign/actions/create-or-update-contact/create-or-update-contact.mjs, components/adalo/actions/update-record/update-record.mjs, components/add_to_calendar_pro/actions/delete-*/delete-*.mjs, components/add_to_calendar_pro/actions/update-*/update-*.mjs
Version bumped; added annotations with destructiveHint: true; no logic changes.

Sequence Diagram(s)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

I twitch my ears at version cues,
New hints abound in subtle hues.
No logic hops, just metadata spring—
A gentle thump, a tidy thing.
With paws I stamp, “All set to run!”
Annotations baked—now onward, fun! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request has no description and fails to include the required “## WHY” section from the repository template, leaving the motivation and context for these bulk annotation updates entirely unspecified. This omission prevents reviewers from understanding the rationale behind the changes or how they fit into broader project objectives. Please add a pull request description following the repository template by completing at least the “## WHY” section to explain the purpose and benefits of batching MCP annotations, so reviewers can properly assess the change.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title “feat: MCP annotations batch 1/65 (100 components)” clearly and concisely summarizes the primary change—batch-adding MCP annotations across a set of components—and indicates the scope (batch 1 of 65, affecting 100 components), which aligns precisely with the changeset. It uses the standard “feat:” prefix and avoids irrelevant details, making it informative for anyone scanning the project history.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mcp-annotations-1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 7

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 61d0151 and e5b8c9a.

📒 Files selected for processing (100)
  • components/_0codekit/actions/compress-pdf/compress-pdf.mjs (1 hunks)
  • components/_0codekit/actions/read-barcode/read-barcode.mjs (1 hunks)
  • components/_1crm/actions/create-contact/create-contact.mjs (1 hunks)
  • components/_1crm/actions/create-lead/create-lead.mjs (1 hunks)
  • components/_1crm/actions/update-contact/update-contact.mjs (1 hunks)
  • components/_1crm/actions/update-lead/update-lead.mjs (1 hunks)
  • components/_2chat/actions/check-phone-number-whatsapp/check-phone-number-whatsapp.mjs (1 hunks)
  • components/_2chat/actions/create-contact/create-contact.mjs (1 hunks)
  • components/_2chat/actions/send-whatsapp-text-message/send-whatsapp-text-message.mjs (1 hunks)
  • components/_2markdown/actions/html-file-to-markdown/html-file-to-markdown.mjs (1 hunks)
  • components/_2markdown/actions/html-to-markdown/html-to-markdown.mjs (1 hunks)
  • components/_2markdown/actions/pdf-to-markdown/pdf-to-markdown.mjs (1 hunks)
  • components/_2markdown/actions/url-to-markdown/url-to-markdown.mjs (1 hunks)
  • components/_360nrs/actions/send-sms/send-sms.mjs (1 hunks)
  • components/_46elks/actions/make-phone-call/make-phone-call.mjs (1 hunks)
  • components/_46elks/actions/send-sms/send-sms.mjs (1 hunks)
  • components/_4dem/actions/confirm-email/confirm-email.mjs (1 hunks)
  • components/_4dem/actions/create-email/create-email.mjs (1 hunks)
  • components/_4dem/actions/create-sender/create-sender.mjs (1 hunks)
  • components/_8x8_connect/actions/get-log-result/get-log-result.mjs (1 hunks)
  • components/_8x8_connect/actions/request-log/request-log.mjs (1 hunks)
  • components/_8x8_connect/actions/send-sms/send-sms.mjs (1 hunks)
  • components/_twocaptcha/actions/check-account-balance/check-account-balance.mjs (1 hunks)
  • components/_twocaptcha/actions/retrieve-solution/retrieve-solution.mjs (1 hunks)
  • components/_twocaptcha/actions/submit-captcha/submit-captcha.mjs (1 hunks)
  • components/ably/actions/publish-message/publish-message.mjs (1 hunks)
  • components/ably/actions/publish-push-notification/publish-push-notification.mjs (1 hunks)
  • components/abstract/actions/validate-email/validate-email.mjs (1 hunks)
  • components/abyssale/actions/generate-image/generate-image.mjs (1 hunks)
  • components/abyssale/actions/generate-multi-format-images-videos/generate-multi-format-images-videos.mjs (1 hunks)
  • components/accelo/actions/create-contact/create-contact.mjs (1 hunks)
  • components/accelo/actions/create-prospect/create-prospect.mjs (1 hunks)
  • components/accelo/actions/create-request/create-request.mjs (1 hunks)
  • components/accelo/actions/update-contact/update-contact.mjs (1 hunks)
  • components/accredible/actions/create-credential/create-credential.mjs (1 hunks)
  • components/accredible/actions/delete-credential/delete-credential.mjs (1 hunks)
  • components/accredible/actions/update-credential/update-credential.mjs (1 hunks)
  • components/accuweather/actions/get-current-conditions/get-current-conditions.mjs (1 hunks)
  • components/accuweather/actions/get-daily-forecast/get-daily-forecast.mjs (1 hunks)
  • components/accuweather/actions/get-historical-weather/get-historical-weather.mjs (1 hunks)
  • components/accuweather/actions/get-hourly-forecast/get-hourly-forecast.mjs (1 hunks)
  • components/accuweather/actions/get-location-key/get-location-key.mjs (1 hunks)
  • components/acelle_mail/actions/create-customer/create-customer.mjs (1 hunks)
  • components/acelle_mail/actions/subscribe-customer-to-plan/subscribe-customer-to-plan.mjs (1 hunks)
  • components/actitime/actions/create-customer/create-customer.mjs (1 hunks)
  • components/actitime/actions/create-task/create-task.mjs (1 hunks)
  • components/actitime/actions/modify-leave-time/modify-leave-time.mjs (1 hunks)
  • components/activecampaign/actions/add-contact-to-automation/add-contact-to-automation.mjs (1 hunks)
  • components/activecampaign/actions/create-account/create-account.mjs (1 hunks)
  • components/activecampaign/actions/create-contact/create-contact.mjs (1 hunks)
  • components/activecampaign/actions/create-deal/create-deal.mjs (1 hunks)
  • components/activecampaign/actions/create-note/create-note.mjs (1 hunks)
  • components/activecampaign/actions/create-or-update-contact/create-or-update-contact.mjs (1 hunks)
  • components/activecampaign/actions/create-tracked-event/create-tracked-event.mjs (1 hunks)
  • components/activecampaign/actions/find-contact/find-contact.mjs (1 hunks)
  • components/activecampaign/actions/find-deal/find-deal.mjs (1 hunks)
  • components/activecampaign/actions/get-all-lists/get-all-lists.mjs (1 hunks)
  • components/activecampaign/actions/get-contact-by-email/get-contact-by-email.mjs (1 hunks)
  • components/activecampaign/actions/get-contact/get-contact.mjs (1 hunks)
  • components/activecampaign/actions/get-deal/get-deal.mjs (1 hunks)
  • components/activecampaign/actions/get-tags-for-contact/get-tags-for-contact.mjs (1 hunks)
  • components/activecampaign/actions/list-all-contacts/list-all-contacts.mjs (1 hunks)
  • components/activecampaign/actions/list-campaigns/list-campaigns.mjs (1 hunks)
  • components/activecampaign/actions/remove-tag-from-contact/remove-tag-from-contact.mjs (1 hunks)
  • components/activecampaign/actions/tag-contact/tag-contact.mjs (1 hunks)
  • components/activecampaign/actions/update-deal/update-deal.mjs (1 hunks)
  • components/acuity_scheduling/actions/add-blocked-off-time/add-blocked-off-time.mjs (1 hunks)
  • components/acuity_scheduling/actions/book-appointment/book-appointment.mjs (1 hunks)
  • components/acuity_scheduling/actions/check-availability-times/check-availability-times.mjs (1 hunks)
  • components/acuity_scheduling/actions/find-appointments-by-client-info/find-appointments-by-client-info.mjs (1 hunks)
  • components/acuity_scheduling/actions/get-appointment-types/get-appointment-types.mjs (1 hunks)
  • components/acuity_scheduling/actions/get-appointments/get-appointments.mjs (1 hunks)
  • components/acuity_scheduling/actions/get-availability-times/get-availability-times.mjs (1 hunks)
  • components/acuity_scheduling/actions/get-products/get-products.mjs (1 hunks)
  • components/acymailing/actions/add-update-user/add-update-user.mjs (1 hunks)
  • components/acymailing/actions/email-user/email-user.mjs (1 hunks)
  • components/acymailing/actions/subscribe-user/subscribe-user.mjs (1 hunks)
  • components/adalo/actions/create-record/create-record.mjs (1 hunks)
  • components/adalo/actions/get-records/get-records.mjs (1 hunks)
  • components/adalo/actions/update-record/update-record.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/create-event-group/create-event-group.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/create-event/create-event.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/create-landing-page-template/create-landing-page-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/create-rsvp-template/create-rsvp-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/delete-event-group/delete-event-group.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/delete-event/delete-event.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/delete-landing-page-template/delete-landing-page-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/delete-rsvp-template/delete-rsvp-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/get-event-group/get-event-group.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/get-event/get-event.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/get-ics-data/get-ics-data.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/get-landing-page-template/get-landing-page-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/get-rsvp-template/get-rsvp-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/update-event-group/update-event-group.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/update-event/update-event.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/update-landing-page-template/update-landing-page-template.mjs (1 hunks)
  • components/add_to_calendar_pro/actions/update-rsvp-template/update-rsvp-template.mjs (1 hunks)
  • components/addevent/actions/create-event/create-event.mjs (1 hunks)
  • components/addevent/actions/create-rsvp-for-attendee/create-rsvp-for-attendee.mjs (1 hunks)
  • components/addressfinder/actions/verify-address-au/verify-address-au.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".

Applied to files:

  • components/activecampaign/actions/create-account/create-account.mjs
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: pnpm publish
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (73)
components/add_to_calendar_pro/actions/update-rsvp-template/update-rsvp-template.mjs (1)

8-13: LGTM! Annotation values are semantically appropriate.

The metadata changes look good:

  • Version bump to 0.0.3 follows semantic versioning for metadata additions
  • destructiveHint: true is correct for an update operation that modifies existing data
  • openWorldHint: true appropriately indicates external API interaction
  • readOnlyHint: false correctly reflects that this is a write operation
components/acelle_mail/actions/create-customer/create-customer.mjs (1)

6-11: Metadata update looks good.

Version bump and annotations align with the MCP rollout pattern—no issues spotted.

components/add_to_calendar_pro/actions/update-event-group/update-event-group.mjs (1)

7-12: LGTM! Annotations correctly reflect the action semantics.

The annotations are semantically accurate for an update operation:

  • destructiveHint: true appropriately signals that updates modify external state
  • openWorldHint: true correctly indicates external API interaction
  • readOnlyHint: false accurately reflects the write operation
components/add_to_calendar_pro/actions/update-landing-page-template/update-landing-page-template.mjs (1)

7-12: LGTM! Annotations are semantically correct.

The annotations appropriately describe the update operation's behavior and align with the action's implementation.

components/activecampaign/actions/create-account/create-account.mjs (1)

8-13: LGTM! Annotations correctly distinguish create from destructive operations.

The annotations accurately reflect that this is a non-destructive write operation:

  • destructiveHint: false appropriately indicates creation doesn't modify existing data
  • openWorldHint: true correctly signals external API interaction
  • readOnlyHint: false accurately reflects the write operation
components/acuity_scheduling/actions/get-appointments/get-appointments.mjs (1)

7-12: LGTM! Annotations accurately reflect the read-only nature.

The annotations correctly describe a read-only list operation:

  • destructiveHint: false and readOnlyHint: true properly indicate no mutations occur
  • openWorldHint: true correctly signals external API interaction
components/activecampaign/actions/get-contact-by-email/get-contact-by-email.mjs (1)

7-12: LGTM! Annotations correctly reflect the read-only retrieval operation.

The annotations accurately describe this as a read-only lookup with appropriate hint values.

components/addevent/actions/create-event/create-event.mjs (1)

7-12: LGTM! Annotations correctly reflect action behavior.

The version bump and annotations are appropriate:

  • destructiveHint: false - creates resources without deletion
  • openWorldHint: true - calls external AddEvent API
  • readOnlyHint: false - performs write operation
components/_1crm/actions/create-contact/create-contact.mjs (1)

8-13: LGTM! Annotations correctly reflect the create operation.

The metadata changes are appropriate:

  • destructiveHint: false - creates without deletion
  • openWorldHint: true - external 1CRM API call
  • readOnlyHint: false - write operation
components/activecampaign/actions/list-all-contacts/list-all-contacts.mjs (1)

7-12: LGTM! Annotations correctly reflect read-only list operation.

The version bump and annotations are accurate:

  • destructiveHint: false - no deletion
  • openWorldHint: true - external ActiveCampaign API
  • readOnlyHint: true - read-only list operation
components/abstract/actions/validate-email/validate-email.mjs (1)

7-12: LGTM! Annotations correctly reflect validation operation.

The metadata additions are appropriate:

  • destructiveHint: false - no resource deletion
  • openWorldHint: true - external Abstract API call
  • readOnlyHint: true - read-only validation check
components/activecampaign/actions/remove-tag-from-contact/remove-tag-from-contact.mjs (1)

7-12: LGTM! Annotations correctly reflect the destructive nature of this action.

The version bump and annotations are appropriate. The action removes a tag from a contact, which is correctly marked as destructive (destructiveHint: true) and non-read-only (readOnlyHint: false).

components/adalo/actions/create-record/create-record.mjs (1)

7-12: LGTM! Annotations correctly reflect a non-destructive create operation.

The version bump and annotations are appropriate. Creating a new record is correctly marked as non-destructive (destructiveHint: false) since it doesn't modify or delete existing data.

components/activecampaign/actions/get-deal/get-deal.mjs (1)

7-12: LGTM! Annotations correctly reflect the read-only nature of this action.

The version bump and annotations are appropriate. This action retrieves a deal without modifications, correctly marked with readOnlyHint: true and destructiveHint: false.

components/activecampaign/actions/find-contact/find-contact.mjs (1)

7-12: LGTM! Annotations correctly reflect the read-only nature of this search action.

The version bump and annotations are appropriate. This action searches for contacts without modifications, correctly marked with readOnlyHint: true and destructiveHint: false.

components/activecampaign/actions/update-deal/update-deal.mjs (1)

8-13: LGTM! Annotations correctly reflect the destructive nature of this update action.

The version bump and annotations are appropriate. Updating a deal modifies existing data, correctly marked as destructive (destructiveHint: true) and non-read-only (readOnlyHint: false).

components/add_to_calendar_pro/actions/create-event-group/create-event-group.mjs (1)

7-12: LGTM! Metadata annotations added appropriately.

The version bump and annotations are consistent with the PR's objective. The annotation values correctly reflect that this action creates an event group (not read-only, not destructive to existing data, and makes external API calls).

components/acymailing/actions/email-user/email-user.mjs (1)

8-13: LGTM! Metadata annotations added appropriately.

The version bump and annotations are consistent with the PR's objective. The annotation values correctly reflect that this action sends an email (not read-only, not destructive to existing data, and makes external API calls).

components/activecampaign/actions/add-contact-to-automation/add-contact-to-automation.mjs (1)

7-12: LGTM! Metadata annotations added appropriately.

The version bump and annotations are consistent with the PR's objective. The annotation values correctly reflect that this action adds a contact to an automation (not read-only, not destructive to existing data, and makes external API calls).

components/add_to_calendar_pro/actions/create-event/create-event.mjs (1)

8-13: LGTM! Metadata annotations added appropriately.

The version bump and annotations are consistent with the PR's objective. The annotation values correctly reflect that this action creates an event (not read-only, not destructive to existing data, and makes external API calls).

components/_1crm/actions/create-lead/create-lead.mjs (1)

8-13: LGTM! Metadata annotations added appropriately.

The version bump and annotations are consistent with the PR's objective. The annotation values correctly reflect that this action creates a lead (not read-only, not destructive to existing data, and makes external API calls).

components/_46elks/actions/send-sms/send-sms.mjs (1)

7-12: Metadata update looks good.

Version bump and annotation flags match the action’s behavior (external write, non-destructive).

components/activecampaign/actions/get-contact/get-contact.mjs (1)

7-12: Annotation flags are consistent.

Lookup is read-only, so readOnlyHint: true and destructiveHint: false make sense.

components/add_to_calendar_pro/actions/get-event-group/get-event-group.mjs (1)

7-12: Patch version + read-only hints check out.

Fetching an event group is non-destructive and read-only; annotations reflect that accurately.

components/_8x8_connect/actions/send-sms/send-sms.mjs (1)

7-12: Looks accurate.

Sending an SMS is a non-destructive external write, so the chosen hint flags fit.

components/activecampaign/actions/create-deal/create-deal.mjs (1)

7-12: Good alignment between behavior and hints.

Creating a deal writes data but isn’t destructive, so the metadata choices are sensible.

components/_0codekit/actions/read-barcode/read-barcode.mjs (1)

7-12: LGTM: Annotations are semantically correct.

The annotations accurately reflect this action's behavior: it's a read-only operation that makes external calls to decode QR codes from image URLs without any destructive side effects.

components/add_to_calendar_pro/actions/update-event/update-event.mjs (1)

7-12: LGTM: Annotations accurately reflect the update operation.

The annotations correctly characterize this as a destructive, write operation that interacts with external APIs.

components/addressfinder/actions/verify-address-au/verify-address-au.mjs (1)

7-12: LGTM: Annotations correctly describe the read-only verification operation.

The annotations properly reflect that this is a non-destructive, read-only address validation that calls external APIs.

components/add_to_calendar_pro/actions/get-landing-page-template/get-landing-page-template.mjs (1)

7-12: LGTM: Annotations accurately reflect the read-only retrieval operation.

The annotations correctly indicate this is a non-destructive, read-only operation that fetches data from external APIs.

components/accelo/actions/create-request/create-request.mjs (1)

5-10: destructiveHint is correct for create-request action
No change needed—create operations in this codebase uniformly use destructiveHint: false.

components/accredible/actions/delete-credential/delete-credential.mjs (1)

7-12: Accurate MCP annotations for destructive delete action. Setting destructiveHint: true while leaving readOnlyHint false mirrors the spec’s guidance for tools that remove external data, so this addition looks correct to me. (modelcontextprotocol.io)

components/actitime/actions/create-task/create-task.mjs (1)

8-13: Good call marking the create-task tool as non-destructive. Creating a task writes to an external system without deleting or overwriting state, so destructiveHint: false and openWorldHint: true line up well with MCP expectations. (modelcontextprotocol.io)

components/accelo/actions/update-contact/update-contact.mjs (1)

5-10: Destructive hint matches the contact update behavior. Updating contact fields mutates remote state, so advertising destructiveHint: true keeps the annotation aligned with the protocol guidance. Looks good. (modelcontextprotocol.io)

components/_2chat/actions/create-contact/create-contact.mjs (1)

7-12: Annotations look spot-on for this create-contact action. Non-destructive, open-world creation matches the MCP hint definitions, so this metadata reads correctly. (modelcontextprotocol.io)

components/accelo/actions/create-contact/create-contact.mjs (1)

5-10: Consistency maintained for MCP annotations. Keeping destructiveHint: false and openWorldHint: true on this create-contact tool maintains parity with the other create actions and aligns with MCP guidance. (modelcontextprotocol.io)

components/add_to_calendar_pro/actions/delete-event-group/delete-event-group.mjs (1)

7-12: LGTM! Annotations correctly reflect destructive delete operation.

The annotations are appropriately set for this delete action: destructiveHint: true accurately signals that this operation permanently removes an event group, while openWorldHint: true and readOnlyHint: false correctly describe the external API mutation.

components/accuweather/actions/get-historical-weather/get-historical-weather.mjs (1)

8-13: LGTM! Annotations correctly reflect read-only data retrieval.

The annotations are properly configured for this read-only action: readOnlyHint: true and destructiveHint: false accurately indicate that this operation only retrieves historical weather data without modifying any state.

components/activecampaign/actions/create-note/create-note.mjs (1)

7-12: LGTM! Annotations correctly reflect create operation.

The annotations are appropriate for this create action: destructiveHint: false (creates new data, doesn't destroy existing), readOnlyHint: false (modifies state), and openWorldHint: true (external API call).

components/activecampaign/actions/tag-contact/tag-contact.mjs (1)

7-12: LGTM! Annotations correctly reflect additive operation.

The annotations are properly set for this tagging action: destructiveHint: false (adds a tag without removing data), readOnlyHint: false (modifies contact state), and openWorldHint: true (external API call).

components/_twocaptcha/actions/submit-captcha/submit-captcha.mjs (1)

14-19: LGTM! Annotations correctly reflect task submission operation.

The annotations are appropriate for this submission action: destructiveHint: false (creates a new task), readOnlyHint: false (modifies state by submitting captcha), and openWorldHint: true (external 2Captcha service call).

components/_twocaptcha/actions/check-account-balance/check-account-balance.mjs (1)

7-12: LGTM! Annotations are semantically correct.

The version bump and annotations accurately reflect the action's behavior: this is a read-only operation (balance check) that makes external API calls without any destructive effects.

components/_360nrs/actions/send-sms/send-sms.mjs (1)

8-13: LGTM! Annotations are semantically correct.

The version bump and annotations accurately reflect the action's behavior: this operation sends SMS messages (non-read-only) via external API calls without destructive effects.

components/accuweather/actions/get-daily-forecast/get-daily-forecast.mjs (1)

8-13: LGTM! Annotations are semantically correct.

The version bump and annotations accurately reflect the action's behavior: this is a read-only operation (forecast retrieval) that makes external API calls without any destructive effects.

components/add_to_calendar_pro/actions/create-rsvp-template/create-rsvp-template.mjs (1)

8-13: LGTM! Annotations are semantically correct.

The version bump and annotations accurately reflect the action's behavior: this operation creates RSVP templates (non-read-only) via external API calls without destructive effects.

components/_4dem/actions/create-sender/create-sender.mjs (1)

7-12: LGTM! Annotations are semantically correct.

The version bump and annotations accurately reflect the action's behavior: this operation creates email senders (non-read-only) via external API calls without destructive effects.

components/actitime/actions/create-customer/create-customer.mjs (1)

7-12: Annotations align with create semantics — Non-destructive write with external side effects is correctly flagged (readOnly=false, destructive=false, openWorld=true).

components/activecampaign/actions/list-campaigns/list-campaigns.mjs (1)

8-13: Read-only listing correctly annotated — Version bump plus readOnly=true with non-destructive, open-world access matches the action’s behavior.

components/accuweather/actions/get-hourly-forecast/get-hourly-forecast.mjs (1)

8-13: Forecast fetch marked correctly — Metadata now signals external, read-only usage without destructive effects, which matches the action.

components/_4dem/actions/confirm-email/confirm-email.mjs (1)

7-12: State-changing confirmation appropriately classified — Marking this as open-world, non-read-only, and non-destructive matches the confirm flow.

components/accredible/actions/update-credential/update-credential.mjs (1)

7-12: Update action flagged as destructive — Setting destructiveHint=true with open-world access and readOnly=false is consistent with credential mutation.

components/actitime/actions/modify-leave-time/modify-leave-time.mjs (1)

7-12: LGTM! Annotations correctly reflect the action's behavior.

The annotations are appropriate for this action:

  • destructiveHint: true correctly indicates that this modifies existing leave time records via PATCH
  • openWorldHint: true reflects external API interaction
  • readOnlyHint: false correctly indicates this is a write operation
components/ably/actions/publish-message/publish-message.mjs (1)

5-10: LGTM! Annotations correctly reflect the action's behavior.

The annotations are appropriate:

  • destructiveHint: false correctly indicates this creates new data without modifying existing records
  • openWorldHint: true reflects external API interaction with Ably
  • readOnlyHint: false correctly indicates this is a write operation
components/activecampaign/actions/get-all-lists/get-all-lists.mjs (1)

7-12: LGTM! Annotations correctly reflect the action's behavior.

The annotations are appropriate:

  • destructiveHint: false correctly indicates this is a read-only retrieval operation
  • openWorldHint: true reflects external API interaction with ActiveCampaign
  • readOnlyHint: true correctly indicates no data modification occurs
components/acuity_scheduling/actions/get-appointment-types/get-appointment-types.mjs (1)

7-12: LGTM! Annotations correctly reflect the action's behavior.

The annotations are appropriate:

  • destructiveHint: false correctly indicates this is a read-only retrieval operation
  • openWorldHint: true reflects external API interaction
  • readOnlyHint: true correctly indicates no data modification occurs
components/adalo/actions/get-records/get-records.mjs (1)

7-12: LGTM! Annotations correctly reflect the action's behavior.

The annotations are appropriate:

  • destructiveHint: false correctly indicates this is a read-only retrieval operation
  • openWorldHint: true reflects external API interaction with Adalo
  • readOnlyHint: true correctly indicates no data modification occurs
components/add_to_calendar_pro/actions/delete-rsvp-template/delete-rsvp-template.mjs (1)

7-12: LGTM! Annotations correctly reflect destructive delete operation.

The annotations are semantically correct:

  • destructiveHint: true appropriately flags this delete operation
  • openWorldHint: true correctly indicates an external API call
  • readOnlyHint: false properly reflects state mutation
components/acuity_scheduling/actions/get-availability-times/get-availability-times.mjs (1)

7-12: LGTM! Annotations correctly reflect read-only query operation.

The annotations accurately describe this retrieval action:

  • destructiveHint: false and readOnlyHint: true properly indicate a non-mutating read operation
  • openWorldHint: true correctly signals an external API call
components/acuity_scheduling/actions/get-products/get-products.mjs (1)

7-12: LGTM! Annotations align with read-only list operation.

Annotations are consistent with other read-only actions in this PR and correctly reflect the non-mutating nature of listing products.

components/acuity_scheduling/actions/book-appointment/book-appointment.mjs (1)

8-13: LGTM! Annotations correctly distinguish create from delete operations.

The annotations appropriately reflect a non-destructive write operation:

  • destructiveHint: false correctly distinguishes CREATE (adds data) from DELETE (removes data, marked as destructive)
  • readOnlyHint: false properly indicates state mutation
  • openWorldHint: true signals external API interaction
components/ably/actions/publish-push-notification/publish-push-notification.mjs (1)

5-10: LGTM! Annotations correctly reflect non-destructive publish operation.

The annotations are semantically appropriate for a message publishing action, consistent with other non-destructive write operations in this PR.

components/_2markdown/actions/url-to-markdown/url-to-markdown.mjs (1)

7-12: LGTM! Annotations align with action semantics.

The version bump and annotations are appropriate. openWorldHint: true correctly reflects that this action fetches external URLs, and destructiveHint: false is accurate since the action doesn't modify or delete user data.

components/add_to_calendar_pro/actions/get-event/get-event.mjs (1)

7-12: LGTM! Annotations correctly reflect read-only semantics.

The version bump and annotations are accurate. readOnlyHint: true is particularly appropriate for this GET operation that only retrieves event data without modification.

components/add_to_calendar_pro/actions/delete-event/delete-event.mjs (1)

7-12: LGTM! Annotations correctly reflect destructive operation.

The version bump and annotations are accurate. destructiveHint: true is particularly appropriate since this action explicitly deletes event data.

components/abyssale/actions/generate-image/generate-image.mjs (1)

8-13: LGTM! Annotations align with image generation semantics.

The version bump and annotations are appropriate. openWorldHint: true correctly reflects external API calls to Abyssale's image generation service, and destructiveHint: false is accurate since the action creates content rather than deleting it.

components/abyssale/actions/generate-multi-format-images-videos/generate-multi-format-images-videos.mjs (1)

8-13: LGTM! Annotations consistent with content generation semantics.

The version bump and annotations are appropriate and consistent with the sibling generate-image action. All three hints accurately reflect that this action creates content via external API without destructive operations.

components/_2markdown/actions/html-to-markdown/html-to-markdown.mjs (1)

7-12: LGTM! Annotations are semantically correct.

The annotations accurately reflect the action's behavior:

  • readOnlyHint: true is appropriate since this performs a conversion operation via external API without modifying any persistent state
  • openWorldHint: true correctly indicates external API dependency
  • destructiveHint: false is correct as no data is destroyed
components/_8x8_connect/actions/get-log-result/get-log-result.mjs (1)

7-12: LGTM! Annotations align with read-only behavior.

The annotations correctly represent this action's characteristics:

  • readOnlyHint: true is appropriate for a status check operation
  • openWorldHint: true correctly reflects the external API dependency on 8x8 Connect
  • destructiveHint: false is accurate
components/acuity_scheduling/actions/add-blocked-off-time/add-blocked-off-time.mjs (1)

7-12: LGTM! Annotations correctly reflect write operation.

The annotations are semantically accurate:

  • readOnlyHint: false is correct since this action modifies the schedule by creating blocked time slots
  • openWorldHint: true appropriately indicates external API interaction
  • destructiveHint: false is accurate as blocking time is additive, not destructive
components/accuweather/actions/get-current-conditions/get-current-conditions.mjs (1)

7-12: LGTM! Annotations are appropriate for read operation.

The annotations accurately describe this read-only weather query action:

  • readOnlyHint: true correctly indicates no state modification
  • openWorldHint: true properly reflects the AccuWeather API dependency
  • destructiveHint: false is accurate
components/activecampaign/actions/create-contact/create-contact.mjs (1)

9-14: LGTM! Annotations correctly reflect create operation.

The annotations are semantically correct for this action:

  • readOnlyHint: false is appropriate since creating a contact modifies external state
  • openWorldHint: true correctly indicates ActiveCampaign API interaction
  • destructiveHint: false is accurate as contact creation is additive
components/add_to_calendar_pro/actions/create-landing-page-template/create-landing-page-template.mjs (1)

7-12: Metadata bump and annotations look consistent — version increment matches the newly added MCP annotation hints, and nothing else in the action changes.

components/_2chat/actions/send-whatsapp-text-message/send-whatsapp-text-message.mjs (1)

7-12: Annotation additions make sense alongside the version bump — destructive/open-world/read-only flags align with the action behavior, so this metadata update looks good.

Comment on lines +7 to +12
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: true,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify readOnlyHint: true is accurate.

The action compresses a PDF and returns a URL to the compressed file (getAsUrl: true on line 34), which suggests it creates/stores a new resource. Confirm whether readOnlyHint: true correctly reflects the operation, or if it should be false since compression typically produces a new artifact.


🏁 Script executed:

#!/bin/bash
# Description: Check if other PDF/compression actions use readOnlyHint: true or false
# Expected: Find similar compress/transform actions and their readOnlyHint values

rg -n -C3 --type=js 'key:.*compress.*pdf|name:.*[Cc]ompress.*PDF' -A20 | rg 'readOnlyHint'

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Find all occurrences of readOnlyHint in the codebase
rg -n 'readOnlyHint' -C2

# Find all actions using getAsUrl and show context for annotations
rg -n -C5 'getAsUrl'

Length of output: 66159


Set readOnlyHint to false for compress-pdf action
Since this action generates and returns a new compressed PDF URL (getAsUrl: true), it writes a new resource—update readOnlyHint in components/_0codekit/actions/compress-pdf/compress-pdf.mjs (lines 7–12) from true to false.

🤖 Prompt for AI Agents
In components/_0codekit/actions/compress-pdf/compress-pdf.mjs around lines 7 to
12, the action sets annotations.readOnlyHint to true despite generating and
returning a new compressed PDF URL; update annotations.readOnlyHint from true to
false to reflect that the action writes a new resource (ensure only that boolean
value is changed).

Comment on lines +7 to +12
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Flip destructiveHint to true

This action places a live phone call via 46elks, which is a side-effecting operation in the real world. Marking it as non-destructive misleads users and any automation that relies on these hints to detect risky actions. Please set destructiveHint: true to match the behavior.

🤖 Prompt for AI Agents
In components/_46elks/actions/make-phone-call/make-phone-call.mjs around lines 7
to 12, the annotations object incorrectly sets destructiveHint to false even
though this action places a live phone call; change destructiveHint: false to
destructiveHint: true so the hint accurately reflects the side-effecting nature
of the action, leaving the other annotation keys (openWorldHint, readOnlyHint)
unchanged.

Comment on lines +7 to +12
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Creating emails isn’t read-only

This action persists a new email draft in 4DEM, so it definitely mutates external state. With destructiveHint: false, users lose the warning that they’re writing data. Please set destructiveHint to true.

🤖 Prompt for AI Agents
In components/_4dem/actions/create-email/create-email.mjs around lines 7 to 12,
the action sets destructiveHint: false even though it creates/persists a new
email draft; change destructiveHint to true to indicate the action mutates
external state. Update the annotations block so destructiveHint: true is set
(leave other hints as-is) and ensure any tests or documentation reflecting
destructive behavior are adjusted accordingly.

Comment on lines +6 to +9
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Set destructiveHint to true for create operation.

This action invokes accelo.createProspect, which writes a new record to Accelo. Labeling it as non-destructive misleads consumers about side effects and suppresses the appropriate safety cues. Please mark it as destructive.

-    destructiveHint: false,
+    destructiveHint: true,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
annotations: {
destructiveHint: true,
openWorldHint: true,
readOnlyHint: false,
🤖 Prompt for AI Agents
In components/accelo/actions/create-prospect/create-prospect.mjs around lines 6
to 9, the action's annotations incorrectly set destructiveHint: false for a
create operation; change destructiveHint to true so the annotation reads
destructiveHint: true (keep openWorldHint and readOnlyHint as appropriate) to
correctly indicate this action performs a write and surface safety cues to
consumers.

Comment on lines +5 to +10
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fix destructiveHint to reflect state changes

The action mutates remote state (subscribing a customer), yet destructiveHint is set to false while readOnlyHint is already false. This mismatch undercuts the annotation’s warning semantics and could mislead users about the effect of running the action. Please align the flag with the action’s behavior.

   version: "0.0.2",
   annotations: {
-    destructiveHint: false,
+    destructiveHint: true,
     openWorldHint: true,
     readOnlyHint: false,
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
},
version: "0.0.2",
annotations: {
destructiveHint: true,
openWorldHint: true,
readOnlyHint: false,
},
🤖 Prompt for AI Agents
In
components/acelle_mail/actions/subscribe-customer-to-plan/subscribe-customer-to-plan.mjs
around lines 5 to 10, the annotations declare destructiveHint: false despite the
action mutating remote state by subscribing a customer; update the annotation to
reflect that this action is destructive by changing destructiveHint to true
(leave readOnlyHint as false and keep openWorldHint as appropriate) so the
metadata accurately signals state-changing behavior.

export default {
key: "acuity_scheduling-get-appointment-types",
name: "Get Appointment Types",
description: "Return a list ofappointment types. [See the documentation](https://developers.acuityscheduling.com/reference/appointment-types)",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Minor typo in description (pre-existing).

Line 6 has a typo: "ofappointment" should be "of appointment". This is a pre-existing issue not introduced by this PR, but could be fixed in a future change.

🤖 Prompt for AI Agents
components/acuity_scheduling/actions/get-appointment-types/get-appointment-types.mjs
around line 6: the description string contains a typo "ofappointment" — update
it to "of appointment" so the description reads "Return a list of appointment
types. [See the
documentation](https://developers.acuityscheduling.com/reference/appointment-types)".
Ensure spacing is correct and run any linting/string checks after the change.

Comment on lines +8 to +13
version: "0.0.2",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: false,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Mark the subscription as destructive

Subscribing users to lists changes their state in AcyMailing (it writes data, triggers automations, sends welcome emails, etc.). Reporting this as non-destructive gives downstream tooling the wrong signal. Please flip destructiveHint to true.

🤖 Prompt for AI Agents
In components/acymailing/actions/subscribe-user/subscribe-user.mjs around lines
8 to 13, the action metadata marks the operation as non-destructive
(destructiveHint: false) but subscribing modifies user state and triggers
emails/automations; update the annotations to set destructiveHint: true so
downstream tooling correctly treats this as a destructive operation, keeping the
rest of the annotations unchanged.

@GTFalcao GTFalcao closed this Sep 30, 2025
@pipedream-component-development pipedream-component-development deleted the mcp-annotations-1 branch September 30, 2025 22:06
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.

2 participants