Smokeball MCP server for AI agents and assistants

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Smokeball MCP or direct API to manage matters, find contacts, organize documents, and track billing through natural language.

Smokeball logoSmokeball
Oauth2

Smokeball is legal practice management software for firms to manage matters, contacts, documents, tasks, and billing. It brings core firm records and workflows into one organized workspace.

164 Tools

Try Smokeball now

Type what you want done — sign in and watch it run live in the Tool Router playground.

TOOL ROUTER PLAYGROUND
Smokeball
Try asking
TOOLS

Supported Tools

Every Smokeball action and event your agent gets out of the box.

Add Contact Tags

Adds one or more tags to an existing contact by contact id; tags that already exist on the contact are not duplicated by the documented behaviour.

Add Matter File

Register a new matter file and return a sensitive presigned PUT URL valid for 1 hour that authorizes its content upload.

Add Matter Files Batch

Register a migration batch of matter files and return one sensitive presigned PUT URL, valid for 1 hour, per item in request order.

Add Matter Layout

Adds a layout item using a restricted documented subset.

Add Matter Layout Contact

Adds a new contact on a specified layout.

Add Matter Role

Appends a new role in the specified matter.

Add Matter Role Relationship

Appends a new relationship with an existing role in the specified matter.

Add Matter Tags

Adds one or more tags to an existing matter by matter id.

Create Activity Code

Creates an activity code.

Create Authorization Group

Creates an authorization group.

Create Authorization Policy

Creates an authorization policy.

Create Bank Account Requisition

Submit an irreversible financial requisition against a trust account.

Create Bank Account Transaction

Submit an irreversible financial Deposit transaction against the specified bank account and matter, with a dollar amount limited to 2 decimal places and an effective date.

Create Contact

Creates a contact.

Create Contact Relation

Creates a relation for a specified contact.

Create Event

Creates a calendar event.

Create Event Reminder

Creates a new reminder for an event.

Create File Preview

Get or request a PDF preview of the current file version.

Create Firm

Creates a firm for the current authenticated client and registers an existing user as a staff member and firm owner.

Create Matter

Creates a new matter or Lead.

Create Matter Expense

Creates an expense for the specified matter.

Create Matter Fee

Creates a fee for the specified matter.

Create Matter Folder

Creates a new folder under the specified matter.

Create Matter Memo

Creates a memo on the specified matter.

Create Notification

Send a notification to the specified staff member, including its displayed message and optional toast message, icons, color, and Smokeball action URI.

Create Staff Member

Creates a staff member in the firm associated with the authenticated client.

Create Subtask

Creates a subtask for a specified task.

Create Task

Creates a task.

Create Task Document

Links an existing document to the specified task; it does not create a new document.

Create User

Create a persistent user login using Default or Auth0.

Create Webhook Subscription

Create a persistent webhook subscription that sends every selected event type to the external eventNotificationUrl until the subscription is changed or deleted.

Delete Activity Code

Deletes an activity code.

Delete Authorization Group

Delete an authorization group.

Delete Contact

Deletes a specified contact.

Delete Contact Relation

Deletes a relation for a specified contact.

Delete Event

Deletes a specified event.

Delete Event Reminder

Deletes a specified event reminder.

Delete Matter

Deletes a specified matter.

Delete Matter Expense

Deletes an expense.

Delete Matter Fee

Deletes a fee.

Delete Matter File

Deletes a specified matter file.

Delete Matter Folder

Deletes a folder belonging to the specified matter.

Delete Matter Memo

Deletes a specified memo.

Delete Staff Member

Sets the staff member from the firm associated with the authenticated client as a former staff member.

Delete Subtask

Deletes a specified subtask of a specified task.

Delete Task

Deletes a specified task.

Delete Task Document

Unlinks the specified document from the task without deleting the underlying document.

Delete Webhook Subscription

Deletes and unsubscribes from the specified webhook subscription.

Get Activity Code

Retrieves one activity code by id: code, description, type, whether it is billable, rate type and rate, quantity and tax flags.

Get Authorization Group

Retrieves one authorization group by id: its name, the ids of the principals it contains, and whether it is deleted.

Get Authorization Policy

Retrieves one authorization policy by its reference: the principal and resource it binds and its rules.

Get Bank Account

Retrieves one bank account by id: type, status, linked matter, account name and number, bank and branch details.

Get Bank Account Transaction

Retrieves one transaction by bank account id and transaction id, including its type, amount, dates, references, associated matter and payor links, and reversal status.

Get Contact

Retrieves one contact by id.

Get Contact Relation

Retrieves a relation for a specified contact if associated with the authenticated client.

Get Contacts Batch

Return contacts matching up to 500 supplied IDs in request order; nonexistent and other-account IDs are silently omitted.

Get Event

Retrieves one calendar event by id: subject, description, location, type, start and end times in the event timeZone, allDay flag, attendees and the linked matter.

Get File Download Url

Return a sensitive presigned GET URL and metadata for downloading the current or specified version of a matter file.

Get File Preview

Return a sensitive presigned URL to the PDF preview of the file's current version.

Get File Version Preview

Return a sensitive presigned URL to the PDF preview of a specific document version.

Get Firm

Retrieves the details of the firm associated with the authenticated client.

Get Layout Design

Retrieves one layout design by id: its name, description and the list of fields a layout matter item of this design carries.

Get Matter

Retrieves one matter by id with its documented fields, including any item, role, layout, and tag details Smokeball returns for it.

Get Matter Archive

Retrieves the archive record of a matter: whether it is archived, the archived date and location, box number, comments and destroy date.

Get Matter Billing Configuration

Retrieves the billing configuration for the specified matter.

Get Matter Expense

Retrieves one expense on a matter by matter id and expense id: staff, amounts, tax, origin and the invoice it belongs to, if any.

Get Matter Fee

Retrieves one fee on a matter by matter id and fee id: staff, duration or quantity, rate, amounts, tax and the invoice it belongs to, if any.

Get Matter File

Retrieves metadata for a file belonging to the specified matter, including its download-details link.

Get Matter Folder Path

Returns the full folder hierarchy (path) as a collection ordered from the root folder down to the supplied folder.

Get Matter Invoice

Retrieves one invoice on a matter by matter id and invoice id: number, title, status, dates and totals.

Get Matter Invoice Download Url

Return a sensitive download URL, its expiry timestamp, version, and status for the specified invoice.

Get Matter Item

Retrieves one item on a matter by matter id and item id: name, index, visibility and its subItems tree.

Get Matter Layout

Retrieves one layout item on a matter by item id, including its name, description, hierarchy and order, layout design link, values, and events.

Get Matter Memo

Retrieves one memo on a matter by matter id and memo id: title, rich text and plain text, author and dates, and whether it is deleted.

Get Matter Role

Retrieves one role on a matter by matter id and role id: role name, the contact filling it, representatives, relationships and whether it is the client or other side.

Get Matter Role Relationship

Retrieves one relationship on a matter role by relationship id, including its name, associated contact link, and representative links.

Get Matter Stage Info

Retrieves a matter's current stage information, including its stage set, current stage, version id, and last-updated timestamp.

Get Matter Type

Retrieves one matter type by id: name, category, type, location, representative options and the items it defines.

Get Notification

Retrieves one notification by id: message, icon, creator and date, and whether it has been read or seen.

Get Protected Bank Account Balance

Retrieves one protected-funds record by bank account id and protection id, including its amount, reason, dates, current protection state, and associated matter or contact.

Get Referral Type

Retrieves one referral type by id: its name and whether it is deleted.

Get Staff Member

Retrieves a staff member (based on staff id parameter provided) in the firm associated with the authenticated client.

Get Stage Set

Returns the stage set identified by `stage_set_id`, including its configured matter stages.

Get Stage Set Stage

Retrieves one stage of a stage set by stage-set id and stage id: name, lastUpdated and whether it is deleted.

Get Subtask

Retrieves the subtask identified by `subtask_id` within the specified `task_id`.

Get Task

Retrieves one task by id: subject, note, due date, assignees, sub-tasks, the linked matter and who created, completed or last updated it.

Get Task Document

Retrieves one document attached to a task by task id and document id, including its document type, deletion state, associated task, and document link.

Get User

Retrieves the Smokeball user identified by `user_id`.

Get Webhook Subscription

Returns the webhook subscription identified by `webhook_subscription_id`, including its callback and subscribed events.

List Activity Codes

Returns a list of activity codes.

List Authorization Groups

Return the authorization groups for the firm associated with the authenticated client.

List Bank Account Matter Balances

Returns a list of bank account matter balances.

List Bank Accounts

Returns bank accounts available to the authenticated firm, optionally filtered by account type or matter identifier.

List Contact Relations

Return relations for a contact associated with the authenticated client.

List Contacts

Returns a list of contacts.

List Contact Tags

Lists the tags currently on one contact, by contact id, as a plain string collection under value.

List Event Reminders

Returns the collection of reminders for an event The native root response is returned under data as an explicit Composio normalization.

List Events

Returns a list of events.

List File History

Returns the full list of history entries for the specified file.

List Firm Matter Stage Mappings

Returns a list of stage to matter mappings in the firm.

List Folder History

Returns a list of history entries for the specified folder.

List Layout Designs

Returns a list of layout designs.

List Matter Expenses

Returns a list of expenses for the specified matter.

List Matter Fees

Returns a list of fees for the specified matter.

List Matter Files

Returns a paged list of non-deleted files associated with a matter.

List Matter Folder Contents

Returns non-deleted folders and files directly under a matter's root document folder, or directly under folder_id when supplied, with folders before files.

List Matter Invoices

Returns a list of invoices for the specified matter.

List Matter Items

Returns the versioned item collection for a matter.

List Matter Layout Contacts

Returns a list of contacts on a specified layout.

List Matter Layouts

Returns a collection of layout items on a specified matter.

List Matter Memos

Returns a list of memos on the specified matter.

List Matter Role Relationships

Returns associated relationships for a specified matter and role group.

List Matter Roles

Returns associated roles for a specified matter.

List Matters

Returns one page of matters; pass next_cursor back as cursor to read the next one.

List Matter Tags

Returns the tags assigned to the matter identified by `matter_id`.

List Matter Type Categories

Returns a list of all the possible matter type categories.

List Matter Types

Returns a paginated list of matter types based on search criteria.

List Referral Types

Returns referral types, including custom referral types.

List Staff

Retrieves a paginated list of staff members in the firm associated with the authenticated client.

List Stage Sets

Returns a list of stage sets for the firm.

List Subtasks

Returns a list of subtasks for a specified task if associated with the authenticated client.

List Task Documents

Returns a list of document links for the specified task, if associated with the authenticated client.

List Tasks

Returns a list of tasks.

List Webhook Event Types

Lists the event type names a webhook subscription can subscribe to, as a plain string collection under value.

List Webhook Subscriptions

Returns existing webhook subscriptions.

Merge Matter Layout

Merges layout data using a restricted documented subset.

Patch Matter

Patches a matter or Lead, including lead-to-matter conversion and matter-type changes.

Patch Matter Archive

Updates the specified matter archive.

Patch Matter Billing Configuration

Changes only the supplied billing configuration fields for the specified matter.

Patch Matter Expense

Changes only the supplied expense fields for the specified matter.

Patch Matter Fee

Patches a fee for the specified matter.

Patch Matter File

Partially updates a file's metadata on the specified matter; only supplied fields change, but the documented schema still requires fileName.

Patch Matter Folder

Partially updates a folder belonging to the specified matter.

Protect Bank Account Funds

Protects funds in a trust bank account.

Remove Contact Tag

Removes one tag from a contact.

Remove Matter Layout

Removes a layout matter item from a matter.

Remove Matter Layout Contact

Removes a contact from a specified layout, deleting the associated role or relationship from the matter.

Remove Matter Role

Removes a specified role from a matter.

Remove Matter Role Relationship

Removes a relationship from a role in a matter.

Remove Matter Tag

Removes the tag from the matter without deleting from the account.

Search Files

Search files across the account using a required full-text query and documented filters; return the documented result array.

Unprotect Bank Account Funds

Unprotects funds in a trust bank account.

Update Activity Code

Updates an activity code.

Update Authorization Group

Updates a specified authorization group.

Update Authorization Policy

Updates a specified authorization policy.

Update Contact

Updates a specified contact.

Update Contact Relation

Updates a relation for a specified contact.

Update Event

Updates an event.

Update Event Reminder

Updates an existing reminder for an event.

Update Firm

Updates firm details for the current authenticated client.

Update Matter

Updates a specified matter.

Update Matter Archive

Replaces the specified matter archive by applying the full editable archive representation.

Update Matter Billing Configuration

Replaces the specified matter's billing configuration by applying its full editable representation.

Update Matter Expense

Replaces the expense by applying its full editable representation for the specified matter.

Update Matter Fee

Replaces the fee by applying its full editable representation for the specified matter.

Update Matter File

Replace all editable file fields using PUT; use PATCH_MATTER_FILE for a partial edit.

Update Matter Folder

Replaces the editable fields of a folder belonging to the specified matter.

Update Matter Memo

Updates a specified memo.

Update Matter Role

Updates a specified role on a matter.

Update Matter Role Relationship

Updates a specified relationship on a matter.

Update Staff Member

Updates a staff member in the firm associated with the authenticated client.

Update Subtask

Updates a specified subtask of a specified task.

Update Task

Updates a specified task.

Update Webhook Subscription

Update a persistent webhook subscription's name, event types, external eventNotificationUrl, and signing key.

SETUP GUIDE

Connect Smokeball MCP Tool with your Agent

1

Install Composio

typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
Install the Composio SDK and your agent framework
2

Create a session with MCP enabled

typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["smokeball"],
  mcp: true,
});
Create a session scoped to Smokeball and read its MCP URL and headers
3

Connect your agent to the MCP server

typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List all open matters assigned to me in Smokeball",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
Pass the session's MCP URL and headers to your agent and run a Smokeball request
SETUP GUIDE

Connect Smokeball API Tool with your Agent

1

Install Composio

typescript
npm install @composio/core @composio/openai openai
Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
2

Create a Composio session

typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["smokeball"] });
const tools = await session.tools();
Initialize Composio with the OpenAI Responses provider and create a session scoped to Smokeball
3

Run Smokeball tools with your agent

typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List all open matters assigned to me in Smokeball" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
Send a request, execute the Smokeball tool calls through the session, and print the final answer

Why Use Composio?

AI Native Smokeball Integration

  • Supports both Smokeball MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable tool execution
  • Rich coverage for reading, writing, and querying your Smokeball data

Managed Auth

  • Built-in OAuth handling with automatic token refresh and rotation
  • Central place to manage, scope, and revoke Smokeball access
  • Per user and per environment credentials instead of hard-coded keys

Agent Optimized Design

  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Smokeball
  • Scoped, least privilege access to Smokeball resources
  • Full audit trail of agent actions to support review and compliance

Rolling this out across your team?

Give your team centralized access control across every framework with Composio’s MCP Gateway.

EXPLORE MCP GATEWAY
FAQ

Frequently asked questions

Smokeball requires connections to go through your own OAuth app. You register it once with Smokeball, add its client ID and secret in the Composio dashboard, and from then on everyone connects by signing in to Smokeball as usual. Composio handles the rest of the flow and the token refresh.

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Yes. Composio is SOC 2 Type II compliant and is built to keep your Smokeball connection and credentials secure. OAuth tokens and API keys are encrypted, and sensitive customer data is protected at rest and in transit.

Composio also undergoes independent security testing and continuously monitors its systems for security threats. You can review the latest reports and policies in the Composio Trust Center.

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

When you connect a Smokeball account through Composio, every action runs under that account, so anything the agent creates, sends, or changes shows up in Smokeball as done by you. Keep an approval step in your prompt for actions with side effects, such as sending or deleting, and have the agent draft first.

Exactly the ones Smokeball lists on its consent screen when you connect. Review that screen before approving. If you connect a work account, your Smokeball administrator may need to approve the app first, and you can revoke the access inside Smokeball whenever you want.

Yes. Composio supports multiple connected accounts for the same app, and that works in Claude, ChatGPT, or any other assistant you connect through Composio. Give each Smokeball connection a name such as work or personal, and the assistant uses the one you mention in the request. Each account keeps its own credentials and nothing is merged.

Composio refreshes Smokeball tokens automatically, so day to day you do nothing. If you revoke access inside Smokeball, or Smokeball invalidates the session, the connection shows as expired in Composio and the agent stops acting on that account until you reconnect it, which is a single sign-in.

Composio's free Hobby plan includes 100,000 tool calls per month with no credit card, which covers most personal Smokeball use. Paid plans add higher limits and team features. Your Smokeball plan and its API limits still apply as usual.

Built-in connectors usually give one AI access to a limited set of apps. Many people use Composio because it lets their AI connect to more apps than it normally supports, or connect to multiple accounts for the same app (e.g. connect Claude to multiple Smokeball accounts).

With Composio, you connect Smokeball once and then use it across different AI assistants without setting it up separately in each one. Connect your apps to Composio once, then connect Composio to whichever AI you use, whether that's Claude, ChatGPT, Hermes, or your own custom assistant.

Start with Smokeball.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Smokeball tool your agent needs.Free to start.

Start building