You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
File locations: .mcp.json in your project root (Claude Code), claude_desktop_config.json (Claude Desktop), .cursor/mcp.json (Cursor).
Configuration
The server talks to two AppFolio APIs, each with its own credentials. Configure one set or both: each API's tools only need their own variables, and the other API's tools return an error at call time if their variables are unset.
Variable
Required
Default
Purpose
APPFOLIO_VHOST
for Reports API tools
Your AppFolio database name, the subdomain in {vhost}.appfolio.com
APPFOLIO_CLIENT_ID
for Reports API tools
Reports API Client ID (Account Settings > Manage API Settings > Reports API Credentials)
APPFOLIO_CLIENT_SECRET
for Reports API tools
Reports API Client Secret
APPFOLIO_DB_DEVELOPER_ID
for Database API tools
Your AppFolio Developer ID (Admin > Developer ID)
APPFOLIO_DB_CLIENT_ID
for Database API tools
Database API Basic Auth Client ID (API Credentials > Basic Auth)
APPFOLIO_DB_CLIENT_SECRET
for Database API tools
Database API Basic Auth Client Secret
Security & write safety
AppFolio credentials: create dedicated API credentials for this server. Reports API credentials come from Account Settings > Manage API Settings > Reports API Credentials; Database API credentials are a Developer ID plus Basic Auth Client ID and Secret from API Credentials > Basic Auth.
The Reports API tools (list_reports, describe_report, run_report) are read-only: reports return data and never modify anything.
The Database API tool call_endpoint executes reads and writes. Of the 156 endpoints, 58 are GET reads and 98 are write operations (55 POST, 33 PATCH, 4 PUT, 6 DELETE) that execute live against your AppFolio database. There is no environment write gate in this version.
For a read-only posture, configure only the Reports API variables: without APPFOLIO_DB_* credentials, every call_endpoint request fails before reaching AppFolio.
Every request is validated against the local catalog first (known operation, required path params, required report filters), and the client enforces AppFolio's documented rate limits (7 requests per 15 seconds on the Reports API, all three Database API windows).
All requests go directly from your machine to {vhost}.appfolio.com and api.appfolio.com; nothing passes through third parties.
Important
The tool surface is a guardrail, not a security boundary. The env vars in your MCP config are real AppFolio credentials, and an AI agent with shell access can bypass the MCP tools and call the AppFolio API directly with them. If you need hard read-only, enforce it at the source: scope the API credentials themselves, or only issue the read-oriented Reports API credentials and leave the Database API credentials out of the config.
Tools
Both APIs are catalog-backed: instead of one MCP tool per report or endpoint, each API exposes a list/describe/call triple built on mcp-core. list_* discovers what exists (137 reports, 156 endpoints), describe_* returns the full parameter spec for one entry from a local catalog, and the execute tool (run_report / call_endpoint) validates the request against that spec before calling AppFolio. Six tools cover 293 operations without flooding your client's tool list.
list_reports List the 137 AppFolio reports (slug, name, category, required filters)
describe_report Full parameter spec for one report: filters, types, enums, response columns
run_report Run a report and return its rows, auto-paginated
list_endpoints List the 156 Database API endpoints (operationId, method, path, category)
describe_endpoint Full spec for one endpoint: path params, filters, body schema, response fields
call_endpoint Call a Database API endpoint after validating it against the catalog
API coverage
293 operations covered: 137 reports (Reports API v2) and 156 endpoints (Database API v0).
Category
Operations
Reports: Association / HOA
16
Reports: Financial
34
Reports: Leasing
16
Reports: Maintenance & Workflow
12
Reports: Other
2
Reports: Owner
6
Reports: Property & Unit
19
Reports: Registers & Transactions
9
Reports: Rent Roll
5
Reports: Tenant
13
Reports: Vendor
5
Database API: Accounting
30
Database API: Community Associations
12
Database API: Corporate Accounting
2
Database API: Custom Fields
1
Database API: Leasing
20
Database API: Maintenance
29
Database API: People
21
Database API: Properties
40
Database API: System
1
Reports: Association / HOA (16 reports)
Report
ID
Board of Directors
board_of_directors
Dues Roll
dues_roll
Dues Roll (Itemized)
dues_roll_itemized
Eligible Debt Summary
eligible_debt_summary
Fund Balance Sheet
fund_balance_sheet
Fund Balance Sheet - Active Funds
fund_balance_sheet_active_funds
Fund Income Statement
fund_income_statement
Homeowner Delinquency
homeowner_delinquency
Homeowner Delinquency (As Of)
homeowner_delinquency_as_of
Homeowner Directory
homeowner_directory
Homeowner Ledger
homeowner_ledger
Homeowner Prepayment Balance
homeowner_prepayment_balance
Homeowner Resale
homeowner_resale
Homeowner Vehicle Info
homeowner_vehicle_info
Insurance Enforcement
insurance_enforcement
Violation Detail
violation_detail
Reports: Financial (34 reports)
Report
ID
Account Totals
account_totals
Additional Fees
additional_fees
Aged Payables Summary
aged_payables_summary
Aged Receivable Detail
aged_receivables_detail
Annual Budget - Comparative
annual_budget_comparative
Annual Budget - Forecast
annual_budget_forecast
Balance Sheet
balance_sheet
Balance Sheet - Comparative
balance_sheet_comparative
Balance Sheet - Property Comparison
balance_sheet_comparison
Bank Account Association
bank_account_association
Budget - Comparative
budget_comparative
Budget - Property Comparison
budget_comparison
Cash Flow
cash_flow
Cash Flow - Property Comparison
cash_flow_comparison
Cash Flow Detail
cash_flow_detail
Chart of Accounts
chart_of_accounts
Email Delivery Errors
email_delivery_errors
Expense Distribution
expense_distribution
Fixed Assets
fixed_assets
General Ledger
general_ledger
Import Variances
import_variances
Income Statement
income_statement
Income Statement - Comparative
income_statement_comparative
Income Statement - Property Comparison
income_statement_comparison
Income Statement (Date Range)
income_statement_date_range
Insurance Usage
insurance_usage
Late Fee Policy Comparison
late_fee_policy_comparison
Loans
loans
Trial Balance
trial_balance
Trial Balance by Property
trial_balance_by_property
Trust Account Balance
trust_account_balance
Trust Account Detail
trust_account_balance_detail
Cash Flow - 12 Month
twelve_month_cash_flow
Income Statement - 12 Month
twelve_month_income_statement
Reports: Leasing (16 reports)
Report
ID
Guest Card Inquiries
guest_card_inquiries
Guest Card Interests
guest_cards
Historical Advertised Rent
historical_advertised_rent
Inactive Guest Card Interests
inactive_guest_cards
Lease Expiration Detail By Month
lease_expiration_detail
Lease Expiration Summary By Month
lease_expiration_summary
Lease History
lease_history
Leasing Agent Performance
leasing_agent_performance
Leasing Funnel Performance
leasing_funnel_performance
Leasing Summary
leasing_summary
Prospect Source Tracking
prospect_source_tracking
Renewal Summary
renewal_summary
Rental Applications
rental_applications
Screening Assessments
screening_assessments
Screening Usage
screening_usage
Showings
showings
Reports: Maintenance & Workflow (12 reports)
Report
ID
Association Work Order
association_work_order
Cancelled Workflows
cancelled_processes
Completed Workflows
completed_processes
Realm-X Flows Assigned Tasks
flows_assigned_tasks
In-Progress Workflows
in_progress_workflows
Inspection Detail
inspection_detail
Project Budget Detail
project_budget_detail
Project Directory
project_directory
Unit Inspection
unit_inspection
Activities Summary
upcoming_activities
Work Order
work_order
Work Order Labor Summary
work_order_labor_summary
Reports: Other (2 reports)
Report
ID
Receivables Activity
receivables_activity
Survey Responses
surveys_summary
Reports: Owner (6 reports)
Report
ID
Owner Custom Fields
owner_custom_fields
Owner Directory
owner_directory
Owner Leasing
owner_leasing
Owner Withholdings
owner_withholdings
Owner 1099 Summary
owner1099
Owner 1099 Detail
owner1099_detail
Reports: Property & Unit (19 reports)
Report
ID
Amenities By Property
amenities_by_property
AppFolio Stack™ Usage
appfolio_stack_usage
Inventory Status
inventory_status
Inventory Usage
inventory_usage
Keys Detail
keys_detail
Occupancy Custom Fields
occupancy_custom_fields
Occupancy Summary
occupancy_summary
Premium Listing Billing Detail
premium_leads_billing_detail
Property Budget
property_budget
Property Custom Fields
property_custom_fields
Property Directory
property_directory
Property Group Directory
property_group_directory
Property Performance
property_performance
Property Staff Assignments
property_staff_assignments
Rentable Items
rentable_items
Unit Custom Fields
unit_custom_fields
Unit Directory
unit_directory
Unit Turn Detail
unit_turn_detail
Unit Vacancy Detail
unit_vacancy
Reports: Registers & Transactions (9 reports)
Report
ID
Bill Detail
bill_detail
Charge Detail
charge_detail
Check Register
check_register
Check Register Detail (Enhanced)
check_register_detail
Deposit Register
deposit_register
Expense Register
expense_register
Income Register
income_register
Payment Plans
payment_plans
Purchase Order
purchase_order
Reports: Rent Roll (5 reports)
Report
ID
Gross Potential Rent
gross_potential_rent_enhanced
Rent Roll
rent_roll
Rent Roll (Commercial)
rent_roll_commercial
Rent Roll (Itemized)
rent_roll_itemized
Rent Roll (By Bed)
student_housing_rent_roll_by_bed
Reports: Tenant (13 reports)
Report
ID
Delinquency
delinquency
Delinquency (As Of)
delinquency_as_of
Renter Directory
renter_directory
Resident Financial Activity
resident_financial_activity
Security Deposit Funds Detail
security_deposit_funds_detail
Debt Collections Status
tenant_debt_collections_status
Tenant Directory
tenant_directory
Tenant Ledger
tenant_ledger
Tenant Tickler
tenant_tickler
Tenant Transactions Summary
tenant_transactions_summary
Tenant Unpaid Charges Summary
tenant_unpaid_charges_summary
Tenant Vehicle Info
tenant_vehicle_info
Unpaid Balances by Month
unpaid_balances_by_month
Reports: Vendor (5 reports)
Report
ID
Vendor Custom Fields
vendor_custom_fields
Vendor Directory
vendor_directory
Vendor Ledger
vendor_ledger
Vendor Ledger (Enhanced)
vendor_ledger_enhanced
Vendor 1099 Summary
vendor1099
Database API: Accounting (30 endpoints)
Method
Path
Operation ID
GET
/bank_accounts
get_bank_accounts
POST
/bank_accounts/bulk
post_bank_accounts_bulk
GET
/bills
get_bills
POST
/bills
post_bills
PATCH
/bills/{billId}
patch_bills_billid
POST
/bills/{BillId}/attachments
post_bills_billid_attachments
POST
/bills/bulk
post_bills_bulk
POST
/bills/bulk/async
post_bills_bulk_async
GET
/charges
get_charges
POST
/charges
post_charges
POST
/charges/{ChargeId}/attachments
post_charges_chargeid_attachments
POST
/charges/bulk
post_charges_bulk
POST
/charges/bulk/async
post_charges_bulk_async
GET
/delinquent_charges
get_delinquent_charges
GET
/gl_accounts
get_gl_accounts
POST
/gl_accounts/bulk
post_gl_accounts_bulk
GET
/gl_details
get_gl_details
GET
/journal_entries
get_journal_entries
POST
/journal_entries
post_journal_entries
PATCH
/journal_entries/{JournalEntryId}
patch_journal_entries_journalentryid
POST
/journal_entries/{JournalEntryId}/attachments
post_journal_entries_journalentryid_attachments
POST
/journal_entries/bulk
post_journal_entries_bulk
GET
/late_fee_policies
get_late_fee_policies
POST
/late_fee_policies/bulk
post_late_fee_policies_bulk
GET
/payables
get_payables
GET
/recurring_charges
get_recurring_charges
POST
/recurring_charges
post_recurring_charges
PATCH
/recurring_charges/{recurringChargeId}
patch_recurring_charges_recurringchargeid
POST
/recurring_charges/bulk
post_recurring_charges_bulk
GET
/tenant_ledgers
get_tenant_ledgers
Database API: Community Associations (12 endpoints)
Contributions and issues are welcome. Please open an issue first before submitting a PR.
License
AGPL-3.0: free for personal and open-source use. Organizations that cannot comply with the AGPL can purchase a commercial license, and hosted/managed versions are available. See COMMERCIAL.md or contact hello@nightsquawk.tech.