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
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Commonroom MCP connection
In AgentKit > Connections, create a Commonroom MCP connection. The name you give it is the
connection_nameyour 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.
-
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_namein your code (e.g.,commonroommcp).
-
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.
-
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.actionsconst connector = 'commonroommcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'commonroommcp_commonroom_get_catalog',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "commonroommcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Commonroom MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="commonroommcp_commonroom_get_catalog",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolcommonroommcp_commonroom_get_catalogRetrieve the catalog of available object types, their properties, and allowed sort fields in Common Room.Read-onlyCommonroom 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-onlyCommonroom 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.WriteCommonroom 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.DestructiveCommonroom 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.DestructiveCommonroom 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 @).
No tools match.
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);result = actions.execute_tool( connection_name="commonroommcp", identifier="user_123", tool_name="commonroommcp_commonroom_list_objects", tool_input={ "objectType": "Contact", "limit": 20, },)print(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);result = actions.execute_tool( connection_name="commonroommcp", identifier="user_123", tool_name="commonroommcp_commonroom_create_object", tool_input={ "objectType": "Contact", "email": "alex@example.com", "fullName": "Alex Johnson", "title": "Senior Engineer", "companyName": "Example Corp", },)print(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);catalog = actions.execute_tool( connection_name="commonroommcp", identifier="user_123", tool_name="commonroommcp_commonroom_get_catalog", tool_input={},)print(catalog)