cincsystems-mcp

cincsystems-mcp

Exposes the CINC Systems HOA management REST API as MCP tools, enabling natural language queries and actions for ACC requests, aged balances, vendor records, call logs, documents, and more.

Category
访问服务器

README

cincsystems-mcp

First MCP server for the CINC Systems (HOA / community association management) REST API. 50K+ communities, 6M+ doors, $11B+ annual payments processed.

CINC Systems is the leading US community-association-management (CAM / HOA / condo) platform. Management companies use it to run the back-office accounting, board packets, ACC (Architectural Control Committee) workflow, homeowner communications, vendor management, and aged-balance collections for the HOAs, condominiums, lifestyle communities, and high-rises they manage.

cincsystems-mcp exposes the CINC Systems V1 REST API as 13 MCP tools so Claude / Cursor / any MCP client can read and (for ACC and vendors) write to your CINC account in plain English.

What this unlocks

  • ACC triage: "Show me every pending ACC request in HOA 42, sorted by submission date."
  • Aged balances report: "Who's 90+ days past due across all our HOAs?"
  • Collections escalation: "Pull the flagged-collections list for HOA 88 and draft a referral-to-attorney email for the top 3."
  • Board packet drafting: "What charges were posted in HOA 142 last quarter?"
  • Document lookup: "Where are the CC&Rs for Cypress Run?"
  • Vendor tracking: "List every vendor whose insurance is on file in HOA 42."
  • Call log audit: "Show me this week's call log for HOA 42."

Quick start

pip install -e .

export CINC_SYSTEMS_API_KEY=<opaque-token>
export CINC_SYSTEMS_MGMT_ID=<integer>
export CINC_SYSTEMS_BASE_URL=https://<your-subdomain>.cincsys.com

cinc_systems_mcp

Or run it via mcp directly:

mcp run src/cinc_systems_mcp/server.py

Auth

CINC Systems V1 is per-tenant. Each management company has its own subdomain and its own mgmt_id integer. You need three values:

Env var What it is Where to get it
CINC_SYSTEMS_API_KEY Opaque API key (NOT Bearer-prefixed) CINC UI -> Account -> API Settings
CINC_SYSTEMS_MGMT_ID Per-tenant integer (e.g. 1234) CINC UI -> top-right menu -> API Settings
CINC_SYSTEMS_BASE_URL Per-tenant base URL (e.g. https://acme.cincsys.com) The URL you log in to

The V1 API uses a plain Authorization: <api_key> header. CINC's V1 server rejects Bearer -prefixed tokens; this client uses the opaque-token form.

Tools

13 tools total. All read the CINC account scoped to your mgmt_id.

Diagnostic

  • health_check — verify the API key, mgmt_id, and base URL are all valid

Associations

  • list_associations(assoc_code=None) — list all HOAs/condos you manage
  • get_association(assoc_code) — get one HOA by its code

Homeowners

  • list_homeowners(assoc_code=None, last_name=None) — list homeowners
  • get_homeowner(homeowner_id) — get one homeowner by ID

ACC (Architectural Control Committee)

  • list_acc(assoc_code=None, status=None) — list architectural review requests
  • create_acc(body) — log a new ACC request (e.g. paint, fence, addition)

Vendors

  • list_vendors(assoc_code=None) — list contractors you use
  • update_vendor(vendor_id, body) — update vendor record (insurance, contact)

Aged Balances

  • list_aged_balances(assoc_code=None) — delinquent accounts by 30/60/90+ day buckets

Call Logs

  • list_call_logs(assoc_code=None, days=None) — inbound/outbound HOA calls

Documents

  • list_documents(assoc_code=None, doc_type=None) — CC&Rs, bylaws, minutes, contracts

Flagged Collections

  • list_flagged_collections(assoc_code=None) — accounts escalated to attorney

Post Charges

  • list_post_charges(assoc_code=None, since=None) — recently posted assessments/fines/fees

Real workflow examples

Q: "Who in HOA 42 is 90+ days past due?"

Use list_aged_balances(assoc_code="HOA042") to pull the aging report.
The response is a list of records broken into 30/60/90+ day buckets.
Surface the 90+ bucket and the homeowner IDs in it.

Q: "What architectural requests came in this week?"

Call list_acc(assoc_code=None, status="pending") and filter to the
last 7 days on the assistant side. Each record has assocCode,
homeownerId, description, requestType, and submission timestamp.

Q: "Log a paint request for homeowner 9876 in HOA 42."

Call create_acc(body={
  "assocCode": "HOA042",
  "homeownerId": "9876",
  "description": "Repaint front door navy blue",
  "requestType": "paint"
}). The response is the new ACC record.

Architecture

Built on industry-leading Python patterns (see ~/.mavis/agents/mavis/memory/engineering-playbook.md):

  • Shared httpx.AsyncClient with connection pooling and transport-level retries for transient network failures.
  • Typed exception hierarchy — CincSystemsAuthError / NotFoundError / RateLimitError / APIError / ConnectionError with structured fields (http_status, error_code, request_id, retry_after).
  • Application-level retry with exponential backoff + full jitter on 429 and 5xx, honoring the Retry-After header.
  • Dispatch table for HTTP status -> exception (one row per status, no chained if/raise).
  • isError-compliance — every tool raises on failure so FastMCP sets isError=true on the wire response (the Blackwell Systems MCP audit found 9 of 25 default-input crashes + 11 silent-error patterns in popular MCPs; we don't repeat that mistake).
  • JSONL audit logging — every tool call writes a structured record to stderr (or a file via CINC_SYSTEMS_AUDIT_LOG) with secret redaction.
  • respx + hypothesis tests — 25+ tests, ruff + mypy --strict clean.

Testing

pip install -e ".[dev]"
pytest          # 25+ tests, no live API
ruff check src tests
ruff format --check src tests
mypy src

License

MIT.

Related MCPs

Other first-party MCPs in this series:

  • sanjibani/hawksoft-mcp — insurance
  • sanjibani/open-dental-mcp — dental
  • sanjibani/ezyvet-mcp — veterinary
  • sanjibani/jobber-mcp — home service
  • sanjibani/practicepanther-mcp — legal practice
  • sanjibani/cox-automotive-mcp — auto dealership
  • sanjibani/qualia-mcp — title and escrow
  • sanjibani/realm-mp-mcp — church / nonprofit
  • sanjibani/fieldroutes-mcp — pest control / lawn care
  • sanjibani/campspot-mcp — outdoor hospitality
  • sanjibani/cleancloud-mcp — laundry / dry cleaning
  • sanjibani/playmetrics-mcp — youth sports
  • sanjibani/foreup-mcp — golf course management
  • sanjibani/storedge-mcp — self-storage
  • sanjibani/courtreserve-mcp — racquet sports
  • sanjibani/procare-mcp — child care
  • sanjibani/passare-mcp — deathcare / funeral
  • sanjibani/funraise-mcp — nonprofit fundraising
  • sanjibani/kicksite-mcp — martial arts
  • sanjibani/singleops-mcp — green industry

Browse the full list at https://github.com/sanjibani?q=-mcp.

For custom MCP engagements, see https://sanjibani.github.io/mcp-services/.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选