rocketmatter-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROCKETMATTER_API_KEY | No | Your Rocketmatter API key (overrides stored credentials) | |
| ROCKETMATTER_MCP_USE_KEYRING | No | Set to '0' to disable keyring and use file-based credential storage |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_mattersA | List matters, paginated. Optional server-side filters: client_id (GUID) and matter_name — these are the only filters the /v1 API honors for matters. |
| get_matterA | Get a matter by ID (GUID). |
| create_matterA | Create a matter. fields_json: JSON object with matter fields. Required: clientId. Optional: billingMethod, dateOpened, matterOwnerId, areaOfLawId, matterName, matterFileNumber, notes, matterTypeId. |
| update_matterC | Update a matter by ID (GUID). fields_json: JSON object with fields to update. |
| delete_matterC | Delete a matter by ID (GUID). |
| list_clientsA | List clients, paginated. Optional server-side filters: name and display_name — these are the only filters the /v1 API honors for clients. |
| get_clientA | Get a client by ID (GUID). |
| create_clientC | Create a client. fields_json: JSON object. Required: name. Optional: displayName, contactSalutation, contactTitle, entityName, address1, clientAsEntity, email, secondaryEmail, cellPhoneNumber. |
| update_clientB | Update a client by ID (GUID). fields_json: JSON object with fields to update. |
| delete_clientA | Delete a client by ID (GUID). |
| list_contactsC | List contacts with pagination. |
| get_contactA | Get a contact by ID (GUID). |
| create_contactC | Create a contact. fields_json: JSON object with contact fields. |
| update_contactC | Update a contact by ID (GUID). |
| delete_contactB | Delete a contact by ID (GUID). |
| list_time_entriesA | List time entries, paginated. Optional matter_id (GUID) filter — the only server-side filter the /v1 API honors for time entries. |
| get_time_entryB | Get a time entry by ID (GUID). |
| create_time_entryB | Create a time entry. fields_json: JSON object. Required: matterId. |
| update_time_entryC | Update a time entry by ID (GUID). |
| delete_time_entryA | Delete a time entry by ID (GUID). |
| list_expensesA | List expense cards, paginated (firm-wide). The /v1 API honors no server-side filter on expenses — not even matter_id — so none is offered. |
| get_expenseB | Get an expense card by ID (GUID). |
| create_expenseC | Create an expense card. fields_json: JSON object. Required: matterId. |
| update_expenseC | Update an expense card by ID (GUID). |
| delete_expenseB | Delete an expense card by ID (GUID). |
| list_invoicesC | List invoices with pagination. |
| get_invoiceA | Get an invoice by ID (GUID). |
| generate_invoiceA | [Not in LCS /v1] Generate an invoice via the legacy two-step billable-items + challenge-token flow. That flow was /api/v2-only and fails loudly here. Use create_invoice with the /v1 invoice body instead. |
| list_billable_itemsB | [Not in LCS /v1] Preview a matter's unbilled billable items with challenge tokens (the /api/v2 billing flow). Fails loudly. |
| create_invoiceC | Create an invoice via POST /v1/invoices. fields_json: JSON object with the invoice body. The API's 400 validation names any missing required fields. |
| update_invoiceC | Update an invoice by ID (GUID). |
| delete_invoiceB | Delete an invoice by ID (GUID). |
| approve_invoiceB | [Not in LCS /v1] Approve a draft invoice for posting. Not exposed by /v1; fails loudly. |
| list_paymentsC | List invoice payments with pagination. |
| create_paymentC | Create an invoice payment and allocate to invoices/trust. |
| get_invoice_allocationsC | [Not in LCS /v1] Get invoice allocation suggestions for a payment. Not exposed by /v1; fails loudly. |
| list_transactionsA | List bank transactions for a matter or bank. The LCS /v1 transactions endpoint has no firm-wide listing — pass either a matter_id (GUID) or a bank_id. /v1 exposes no bank enumeration, so a bank_id must come from the Rocket Matter UI. |
| get_transactionA | Get a transaction by ID (GUID). |
| list_banksA | [Not in LCS /v1] List bank accounts. Bank enumeration is not exposed by the /v1 Integration API; this tool fails loudly. Get a bankId from the Rocket Matter UI for create_transaction / list_transactions. |
| list_chart_of_accountsA | [Not in LCS /v1] List the chart of accounts. Not exposed by the /v1 Integration API; this tool fails loudly. |
| create_transactionB | Create a bank transaction (deposit/withdrawal) via POST /v1/transactions. fields_json: JSON object with the transaction body (needs a bankId — see list_transactions on bank enumeration). The API's 400 validation names any missing required fields. |
| update_transactionB | Update a transaction by ID (GUID). |
| delete_transactionB | Delete a transaction by ID (GUID). |
| list_documentsA | List documents, paginated (firm-wide, read-only). The /v1 API exposes no confirmed server-side filter for documents, so none is offered. |
| get_document_default_appD | [Not in LCS /v1] /v1 documents is read-only (list only); document actions are not exposed. Fails loudly. |
| get_document_download_urlB | [Not in LCS /v1] Signed download URLs are not exposed by /v1 (read-only documents). Fails loudly. |
| get_document_upload_urlD | [Not in LCS /v1] Signed upload URLs are not exposed by /v1 (read-only documents). Fails loudly. |
| delete_documentD | [Not in LCS /v1] /v1 documents is read-only; delete is not exposed. Fails loudly. |
| list_usersA | List firm users (a.k.a. timekeepers) with pagination. Each carries email, roles, default rate, and status. |
| get_userB | Get a firm user by numeric ID. |
| list_timekeepersB | [Not in LCS /v1] Per-timekeeper billable/non-billable time summary is not in /v1; fails loudly. Use list_users for the firm's people list. |
| get_firm_summaryA | [Not in LCS /v1] Firm financial summary (balances, overdue, retainers) is not exposed by /v1; fails loudly. |
| list_text_shortcutsB | List text shortcuts/shorthands. The /v1 endpoint exists but the current OAuth app/user may not be authorized (returns a 403 until the scope is granted). |
| get_text_shortcutB | Get a text shortcut by ID (subject to the same /v1 authorization as list_text_shortcuts). |
| get_codesB | Get UTBMS codes for a matter (GUID) via GET /v1/codes?matterId=. matter_id is required. |
| get_task_codesD | [Not in LCS /v1] Task/activity split is not exposed; /v1 has only the combined get_codes(matter_id). Fails loudly. |
| get_activity_codesD | [Not in LCS /v1] Task/activity split is not exposed; /v1 has only the combined get_codes(matter_id). Fails loudly. |
| get_new_matter_defaultsC | [Not in LCS /v1] New-matter defaults lookup. Fails loudly. |
| get_new_matter_definitionC | [Not in LCS /v1] New-matter definition lookup. Fails loudly. |
| get_ebilling_defaultsB | [Not in LCS /v1] eBilling defaults lookup. Fails loudly. |
| get_matter_type_workflowC | [Not in LCS /v1] Matter-type workflow lookup. Fails loudly. |
| get_client_labelsB | [Not in LCS /v1] Client labels lookup. Fails loudly. |
| get_matter_labelsC | [Not in LCS /v1] Matter labels lookup. Fails loudly. |
| get_client_suggestionsB | [Not in LCS /v1] Client suggestions lookup. Fails loudly. Use list_clients. |
| get_new_contact_defaultsC | [Not in LCS /v1] New-contact defaults lookup. Fails loudly. |
| get_expense_lookupsC | [Not in LCS /v1] Expense lookups. Fails loudly. |
| get_new_expense_lookupsC | [Not in LCS /v1] New-expense lookups. Fails loudly. |
| get_invoice_lookupsC | [Not in LCS /v1] Invoice lookups. Fails loudly. |
| get_new_invoice_lookupsD | [Not in LCS /v1] New-invoice lookups. Fails loudly. |
| get_invoice_payment_lookupsC | [Not in LCS /v1] Invoice-payment lookups. Fails loudly. |
| get_time_entry_lookupsC | [Not in LCS /v1] Time-entry lookups. Fails loudly. |
| get_time_grid_lookupsD | [Not in LCS /v1] Time-grid lookups. Fails loudly. |
| get_transaction_lookupsB | [Not in LCS /v1] Transaction lookups. Fails loudly. |
| get_hard_cost_expense_lookupsC | [Not in LCS /v1] Hard-cost-expense lookups. Fails loudly. |
| list_ap_billsC | [Not in LCS /v1] List AP bills. Fails loudly. |
| get_ap_billC | [Not in LCS /v1] Get an AP bill. Fails loudly. |
| create_ap_billC | [Not in LCS /v1] Create an AP bill. Fails loudly. |
| update_ap_billC | [Not in LCS /v1] Update an AP bill. Fails loudly. |
| delete_ap_billC | [Not in LCS /v1] Delete an AP bill. Fails loudly. |
| list_ap_paymentsC | [Not in LCS /v1] List AP payments. Fails loudly. |
| create_ap_paymentC | [Not in LCS /v1] Trigger an AP payment. Fails loudly. |
| get_ap_payment_statusC | [Not in LCS /v1] AP payment status. Fails loudly. |
| list_ap_vendorsC | [Not in LCS /v1] List AP vendors. Fails loudly. |
| get_ap_vendorC | [Not in LCS /v1] Get an AP vendor. Fails loudly. |
| create_ap_vendorC | [Not in LCS /v1] Create an AP vendor. Fails loudly. |
| update_ap_vendorC | [Not in LCS /v1] Update an AP vendor. Fails loudly. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| matter_billing_review | Review unbilled time and outstanding invoices for a specific matter. |
| new_matter_intake | Create a new matter for an existing client. |
| accounts_receivable_review | Review outstanding invoices and recent payments for firm AR status. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| users_resource | All firm users / timekeepers (email, roles, default rate, status). |
| clients_resource | The firm's clients (first page) — names, balances, and contact details. |
| security_notes_resource | Security posture for rocketmatter-mcp. ## Credentials - **Scoped OAuth (ProfitSolv LCS /v1 Integration API).** Set up once via `rocketmatter-mcp-setup`: it stores the integration's API key + OAuth client_id/client_secret and runs a one-time browser consent. There is NO password login, so the MCP never trips Rocket Matter's single-session limit and never logs you out of your browser. - **ROCKETMATTER_API_KEY / ROCKETMATTER_CLIENT_ID / ROCKETMATTER_CLIENT_SECRET**: resolved via the OS keyring (file fallback `~/.rocketmatter-mcp/.env`, chmod 0600). The OAuth access + refresh tokens are cached in `~/.rocketmatter-mcp/tokens.json` (chmod 0600). Data calls send `X-Api-Key` + `X-User-Token` headers; the client refreshes the access token with the long-lived refresh token on expiry or a 401 — no browser, no password. Re-run setup only if the refresh token is revoked. ## Tool classification - **Read-only (safe):** list_matters, get_matter, list_clients, get_client, list_contacts, get_contact, list_time_entries, get_time_entry, list_expenses, get_expense, list_invoices, get_invoice, list_payments, list_transactions, get_transaction, list_documents, list_users, get_user, get_codes, list_text_shortcuts, get_text_shortcut. - **Write / side-effect:** create_matter, update_matter, delete_matter, create_client, update_client, delete_client, create_contact, update_contact, delete_contact, create_time_entry, update_time_entry, delete_time_entry, create_expense, update_expense, delete_expense, create_invoice, update_invoice, delete_invoice, create_payment, create_transaction, update_transaction, delete_transaction. - **Not in LCS /v1 (fail loud — kept for keep/drop review):** get_firm_summary, list_timekeepers, list_banks, list_chart_of_accounts, generate_invoice, list_billable_items, approve_invoice, get_invoice_allocations, the document actions, get_task_codes/get_activity_codes, all 17 lookups, all Accounts Payable tools. ## Data sensitivity Matters, time entries, invoices, transactions, and client records contain billable legal and financial data. Treat all matter-linked data as attorney-client privileged. |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RosenAdvertising/rocketmatter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server