Common Elements in your AI assistant
Connect Claude, ChatGPT, Claude Code, Codex, Cursor, or VS Code to Common Elements. Query the community association dataset, and operate your own account, from inside the assistant you already use.
Connect your assistant
Pick your client. Each one takes a minute, and you choose what it can access on the Common Elements sign-in screen.
Server URL
Every client uses the same address. You sign in with your Common Elements account when the client asks; there is no key to paste.
https://commonelements.com/api/mcpClaude on the web and desktop
- Open Customize, then Connectors.
- Click +, then Add custom connector.
- Name it Common Elements, paste the server URL, and click Add.
https://commonelements.com/api/mcp - Click Connect, sign in to Common Elements, and choose what Claude can access.
On Team and Enterprise plans an owner adds the connector once under Organization settings, Connectors; members then click Connect. Free Claude accounts can add one custom connector. A listing in Claude's connector directory is pending review.
Two ways to use it
The same connector does two distinct jobs: it reads the shared community association dataset, and it lets you act on your own Common Elements account. They have different access models and different pricing.
Data tools
Read the community association dataset from any MCP host. Look up and search associations, check risk, scan governing documents, and read statutes. Shares the Developer API tiers and your API key.
Account tools
Operate your own Common Elements account through your assistant: read your orgs, RFPs, messages, and inbox, then act with your sign-off. Gated by OAuth scopes. Free, because it is just you using your own account.
Read the dataset
Available now, 25 tools. Every field is aggregated from public records and carries its source. Three tools render an interactive widget inline, in hosts that support MCP Apps; every other host still gets the same structured data as text.
Look up an association
Resolve an HOA, condo, or co-op by name or registration number and return the structured record: type, status, county, and standing. Address lookup works where a public parcel or address has already been deterministically linked, and otherwise falls back to the name matcher.
Search and match associations
Search across 397,000+ associations and match free-text or partial details to a single canonical record, so your assistant works against clean identifiers.
Get association risk
Pull FEMA flood risk for a record: share of parcels in a Special Flood Hazard Area, average base flood elevation, and flood zones on file. Renders as an interactive scorecard in hosts that support MCP Apps.
Scan a governing document
Submit declaration, bylaw, or CC and R text and receive a structured compliance read against state statute: a health score, a letter grade, and rule-by-rule findings with citations. Renders as an interactive scorecard in hosts that support MCP Apps.
Search statutes
Full-text search the state statutory reference for community associations and return the matching sections with citations.
Get a statute section
Fetch one statute section by citation, with the canonical text and a stable source reference your assistant can quote.
Find associations near a location
Find associations near a latitude and longitude, sorted by distance. Renders as an interactive map and list in hosts that support MCP Apps.
Board officers and management
Get the board or officer roster on record for an association, and the management company or CAM on record managing it.
Search the vendor directory
Search verified vendors and service providers by category and state, and pull a public profile with published reviews and a records-based trust summary.
Verify a professional license
Search the community-association professional and firm graph from state licensing-board records, and list the associations a manager or firm is on record serving.
Statute and state coverage summaries
Browse statute sections on file for a state, grouped by chapter, and get a state-by-state summary of association and licensed-entity counts.
Operate your own account
Connect your account over OAuth and your assistant acts as you, with row-level security enforcing every permission. Rolling out in phases, read first, then act. See the MCP docs for the current phase.
Read
Read your orgs and context
See who you are signed in as, the organizations you belong to, your roles, and the active org subsequent actions would post as.
Read your RFPs and proposals
List the RFPs your org has posted, the proposals on them, and the proposals your vendor org has submitted, with status.
Read your messages
List your conversations with the last message and unread count, and read the messages in any one thread.
Read your inbox
See your in-app notifications, filter to unread, and mark items read without leaving your assistant.
Act, with your sign-off
Post and reply in the Common Area
Start a thread or reply as your active org, after a preview-and-confirm step so nothing is posted without your sign-off.
Send a message
Send into an existing conversation, confirmation required, so an assistant can draft on your behalf but never sends silently.
Submit a proposal
Submit a proposal you already drafted in the web app to an open RFP. Drafting from scratch stays in-app for now.
OAuth scopes, read and write split
You connect through OAuth and grant scopes per domain. Read and write are separate grants; granting read never implies write. Read-only is the default.
Confirmation before it acts
High-impact actions return a preview and a confirmation token first. Nothing is written until a second, confirmed call, even inside an autonomous loop.
Off limits by design
Account deletion, billing, password and email changes, API-key management, and any admin action are never exposed through MCP.
What it costs
Account access is free. Data access shares the Developer API plans: the same tiers, the same monthly allowance, one bill.
Free account
- Account tools: your RFPs and proposals, messages, forum threads, relationships, notifications, and profile.
- A small monthly data allowance for statutes, compliance scans, licenses, and the vendor and professional directories.
- No card and no organization required. Connect as yourself.
Paid plan, personal or organization
- Everything in the free account.
- The association directory and per-association risk data.
- A monthly data allowance set by your plan. Connect on your personal plan or on an organization plan you belong to.
Every tool
65 tools, listed straight from the server code. Scopes and parameters are in the MCP integration docs.
Data tools (25)Read the community association dataset, statutes, and the professional and vendor directories. Includes the search and fetch tools ChatGPT expects.
Search associations
searchSearch the Common Elements directory of US community associations (HOAs, condos, co-ops) by name or city. Returns up to 10 matches, each with an id for fetch. Works on every plan; free access returns up to 5 matches.
Fetch association
fetchFetch one Common Elements association by the id returned from search: type, location, unit count, registration status, registry document number, and (on a Data plan) management company. Works on every plan.
Match association by name
match_associationFind the best-matching HOA or condo association for a name within a state (and optional county), tolerant of wording differences such as "Assn" vs "Association". Use when you have a name and need the canonical record and id; then call get_association with the id. ... Free access returns public-record basics for up to 5 matches.
Search associations
search_associationsBrowse the HOA/condo association directory by name fragment or city, state, and type, 20 per page. For a name worded differently from the registry, use match_association instead. ... Free access returns public-record basics for up to 5 rows per page.
Get association
get_associationGet one association by its Common Elements id (from search_associations or match_association): type, location, units, registration status, and document number; on a Data plan also address, contact, and management firm. ...
Get association risk profile
get_association_riskNatural-hazard risk for one association by id, from the FEMA National Risk Index (county level): composite risk, expected annual loss, and social vulnerability ratings. Shows an interactive scorecard where supported. ...
Find associations near a point
find_associations_nearFind HOA/condo associations near a latitude/longitude, nearest first, with an interactive map where supported. Geocode an address first if you only have a street address. ...
Get association officers
get_association_officersList the board members and officers on public record for an association, by id: title, name, and source. No personal contact details. ...
Get association management
get_association_managementGet the management company on file for an association, by id: the best manager (lowest priority value) plus every public-record source that names one (state condo and HOA filings, management certificates, licensing records, registered agents), each with its provenance and an inferred flag, and any management relationship confirmed on the platform. ...
Verify a professional license
verify_licenseVerify a community association manager (CAM) or other professional license in a state, by license number or licensee name. Returns status and an is_expired flag, since a 'current' status can be past its expiry date. ...
Scan text for compliance issues
scan_complianceCheck governing-document or policy text against a state's community association statutes and return potential issues with a coverage score, shown as a scorecard where supported. Read-only analysis; nothing is stored. Not legal advice. ...
Search association statutes
search_statutesFull-text search of US community association statutes (HOA and condo law), optionally in one state. Returns matching sections with citations; call get_statute_section with a section_id for the full text. ...
Get statute section
get_statute_sectionGet the full text and citation of one statute section by its section_id (from search_statutes or list_statutes_by_state). ...
Search vendors
search_vendorsSearch vendors that serve community associations (roofing, painting, landscaping, pool service, engineering, legal, and more) by keyword, state, and category slug. Returns name, location, categories, and review summary; call get_vendor with an id for the profile. ...
Get vendor
get_vendorGet a vendor's public profile by id (from search_vendors): location, service categories, vendor-reported certifications and insurance, service offerings, review summary, and a verified-credentials profile from public records. No private contact data. ...
Search licensed professionals
search_professionalsSearch state licensing-board records for community association managers, contractors, engineers, and other licensed professionals and firms, by name, state, license type (e.g. 'CAM'), board, or status. Returns license number, status, expiry, and an is_expired flag. Give at least one of query, state, license_type, or board; call get_professional with an id for the full record. ...
Get professional
get_professionalGet one professional's or firm's license record by id (from search_professionals): board, license number, status, issue and expiry dates, location, is_expired, and any linked Common Elements organization. No private contact data. ...
List a manager's associations
list_manager_associationsList the community associations a professional or management firm is on record managing or serving, by the professional's id (from search_professionals). Merges confirmed management relationships with the public registry; each row names its source. ...
List an association's vendors
list_association_vendorsList the vendors an association is on record working with, by association id: each vendor's public profile plus relationship type, status, and contract window. No private contact data. ...
Get vendor reviews
get_vendor_reviewsList a vendor's published reviews by vendor id (from search_vendors), newest first. Each review is tied to a completed RFP: rating (1-5), text, and date. Reviewer identity is not shown. ...
List statutes by state
list_statutes_by_stateBrowse a state's community association statute sections (HOA and condo law) with citations, optionally one chapter or tagged topic. Use search_statutes for full-text search; call get_statute_section with a section_id for the text. ...
Get state industry summary
get_state_summaryPer-state totals for the Common Elements dataset: association counts by state and type, plus licensed insurance entity counts. Aggregates only. Omit state for every state, largest first. ...
Get association building safety
get_association_building_safetyPublic-record building-safety profile for an association by id: SIRS filings, milestone / 40-50 year recertifications, elevator certificates, pool inspections, recorded building characteristics, and HUD FHA condo approval. Coverage varies by county; check has_data and layer_counts before treating an absent record as compliance. Reference only, not a structural determination. ...
Search association changes
search_changesSearch observed changes across community associations: board turnover, president changes, officer additions and removals, management-company moves, self-managed transitions, and registration or license status changes. Use it to find associations that just changed hands or boards. Filter by kind, state, county, type, date window, and unit count. Officer changes are counts and titles only, never person identity. Lookback and row cap grow with the plan. Call get_changes_summary first to size a query. ...
Get change-feed summary
get_changes_summaryCounts of observed changes by kind over your plan's lookback window (board turnovers, president changes, management moves), with how many associations and states they touch. Aggregates only; use before search_changes to size a query. ...
Account read tools (17)Read your own organizations, RFPs, messages, forum threads, and notifications.
Who am I
whoamiReturn the signed-in Common Elements user: name, active organization, and organization memberships (none is fine; an organization is optional). Call this first to ground account actions. Free on every plan; needs account access.
List my organizations
list_my_orgsList the organizations the signed-in user belongs to, with role and title. Use the ids as posting_org_id for create_rfp or vendor_org_id for create_proposal_draft. Free on every plan; needs account access.
Get active organization
get_active_contextReturn the organization the user is currently acting as, and the membership behind it. Null on a personal account. Free on every plan; needs account access.
List my organization relationships
list_relationshipsList confirmed relationships between the user's organizations and others (management, legal, insurance, vendor). Optionally one organization id. Free on every plan; needs account access.
List relationship invitations
list_relationship_invitationsList organization-relationship invitations: 'incoming' (sent to you), 'outgoing' (sent by your organizations), or all. Free on every plan; needs account access.
Get my profile
get_my_profileReturn the signed-in user's profile: name, bio, phone, and headline. Free on every plan; needs account access.
Get notification preferences
get_notification_prefsReturn the signed-in user's notification toggles by event type and channel. Free on every plan; needs account access.
List my notifications
list_notificationsList the signed-in user's in-app notifications, newest first; unread_only for just the unread ones. Free on every plan; needs account access.
List forum threads
list_forum_threadsList Common Area forum threads you can see, most recent activity first, optionally in one category. Free on every plan; needs forum access.
Get forum thread
get_forum_threadReturn one forum thread and its comments, oldest first, by thread id. Free on every plan; needs forum access.
List RFP categories
list_rfp_categoriesList the active service categories (slug and name) an RFP can be posted under. Call before create_rfp or update_rfp: primary_category_slug must be one of these slugs. Free on every plan; needs RFP access (read or write).
List my RFPs
list_my_rfpsList the RFPs you posted (drafts included), newest first, optionally by status (draft, published, closed, canceled). Free on every plan; needs RFP access.
Get RFP
get_rfpReturn one RFP by id with its bid fields and a count of proposals. Free on every plan; needs RFP access.
List proposals on an RFP
list_rfp_proposalsList the proposals on one of your RFPs, by RFP id. Only the posting organization sees submitted bids. Free on every plan; needs RFP access.
List my proposals
list_my_proposalsList the proposals you drafted or submitted for your vendor organizations, optionally by status. Free on every plan; needs RFP access.
List my conversations
list_conversationsList the user's message threads, most recent first, with the last-message preview. Free on every plan; needs messages access.
Get conversation
get_conversationReturn the messages in one conversation, oldest first, by thread id. Free on every plan; needs messages access.
Account action tools (23)Act on your own account with a write scope you grant. High-impact actions preview first and need a second, confirmed call.
Set active organization
set_active_contextChange which of your organizations is active. Subsequent posts, RFPs, and messages act as this org. Reversible.
Create a forum thread
create_forum_threadStart a new thread in the Common Area forum as your active organization. Posts publicly to other members. Requires confirmation: the first call returns a preview and a confirmation_token; call again with that token to publish.
Reply to a forum thread
reply_to_forum_threadPost a reply on a forum thread as your active organization, optionally to a parent comment. Publishes publicly. Requires confirmation (preview then token).
Create an RFP draft
create_rfpCreate a DRAFT request for proposals for an association or management company you can act for. Drafts are private: nothing is published or sent to vendors until publish_rfp. Call list_rfp_categories first: primary_category_slug must be one of its slugs. posting_org_id comes from list_my_orgs and defaults to the connection's organization; an individual with no organization cannot post RFPs. Free on every plan; needs RFP write access.
Submit a proposal
submit_proposalSubmit a proposal you have already drafted in the app. Drafting from scratch is not available here. Requires confirmation (preview then token).
Award or close an RFP
award_rfpAward an RFP to a proposal, or close it without an award. High impact and notifies bidders. Requires confirmation (preview then token).
Start a conversation
start_conversationFind or create a direct-message thread with another user, optionally scoped to an org. Does not send a message. Reversible.
Send a message
send_messageSend a message into an existing conversation as your active organization. Delivered to the other participants. Requires confirmation (preview then token).
Invite an organization into a relationship
invite_relationshipInvite another organization into a relationship (e.g. management, vendor). You must be an admin of the proposing org. Requires confirmation (preview then token).
Accept a relationship invitation
accept_relationship_invitationAccept a pending relationship invitation on behalf of one of your orgs. Requires confirmation (preview then token).
Decline a relationship invitation
decline_relationship_invitationDecline a pending relationship invitation. Reversible (the inviter can re-send).
Update your profile
update_my_profileUpdate limited profile text fields (name, bio, headline, phone). No avatar, cover, or credentials. Requires confirmation (preview then token).
Update notification preferences
update_notification_prefsToggle your notification preferences. Reversible. Pass a partial object of preference keys to set.
Mark a notification read
mark_notification_readMark one in-app notification as read. Reversible.
Mark all notifications read
mark_all_notifications_readMark all of your in-app notifications as read. Reversible.
Edit an RFP draft
update_rfpEdit a DRAFT RFP you can act for: title, scope, category, visibility, deadline, or private budget. Only drafts can be edited; get the id from create_rfp or list_my_rfps, and category slugs from list_rfp_categories. Free on every plan; needs RFP write access.
Publish an RFP
publish_rfpPublish a DRAFT RFP so vendors can see and bid on it. Vendors with matching saved searches (and invited vendors on invitation-only RFPs) are notified, so this needs confirmation: the first call returns a preview and a confirmation_token; call again with the token to publish. Free on every plan; needs RFP write access.
Cancel an RFP
cancel_rfpCancel an RFP you can act for, draft or published. Bidders can no longer submit, and it cannot be reopened here. Needs confirmation: the first call returns a preview and a confirmation_token; call again with the token to cancel. To pick a winner instead, use award_rfp. Free on every plan; needs RFP write access.
Start a proposal draft
create_proposal_draftStart a DRAFT proposal on an RFP as your vendor company. Drafts are private to your company until submit_proposal. Bids are made by a company: vendor_org_id comes from list_my_orgs and defaults to the connection's organization; an individual with no company cannot bid. Get the RFP's bid fields from get_rfp to fill line_items. Free on every plan; needs RFP write access.
Edit a proposal draft
update_proposalEdit one of your DRAFT proposals: price, timeline, cover note, or bid-field answers. Passing line_items replaces all answers. Submitted proposals cannot be edited; withdraw_proposal instead. Free on every plan; needs RFP write access.
Withdraw a proposal
withdraw_proposalWithdraw a SUBMITTED proposal your company made. The association sees it as withdrawn and it cannot be resubmitted here. Needs confirmation: the first call returns a preview and a confirmation_token; call again with the token to withdraw. Free on every plan; needs RFP write access.
Follow an association
follow_associationFollow an association (id from search_associations or match_association) to get its updates in your Common Elements feed. Works on a personal account; safe to repeat. Free on every plan; needs account write access.
Unfollow an association
unfollow_associationStop following an association. Safe to repeat. Free on every plan; needs account write access.
Troubleshooting
- The client says it is not authorized, or asks me to sign in again
- Sign in again from the client. Clients that support refresh tokens renew their session on their own; a session also ends when you disconnect the app under Connected apps, revoke its key under API keys, or leave the organization you connected as.
- Association directory results are missing
- The association directory and risk data need a paid plan for the account you connected as. After upgrading, disconnect and connect again so the new plan applies to the connection.
- It connected as the wrong organization
- Disconnect the app under Settings, Connected apps, then connect again and pick the organization or your personal plan on the consent screen.
- The sign-in page says the redirect is not valid
- The client sent a callback address it did not register. Remove the server from the client, add it again, and retry. Local clients may use any port on localhost.
- Requests fail with a rate limit error
- The monthly data allowance for your plan is used up. Usage is under Settings, API keys, usage. Account tools also have short per-minute limits on writes.
- My network blocks the connection
- Allow HTTPS to commonelements.com. The server and its sign-in pages are all on that domain.
Manage connections under Connected apps.
What changed, and when
Updates to the MCP server are posted here going forward, newest first.
One page to connect, and sessions that renew themselves
This page now carries install steps for Claude, ChatGPT, Claude Code, Codex, Cursor, and VS Code, with one-click install links where the client supports them.
Clients that ask for offline access now receive a short-lived access token and a refresh token, so a session renews itself instead of relying on a key that never expires. Existing connections keep working unchanged. Clients can also identify themselves with a client ID metadata document, and every token is bound to this server.
65 tools are registered today: 25 data tools (including search and fetch), 17 account read tools, and 23 account action tools. The full list below is generated from the server code.
Where this changelog starts
This is the first entry. The MCP server has been live for a while; this page did not yet have a changelog to match, so this entry is a snapshot of what is live today rather than a history of past releases. Updates from here forward are posted as new entries above this one.
53 tools are registered on the hosted server. 20 are the public data tools listed above (association lookup, search and matching, risk, compliance scans, board and management lookups, the vendor directory, the professional and licensing graph, statutes, and state summaries), shared with the Developer API tiers. 2 are the ChatGPT-standard search and fetch connector tools. 16 are account-read tools (orgs and active context, relationships and invitations, your profile and notification preferences, notifications, forum threads, RFPs and proposals, conversations). 15 are account-action tools, available once you connect an account over OAuth and grant the matching write scope: posting and replying in the Common Area, sending messages, creating and acting on RFPs and proposals, managing relationships, and updating your own profile and notification preferences. Every account-action tool still enforces RLS under the hood and the high-impact ones require a preview-and-confirm step before anything is written.
Common questions
- What is the Common Elements MCP server?
- It is a Model Context Protocol server that connects an AI assistant such as Claude, ChatGPT, or Cursor to Common Elements. It exposes data tools that read the community association dataset and, in phases, account tools that let you operate your own Common Elements account from inside your assistant.
- How much does it cost?
- Data access shares the Developer API plans: the same freemium-to-paid tiers, the same API key, and the same monthly quota. Account access is free, because it is just you using your own Common Elements account through another client rather than the website.
- Which clients does it work with?
- Any MCP-compatible host. Claude, ChatGPT, Claude Code, Codex, Cursor, and VS Code all connect to the hosted endpoint and sign you in over OAuth: no API key to copy. A client that cannot sign in can send a Developer API key as a bearer token instead. Account tools run with RLS enforcing every permission either way.
- Can an assistant act on my account without my approval?
- No. Account write access is opt-in per OAuth scope, read-only is the default, and high-impact actions require a preview-and-confirm step before anything is written. Destructive actions like account deletion and billing are never exposed through MCP at all.
- What data can it read?
- 25 data tools are live: association lookup, search, matching, and proximity search, association risk, governing-document compliance scans, board officer and management-company lookups, the vendor directory and reviews, the licensed-professional graph, statute search and individual sections, and state coverage summaries, plus the search and fetch tools ChatGPT uses.
- Does it show anything other than text?
- Three data tools also ship an interactive widget: proximity search renders a map and list, the compliance scan renders a scorecard with a grade and findings, and association risk renders a flood-risk scorecard. Hosts that support MCP Apps render the widget inline; every other MCP host still gets the same data as structured text.
- Do I need an organization or a paid plan to connect?
- No. Anyone with a Common Elements account can connect as themselves and use the account tools plus a small monthly data allowance. A paid plan, personal or through an organization, adds the association directory and a larger allowance. FEMA risk and building-safety data start at the Growth plan.
- How do I disconnect an assistant?
- Open Settings, then Connected apps, and disconnect it. That revokes its access token and its refresh token immediately.
Bring Common Elements into your assistant
Connect your assistant and sign in. It is free to start, and a paid plan adds the association directory.