Skip to content

Integration · Productivity

sutra.co

Connect Claude & ChatGPT to Sutra

Ask your AI who the members of a space are, what was posted in a discussion, or to draft a broadcast in Sutra. It can search spaces and members, read page content, invite and add members, add contacts, and list payments, plans and survey submissions. Community admin work gets done without clicking through each space.

Connect Sutra free

Free plan, no credit card. Takes about a minute.

Try asking

  • “Who are the hosts in the Spring Cohort space?”

    The AI finds the space and lists its members with the role you ask for.

  • “Invite [email protected] to the Writing Circle and send her the invitation email.”

    It invites her to the space with a role and an optional message, and sends the email when you ask it to notify her.

  • “Draft a broadcast to the Spring Cohort about next week's session.”

    It creates a draft broadcast with a title and text. Nothing is sent until you tell it to send.

What your AI can do

Spaces and content

Search spaces, read a space's settings and page content, list child spaces, and create or update spaces.

Members, contacts and invitations

Search members across your spaces, invite or add people, change a member's role, remove members and add contacts.

Broadcasts, messages and payments

Draft, read and send broadcasts, post and read discussion messages, and list payments, plans, surveys and submissions.

  • “What has been posted in the Q&A space lately?”

    It lists the discussion messages in that space, optionally from one member.

  • “Which payments has the Masterclass space received?”

    It lists payments made to the space, filtered by status or member, and can show the space's paid plans.

  • “Show the submissions to the onboarding survey.”

    It finds the survey in the space and lists its submissions.

180 tools for Sutra

These tools are switched on when you connect. You can switch any of them off, or require your approval before it runs.

  • add_space_memberDeletesAdd a person to a space by `space_id` with `email` or `user_id`, and optional `role`. Set `notify` to email them.
  • add_up_to_100_contactsMoves moneyCreate a new contact. Required: items. Search contacts first to avoid duplicates. Financial or irreversible action; may require approval. API summary: Add up to 100 contacts.
  • approve_userDeletesApprove a user (member id). Destructive action; may require approval. API summary: Approve a pending member.
  • attach_child_to_spaceDeletesAttach a child (child space id). Destructive action; may require approval. API summary: Attach an existing child space.
  • cancel_documentDeletesCancel a document (media id). Destructive action; may require approval. API summary: Cancel a pending media upload.
  • create_a_registration_page_special_blockDeletesCreate a new special block. Required: type. Destructive action; may require approval. API summary: Create a registration page special block.
  • create_a_space_propertyDeletesCreate a new property for a space. Destructive action; may require approval. API summary: Create a space property.
  • create_automation_stepDeletesCreate a new step for a automation. Required: action type. Destructive action; may require approval. API summary: Add a step.
  • create_automation_userDeletesCreate a new user for a automation. Search users first to avoid duplicates. Destructive action; may require approval. API summary: Add a member to an automation.
  • create_broadcastDeletesCreate a draft broadcast for a space by `space_id` with `title`, text in `raw_content` and optional `target` audience. Nothing is sent until you send it.
  • create_bulk_deleteMoves moneyCreate a new bulk delete. Required: items. Financial or irreversible action; may require approval. API summary: Remove up to 100 members.
  • create_contactDeletesAdd a contact to a space by `space_id` with `email`, optional `first_name` and `last_name`, and `trigger_automations` to start the space's automations.
  • create_contact_2Moves moneyCreate a new contact. Required: items. Search contacts first to avoid duplicates. Financial or irreversible action; may require approval. API summary: Add up to 100 members.
  • create_discussion_promptDeletesCreate a new discussion prompt. Destructive action; may require approval. API summary: Create a discussion prompt.
  • create_documentDeletesCreate a new document. Destructive action; may require approval. API summary: Insert document nodes.
  • create_document_insert_admin_api_space_registration_page_nodesDeletesCreate a new document. Destructive action; may require approval. API summary: Insert registration page draft nodes.
  • create_message_reflectionDeletesCreate a new reflection for a message. Destructive action; may require approval. API summary: Create a reflection on a message.
  • create_propertyDeletesCreate a new property. Required: order. Destructive action; may require approval. API summary: Reorder steps (linear flows).
  • create_replaceDeletesCreate a new replace. Required: steps. Destructive action; may require approval. API summary: Replace the step graph (diff/upsert).
  • create_spaceDeletesCreate a new space with `name`, `type`, `privacy` and optional `description` or `parent_id`.
  • create_space_automationDeletesCreate a new automation for a space. Required: trigger type. Destructive action; may require approval. API summary: Create an automation.
  • create_space_childDeletesCreate a new child for a space. Destructive action; may require approval. API summary: Create a direct child space.
  • create_space_contentDeletesCreate a new content for a space. Destructive action; may require approval. API summary: Create a content block.
  • create_space_couponDeletesCreate a new coupon for a space. Required: code or value. Search coupons first to avoid duplicates. Destructive action; may require approval. API summary: Create a coupon.
  • create_space_design_draftDeletesCreate a new design draft for a space. Required: nodes, base digest or client draft key. Destructive action; may require approval. API summary: Create or update a design draft.
  • create_space_documentDeletesCreate a new document for a space. Required: filename, content type or size bytes. Destructive action; may require approval. API summary: Create a media upload session.
  • create_space_imageDeletesCreate a new image for a space. Required: kind or source url. Destructive action; may require approval. API summary: Set or remove a space image from a URL.
  • create_space_media_referenceDeletesCreate a new media reference for a space. Required: url. Destructive action; may require approval. API summary: Create an external media reference.
  • create_space_navbar_configDeletesCreate a new navbar config for a space. Required: name. Destructive action; may require approval. API summary: Create a navbar config.
  • create_space_planDeletesCreate a new plan for a space. Search plans first to avoid duplicates. Destructive action; may require approval. API summary: Create a plan.
  • create_space_propertyDeletesCreate a new property for a space. Destructive action; may require approval. API summary: Create a member property.
  • create_space_share_block_configDeletesCreate a new share block config for a space. Required: name. Destructive action; may require approval. API summary: Create a share-block config.
  • create_space_surveyDeletesCreate a new survey for a space. Search surveys first to avoid duplicates. Destructive action; may require approval. API summary: Create a survey.
  • create_special_blockDeletesCreate a new special block. Required: type. Destructive action; may require approval. API summary: Create a document special block.
  • create_survey_questionDeletesCreate a new question for a survey. Destructive action; may require approval. API summary: Create a survey question.
  • create_survey_question_answerDeletesCreate a new answer for a survey question. Destructive action; may require approval. API summary: Create a survey answer option.
  • create_up_to_100_invitationsMoves moneyCreate a new contact. Required: items. Search contacts first to avoid duplicates. Financial or irreversible action; may require approval. API summary: Create up to 100 invitations.
  • delete_a_registration_page_draft_nodeDeletesPermanently delete a document by document uid. Destructive action; may require approval. API summary: Delete a registration page draft node.
  • delete_a_registration_page_special_blockDeletesPermanently delete a special block by node uid. Destructive action; may require approval. API summary: Delete a registration page special block.
  • delete_a_space_propertyDeletesPermanently delete a property by property id. Destructive action; may require approval. API summary: Delete a space property.
  • delete_automationDeletesPermanently delete a automation by automation id. Destructive action; may require approval. API summary: Delete an automation.
  • delete_automation_stepDeletesPermanently delete a step by step id. Destructive action; may require approval.
  • delete_automation_userDeletesPermanently delete a user by enrollment id. Destructive action; may require approval. API summary: Remove a member from an automation.
  • delete_broadcastDeletesPermanently delete a broadcast by broadcast id. Destructive action; may require approval.
  • delete_contentDeletesPermanently delete a content by block id. Destructive action; may require approval. API summary: Delete a content block.
  • delete_couponDeletesPermanently delete a coupon by coupon id. Destructive action; may require approval. API summary: Deactivate a coupon.
  • delete_documentDeletesPermanently delete a document by document uid. Destructive action; may require approval. API summary: Delete a document node.
  • delete_messageDeletesPermanently delete a message by message id. Destructive action; may require approval.
  • delete_planDeletesPermanently delete a plan by plan id. Destructive action; may require approval. API summary: Deactivate a plan.
  • delete_propertyDeletesPermanently delete a property by property id. Destructive action; may require approval. API summary: Delete a member property.
  • delete_reflectionDeletesPermanently delete a reflection by reflection id. Destructive action; may require approval.
  • delete_spaceDeletesPermanently delete a space by space id. Destructive action; may require approval.
  • delete_space_contactDeletesPermanently delete a contact by contact id. Destructive action; may require approval.
  • delete_space_invitationDeletesPermanently delete a invitation by invitation id. Destructive action; may require approval. API summary: Delete an invitation.
  • delete_space_navbar_configDeletesPermanently delete a navbar config by navbar config id. Destructive action; may require approval.
  • delete_space_share_block_configDeletesPermanently delete a share block config by share block config id. Destructive action; may require approval. API summary: Delete a share-block config.
  • delete_special_blockDeletesPermanently delete a special block by node uid. Destructive action; may require approval. API summary: Delete a document special block.
  • delete_surveyDeletesPermanently delete a survey by survey id. Destructive action; may require approval.
  • delete_survey_answerDeletesPermanently delete a survey answer by answer id. Destructive action; may require approval. API summary: Delete a survey answer option.
  • delete_survey_questionDeletesPermanently delete a survey question by question id. Destructive action; may require approval.
  • detach_child_to_spaceDeletesDetach a child (child space id). Destructive action; may require approval. API summary: Detach a child space.
  • get_a_registration_page_special_blockGet one special block by node uid. API summary: Get a registration page special block.
  • get_a_space_propertyGet one property by property id. API summary: Get a space property.
  • get_automationGet one automation by automation id. API summary: Get automation details.
  • get_automation_userGet one user for a automation by enrollment id. API summary: Get a member's automation enrollment.
  • get_broadcastGet one broadcast by `broadcast_id`, with its title, content, audience and status.
  • get_contentGet one content by block id. API summary: Get a content block.
  • get_couponGet one coupon by coupon id. API summary: Get a coupon.
  • get_documentGet one document by media id. API summary: Get media upload and processing status.
  • get_document_capabilitiesList capabilities. API summary: Get document capabilities.
  • get_enrollmentGet one enrollment by enrollment id. API summary: Get an enrollment.
  • get_meGet the Sutra account connected to this API token.
  • get_messageGet one message by message id. API summary: Get a message.
  • get_paymentGet one payment by payment id. API summary: Get a payment.
  • get_planGet one plan by plan id. API summary: Get a plan.
  • get_projectGet one project by project id. API summary: Get an asynchronous Admin API job.
  • get_propertyGet one property by property id. API summary: Get a member property.
  • get_reflectionGet one reflection by reflection id. API summary: Get a reflection.
  • get_spaceGet one space by `space_id`, with its name, type, privacy and settings.
  • get_space_contactGet one contact for a space by contact id. API summary: Get a contact.
  • get_space_contentGet the page content (document) of a space by `space_id`.
  • get_space_design_draftGet one design draft for a space by draft id. API summary: Get a design draft.
  • get_space_invitationGet one invitation for a space by invitation id. API summary: Get an invitation.
  • get_space_memberGet one member of a space by `space_id` and member ID.
  • get_space_navbar_configGet one navbar config for a space by navbar config id. API summary: Get a navbar config.
  • get_space_share_block_configGet one share block config for a space by share block config id. API summary: Get a share-block config.
  • get_special_blockGet one special block by node uid. API summary: Get a document special block.
  • get_surveyGet one survey by survey id. API summary: Get a survey and its questions.
  • get_survey_submissionGet one submission for a survey by submission id. API summary: Get a survey submission.
  • invite_to_spaceDeletesInvite someone to a space by `space_id` and `email`, with optional `role`, `message` and `free_access`. Set `notify` to send the invitation email.
  • list_automation_stepsList steps for a automation. API summary: List automation steps.
  • list_automation_usersList users for a automation. Optional filters: status. Results are paginated. API summary: List members enrolled in an automation.
  • list_broadcast_delivery_statusesList delivery statuses for a broadcast. API summary: Get broadcast delivery status.
  • list_broadcastsList broadcasts (email announcements) of a space by `space_id`, filtered by `q` or `status`.
  • list_capabilitiesList capabilities. API summary: Get design capabilities.
  • list_capabilities_get_admin_api_automation_capabilitiesList capabilities. Optional filters: space id. API summary: Automation authoring capabilities.
  • list_child_spacesList the child spaces (sub-pages, circles) inside a space by `space_id`.
  • list_contact_propertiesList properties for a contact. API summary: List property values for a contact.
  • list_discussion_prompt_capabilitiesList discussion prompt capabilities. API summary: Get discussion prompt capabilities.
  • list_document_special_block_typesList special block types. API summary: List document special block types.
  • list_invitationsList invitations to a space by `space_id`, filtered by `email`, `role` or `state`.
  • list_message_reflectionsList reflections for a message. Results are paginated. API summary: List reflections on a message.
  • list_my_spacesList the spaces the connected account is a member of.
  • list_plan_enrollmentsList enrollments for a plan. Results are paginated.
  • list_plansList the paid plans (pricing) of a space by `space_id`, filtered by `q`, `status` or `frequency`.
  • list_property_values_for_a_spaceList properties for a space. API summary: List property values for a space.
  • list_registration_page_special_block_typesList special block types. API summary: List registration page special block types.
  • list_registration_page_special_blocksList special blocks. API summary: List registration page special blocks.
  • list_space_automationsList automations for a space. Results are paginated. API summary: List automations on a space.
  • list_space_contentsList contents for a space. Results are paginated. API summary: List content blocks for a space.
  • list_space_designsList designs for a space. API summary: Get current space design.
  • list_space_membersList members of a space by `space_id`, filtered by name or email (`q`, `email`), `role`, `state` or member properties.
  • list_space_messagesList discussion messages posted in a space by `space_id`, optionally by one `user_id`.
  • list_space_navbar_configsList navbar configs for a space. API summary: List a space's navbar configs.
  • list_space_pagesList pages for a space. API summary: Get the registration page draft and published documents.
  • list_space_paymentsList payments made to a space by `space_id`, filtered by `status` or `user_id`.
  • list_space_propertiesList properties for a space. Results are paginated. API summary: List member properties for a space.
  • list_space_properties_for_a_spaceList properties for a space. Results are paginated. API summary: List space properties for a space.
  • list_space_share_block_configsList share block configs for a space. API summary: List a space's share-block configs.
  • list_space_websitesList websites for a space. API summary: Read a space's website-mode state.
  • list_special_block_typesList special block types.
  • list_special_blocksList special blocks. API summary: List document special blocks.
  • list_survey_submissionsList the submissions to a survey by `survey_id`.
  • list_surveysList surveys and forms in a space by `space_id`, filtered by `q` or `type`.
  • list_user_propertiesList properties for a user. API summary: List property values for a member.
  • post_space_messageDeletesPost a discussion message or comment in a space by `space_id` with text in `raw_content`. Members of the space can see it.
  • publish_a_design_draftDeletesPublish a design draft (draft id). Destructive action; may require approval.
  • remove_space_memberDeletesRemove a member from a space by `space_id` and member ID. They lose access to the space.
  • restore_a_published_design_draftDeletesRestore a design draft (draft id). Destructive action; may require approval. API summary: Restore a published design draft.
  • restore_design_draftDeletesRestore a design draft (draft id). Destructive action; may require approval. API summary: Restore a published design draft.
  • search_contactsSearch contacts of a space by `space_id`, by name (`q`), `email` or contact properties.
  • search_membersSearch members across all your spaces by name, email, role, state or member properties.
  • search_space_couponsSearch coupons for a space by q or status. Use this to find existing coupons before creating a new coupon. Results are paginated. API summary: List coupons for a space.
  • search_spacesSearch spaces by name (`q`), `type`, `state` or `privacy`. Use this to find a space ID (sp_...).
  • send_broadcastDeletesSend a broadcast by `broadcast_id` to its audience. This emails people and cannot be undone.
  • submit_designDeletesValidate a design (space id). Destructive action; may require approval. API summary: Validate design nodes.
  • submit_design_draftDeletesPublish a design draft (draft id). Destructive action; may require approval.
  • submit_design_draft_linkDeletesPreview a design draft (draft id). Destructive action; may require approval. API summary: Mint a shareable preview link for a draft.
  • submit_design_draft_link_previewDeletesPreview a design draft (draft id). Destructive action; may require approval. API summary: Mint a shareable preview link for a draft.
  • submit_documentDeletesComplete a document (media id). Destructive action; may require approval. API summary: Complete a media upload.
  • submit_invitationDeletesResend a invitation (invitation id). Destructive action; may require approval. API summary: Resend an invitation email.
  • submit_navbar_configDeletesDuplicate a navbar config (navbar config id). Destructive action; may require approval.
  • submit_pageDeletesPublish a page (space id). Destructive action; may require approval. API summary: Publish the registration page draft.
  • update_a_space_propertyDeletesUpdate an existing property identified by property id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a space property.
  • update_automationDeletesUpdate an existing automation identified by automation id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update an automation (rename / activate / pause).
  • update_automation_stepDeletesUpdate an existing step identified by step id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a step.
  • update_broadcastDeletesUpdate an existing broadcast identified by broadcast id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a draft broadcast.
  • update_child_placementsMoves moneyUpdate an existing placement identified by child space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update child placement.
  • update_contact_propertiesMoves moneyUpdate an existing property identified by contact id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update property values for a contact.
  • update_contactsMoves moneyUpdate an existing contact identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Bulk update property values for members.
  • update_contentDeletesUpdate an existing content identified by block id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a content block.
  • update_couponDeletesUpdate an existing coupon identified by coupon id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a coupon.
  • update_design_draft_nodesMoves moneyUpdate an existing node identified by draft id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Atomically patch design draft nodes.
  • update_discussion_promptDeletesUpdate an existing discussion prompt identified by node uid. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a discussion prompt.
  • update_documentDeletesUpdate an existing document identified by document uid. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a document node.
  • update_documentsMoves moneyUpdate an existing document identified by node uid. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Move a document node.
  • update_messageDeletesUpdate an existing message identified by message id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a message.
  • update_planDeletesUpdate an existing plan identified by plan id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a plan.
  • update_propertiesMoves moneyUpdate an existing property identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Reorder direct child spaces.
  • update_propertyDeletesUpdate an existing property identified by property id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a member property.
  • update_reflectionDeletesUpdate an existing reflection identified by reflection id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a reflection.
  • update_spaceDeletesUpdate a space by `space_id`: name, description, privacy, state and other details. Only the fields you pass change.
  • update_space_appearancesMoves moneyUpdate an existing appearance identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update a space's appearance.
  • update_space_design_draftDeletesUpdate an existing design draft identified by draft id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Fully replace a design draft.
  • update_space_documentsMoves moneyUpdate an existing document identified by space id. Financial or irreversible action; may require approval. API summary: Replace the Tiptap document.
  • update_space_invitationDeletesUpdate an existing invitation identified by invitation id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update an invitation.
  • update_space_memberDeletesChange a member's `role` or email frequency in a space by `space_id` and member ID.
  • update_space_navbar_configDeletesUpdate an existing navbar config identified by navbar config id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a navbar config.
  • update_space_pagesMoves moneyUpdate an existing page identified by space id. Financial or irreversible action; may require approval. API summary: Replace the editable registration page draft.
  • update_space_paymentsMoves moneyUpdate an existing payment identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Enable, disable, or configure paid access (plans system).
  • update_space_propertiesMoves moneyUpdate an existing property identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update property values for a space.
  • update_space_settingsMoves moneyUpdate an existing setting identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update a space's behavioral settings.
  • update_space_share_block_configDeletesUpdate an existing share block config identified by share block config id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a share-block config.
  • update_space_websitesMoves moneyUpdate an existing website identified by space id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Enable/disable website mode and repoint the header/footer.
  • update_special_blockDeletesUpdate an existing special block identified by node uid. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a document special block.
  • update_surveyDeletesUpdate an existing survey identified by survey id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a survey.
  • update_survey_answerDeletesUpdate an existing survey answer identified by answer id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a survey answer option.
  • update_survey_questionDeletesUpdate an existing survey question identified by question id. Only the fields you pass are changed. Destructive action; may require approval. API summary: Update a survey question.
  • update_user_propertiesMoves moneyUpdate an existing property identified by member id. Only the fields you pass are changed. Financial or irreversible action; may require approval. API summary: Update property values for a member.
  • upload_assetDeletesImport a asset. Destructive action; may require approval. API summary: Import a design asset.

Set up in three steps

  1. 1

    Pick the app

    Create a free HeyMyApps account and choose Sutra from the app list.

  2. 2

    Paste your key

    Paste a Sutra API token. The Sutra API needs a Silver or Gold plan. In Sutra click your avatar, open Settings > Sutra API, click Create token, give it a name and choose Read-only or Read & write. Copy the token right away, since it is shown only once.

  3. 3

    Add the link to your AI

    You get a personal MCP link. Add it to Claude, ChatGPT or Cursor:

    1. Click your name, then Settings › Connectors › Add custom connector.
    2. Paste your link as the Remote MCP server URL.
    3. Switch it on from the + menu in a chat.

Questions

What can the AI do in Sutra?

The AI can search and read spaces, page content, members, contacts, invitations, messages, broadcasts, payments, plans, surveys and submissions. It can create and update spaces, invite, add, update and remove members, add contacts, post messages, and create and send broadcasts if you switch those tools on.

Does the AI see my Sutra API token?

No. Your Sutra credentials are encrypted at rest and never shown to the AI. After you save them, they are not shown again, not even to you. The AI only sees the results of the tools it calls.

Can I control what the AI is allowed to do?

Yes. You choose which tools are switched on, so you can start read-only. Sending a broadcast emails people and cannot be undone, and invitations and messages reach your members. These actions can require your approval before they run. Every tool call is logged.

Does it work with ChatGPT?

Yes. In ChatGPT go to Settings › Apps & Connectors › Advanced and turn on Developer mode, then add your HeyMyApps link. Developer mode needs a paid ChatGPT plan: Plus, Pro, Business or Enterprise. The same link also works in Claude (Settings › Connectors › Add custom connector), Cursor and other MCP clients.

What does it cost?

HeyMyApps has a free plan with no credit card required. Paid plans bill per completed task. You also need your own Sutra account. The Sutra API needs a Silver or Gold plan.

Should I create a Read-only or a Read & write token?

A Read-only token is enough for looking up spaces, members, messages, broadcasts and payments. To invite people, post messages or send broadcasts, the token needs Read & write. You can also leave those tools switched off in HeyMyApps.

Let your AI work in Sutra today.

Start free. Your key stays encrypted, and you decide what the AI may do.

Connect Sutra free

HeyMyApps is not affiliated with Sutra. Product names are trademarks of their owners.