Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Commonroom MCP server

Vendor MCP
Open markdown

The Commonroom MCP connector routes your AI agent's tool calls to Commonroom's own MCP server through Scalekit. Each user signs in to Commonroom once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 5 tools.

Tools
5
What they doRead · write · destructive
2 · 1 · 22 read1 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Commonroom MCP connection

    In AgentKit > Connections, create a Commonroom MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Commonroom MCP server, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    Commonroom MCP uses Dynamic Client Registration (DCR) — no client ID or secret is required. The only step is creating a connection in Scalekit and authorizing your Common Room account.

    1. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
      • Search for Commonroom MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., commonroommcp).
    2. Authorize your Common Room account

      Generate an authorization link and open it in a browser to complete the Common Room OAuth flow.

      The user is redirected to Common Room to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'commonroommcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Commonroom MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'commonroommcp_commonroom_get_catalog',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • commonroommcp_commonroom_get_catalogRetrieve the catalog of available object types, their properties, and allowed sort fields in Common Room.Read-only

    Commonroom Get Catalog

    Retrieve the catalog of available object types, their properties, and allowed sort fields in Common Room.

    Inputs

    communityIdstring
    ID of the Common Room community to operate on.
  • commonroommcp_commonroom_list_objectsList Common Room objects (contacts, organizations, segments, etc.) with optional pagination, filtering, and sorting.Read-only

    Commonroom List Objects

    List Common Room objects (contacts, organizations, segments, etc.) with optional pagination, filtering, and sorting.

    Inputs

    objectTypestringrequired
    The Common Room object type to operate on. Use get_catalog to discover all available types.one of ActivityBomboraTopicContactCustomFieldActivityCategoryActivitySentimentActivityTypeJobOpeningLeadScoreLocationIndustryJobTitleMeMemberRoleNewsItemObjectOrganizationProviderProspectorCompanyProspectorContactSegmentTagTechStackProductTopicWebsiteVisit
    communityIdstring
    ID of the Common Room community to operate on.
    cursorstring
    Pagination cursor returned by a previous response.
    directionstring
    Sort direction for the results.one of ascdesc
    filterobject
    Filter criteria as a JSON object to narrow results.
    idstring
    The unique ID of the object to retrieve.
    limitinteger
    Maximum number of objects to return per page.
    objectTypeIdstring
    The ID of a custom object type to query.
    propertiesarray
    List of property names to include in the response.
    sortstring
    Field name to sort results by.
  • commonroommcp_commonroom_submit_feedbackSubmit feedback on the quality of a query result — use after presenting data to the user.Write

    Commonroom Submit Feedback

    Submit feedback on the quality of a query result — use after presenting data to the user.

    Inputs

    ratingstringrequired
    Your rating for the quality of the query result.one of helpfulnot_helpful
    communityIdstring
    ID of the Common Room community to operate on.
    feedbackTextstring
    Optional text explaining your feedback.
    objectTypestring
    The Common Room object type to operate on. Use get_catalog to discover all available types.
    queryDescriptionstring
    Description of the query you are rating.
  • commonroommcp_commonroom_create_objectCreate a new object in Common Room — contact, organization, activity, or custom object type.Destructive

    Commonroom Create Object

    Create a new object in Common Room — contact, organization, activity, or custom object type.

    Inputs

    objectTypestringrequired
    The Common Room object type to operate on. Use get_catalog to discover all available types.one of ContactSegmentActivityNoteOrganization
    activityBodystring
    Body text content of the activity being recorded.
    activityTypestring
    Activity type identifier for this engagement signal. Use get_catalog with objectType=ActivityType to see all valid types.one of UserInputAcceptedMeetingAddedUserInputActivityFeatureIdeaAddedUserInputAnsweredCallAddedUserInputAnsweredFormSurveyAddedUserInputAppliedChampionProgramAddedUserInputArticleAddedUserInputAttendedDemoAddedUserInputAttendedGatheringAddedUserInputAttendedMeetingAddedUserInputAttendedProductDiscoveryCallAddedUserInputAttendedRoadmapCallAddedUserInputAttendedWebinarAddedUserInputBookedMeetingAddedUserInputCalledInAddedUserInputCommentedRepliedAddedUserInputCommentedTicketAddedUserInputCompletedOnboardingAddedUserInputCompletedTrainingAddedUserInputCompletedTransactionAddedUserInputCreatedAnAccountAddedUserInputCreatedTicketAddedUserInputCreatedTrainingMaterialAddedUserInputDealClosedAddedUserInputDealCreatedAddedUserInputDeclinedRewardAddedUserInputEligibleRewardAddedUserInputEnrolledInChampionProgramAddedUserInputEnrolledInTrainingAddedUserInputGraduatedFromChampionProgramAddedUserInputHostedGatheringAddedUserInputHostedMeetingAddedUserInputHostedWebinarAddedUserInputIdentifiedPowerUserAddedApiUserImportedUserInputJoinedUserInputJoinedAdvisoryBoardAddedUserInputJoinedGroupAddedUserInputLikedReactedAddedUserInputLinkAddedUserInputLoggedInAddedUserInputMadeCommitAddedUserInputMadeMergeRequestAddedUserInputMadePostTopicAddedUserInputMadeReferralAddedUserInputMergeRequestMergedUserInputOtherAddedUserInputParticipatedEarlyAccessProgramAddedUserInputPresentedAtGatheringAddedUserInputPresentedAtWebinarAddedUserInputProvidedCaseStudyAddedUserInputProvidedProductFeedbackAddedUserInputReceivedAMessageAddedUserInputReceivedCallNoAnswerAddedUserInputReceivedEmailAddedUserInputReceivedFormSurveyAddedUserInputReceivedGiftAddedUserInputReceivedLiMessageAddedUserInputReceivedSmsAddedUserInputReceivedTagBadgeAddedUserInputReceivedWhatsappAddedUserInputRedeemedRewardAddedUserInputRegisteredForGatheringAddedUserInputRegisteredForWebinarAddedUserInputRegisteredSpeakerForGatheringAddedUserInputRequestedDemoAddedUserInputRequestedEarlyAccessProgramAddedUserInputSentAMessageAddedUserInputSentEmailAddedUserInputSentGiftAddedUserInputSentLiMessageAddedUserInputSentSmsAddedUserInputSentWhatsappAddedUserInputSignedUpForProductAddedUserInputSignedUpForTrialAddedUserInputStartedGroupChatAddedUserInputStartedSessionUserInputStartedTrainingAddedUserInputStickerOrderAddedUserInputStickerReceivedAddedUserInputStickerRequestAddedUserInputSubmittedFeatureRequestAddedUserInputSubmittedFormAddedUserInputSubmittedIdeaAddedUserInputSubscribedNewsletterAddedUserInputSwagOrderAddedUserInputSwagReceivedAddedUserInputSwagRequestAddedUserInputTaggedInMediaAddedUserInputUpdatedTicketAddedUserInputUploadedPhotoAddedUserInputUploadedVideoAddedUserInputViewedPageAdded
    communityIdstring
    ID of the Common Room community to operate on.
    companyDomainstring
    Domain of the company (e.g. acme.com). Used to link contacts to organizations.
    companyNamestring
    Name of the company the contact belongs to.
    contactIdstring
    The unique ID of an existing Contact in Common Room.
    customFieldsarray
    Custom field values to set on the object.
    descriptionstring
    Optional description or notes about the object.
    domainstring
    Domain of the organization (e.g. acme.com).
    emailstring
    Email address of the contact. Used as the unique identifier for Contact objects.
    entityTypestring
    The entity type associated with the activity.one of contactorganization
    fullNamestring
    Full name of the contact.
    githubUsernamestring
    GitHub username of the contact.
    linkedInUrlstring
    Full LinkedIn profile URL of the contact.
    namestring
    Name of the organization or custom object.
    notestring
    A note to attach to this contact or organization.
    occurredAtstring
    ISO 8601 timestamp for when the activity occurred.
    organizationIdstring
    The unique ID of an existing Organization in Common Room.
    prospectorCompanyIdstring
    The Prospector company ID to associate with this record.
    prospectorContactIdstring
    The Prospector contact ID to associate with this record.
    segmentIdstring
    The ID of a Segment to assign this contact or organization to.
    titlestring
    Job title of the contact.
    twitterHandlestring
    Twitter/X handle of the contact (without @).
  • commonroommcp_commonroom_update_objectUpdate fields on an existing Common Room object (contact, organization, segment, etc.) by its ID.Destructive

    Commonroom Update Object

    Update fields on an existing Common Room object (contact, organization, segment, etc.) by its ID.

    • Idempotent

    Inputs

    objectTypestringrequired
    The Common Room object type to operate on. Use get_catalog to discover all available types.one of ContactOrganizationSegment
    communityIdstring
    ID of the Common Room community to operate on.
    companyDomainstring
    Domain of the company (e.g. acme.com). Used to link contacts to organizations.
    companyNamestring
    Name of the company the contact belongs to.
    contactIdstring
    The unique ID of an existing Contact in Common Room.
    customFieldsarray
    Custom field values to set on the object.
    emailstring
    Email address of the contact. Used as the unique identifier for Contact objects.
    fullNamestring
    Full name of the contact.
    githubUsernamestring
    GitHub username of the contact.
    linkedInUrlstring
    Full LinkedIn profile URL of the contact.
    namestring
    The new name to set. Renames an Organization or a Segment.
    organizationIdstring
    The unique ID of an existing Organization in Common Room.
    prospectorCompanyIdstring
    The Prospector company ID to associate with this record.
    prospectorContactIdstring
    The Prospector contact ID to associate with this record.
    segmentIdstring
    The ID of a Segment to assign this contact or organization to.
    titlestring
    Job title of the contact.
    twitterHandlestring
    Twitter/X handle of the contact (without @).

Workflows

List community members

Use commonroommcp_commonroom_list_objects with objectType set to Contact to retrieve community members with optional filtering and pagination.

const result = await actions.executeTool({
connector: 'commonroommcp',
identifier: 'user_123',
toolName: 'commonroommcp_commonroom_list_objects',
toolInput: {
objectType: 'Contact',
limit: 20,
},
});
console.log(result);

Create a contact

Use commonroommcp_commonroom_create_object to add a new contact to your Common Room community.

const result = await actions.executeTool({
connector: 'commonroommcp',
identifier: 'user_123',
toolName: 'commonroommcp_commonroom_create_object',
toolInput: {
objectType: 'Contact',
email: 'alex@example.com',
fullName: 'Alex Johnson',
title: 'Senior Engineer',
companyName: 'Example Corp',
},
});
console.log(result);

Discover available object types

Use commonroommcp_commonroom_get_catalog to retrieve the full list of object types, their properties, and allowed sort fields before querying or creating objects.

const catalog = await actions.executeTool({
connector: 'commonroommcp',
identifier: 'user_123',
toolName: 'commonroommcp_commonroom_get_catalog',
toolInput: {},
});
console.log(catalog);