SmartAdvocate

Connect your AI agents to SmartAdvocate.

Authentication: SmartAdvocate host, username, and password. See Magic Link for the runtime auth flow.

Sample use cases

  • Open a new case for a personal-injury client and set the case type.
  • List all appointments scheduled for case number 2024-0512.
  • Add the plaintiff’s injuries and treatment details to the case.
  • Show me the outstanding tasks assigned to the litigation team.

Available Tools

list_case_appointments

List every calendar appointment on one case by internal case ID. Not paginated — returns the case’s full appointment…

list_appointments_by_case_number

List every calendar appointment on one case by its human-readable case number. Use list_case_appointments when you al…

search_appointments

Search appointments across cases for firm-wide calendars and deadline reports. The modified-date window is required;…

create_appointment

Schedule an appointment on a case — a hearing, deposition, meeting, or reminder. Call list_appointment_types, list_ap…

list_appointment_types

List the firm’s appointment types, e.g. Deposition or Trial. Call this before create_appointment — type IDs are per-f…

list_appointment_activity_types

List the firm’s appointment activity types — the secondary classification on an appointment. Call this before create_…

list_appointment_statuses

List the firm’s appointment statuses, e.g. Scheduled or Cancelled. Call this before create_appointment.

list_case_calls

List the calls logged on one case — remote party, number, direction, date, and summary. Page with page_info.next_page.

create_call

Log a phone call on a case. direction is true for outbound and false for inbound. Use list_case_contacts or lookup_co…

update_call

Replace a logged call in full. Every field you want kept must be supplied — omitted fields are cleared. Use patch_cal…

patch_call

Change selected fields on a logged call, leaving the others untouched. Pass fields as a mapping of API field name to…

delete_call

Delete a logged call from a case permanently. This cannot be undone.

get_case

Get one case by its internal case ID, including parties, staff, tags, and incident summary. Use get_case_info instead…

get_case_info

Get a case by its human-readable case number, e.g. 9000002. Use get_case instead when you already have the internal c…

search_cases

Search cases modified within a date range, optionally narrowed by case number, case type, case group, or tag. The dat…

list_active_cases

List open cases assigned to one staff member, for workload or dashboard views. Use list_case_staff on a known case to…

create_case

Open a new case from intake details. Call list_case_groups and list_case_types first — group and type IDs are per-fir…

update_case_number

Change a case’s human-readable case number. The firm must have case-number editing enabled in SmartAdvocate and the n…

list_case_contacts

List every contact linked to a case with the role each one holds — plaintiff, defendant, witness, adjuster, and so on…

add_case_contact

Link an existing contact to a case in a role. Find the contact ID with lookup_contacts or search_contacts, or create…

update_case_contact

Replace a case-contact link’s role and comments. This is a full replacement — any field left unset is cleared. Use pa…

patch_case_contact

Change selected fields on a case-contact link, leaving the others untouched. Pass fields as a mapping of field name t…

delete_case_contact

Unlink a contact from a case. This removes the case-contact relationship only; the contact record itself is left in p…

list_related_cases

List cases linked to this one as related matters — consolidated cases, companion cases, or other cases involving the…

list_case_groups

List the firm’s case groups — the top-level case classification, e.g. Personal Injury. Call this before create_case o…

list_case_types

List the case types inside one case group — the second-level classification. Get the group ID from list_case_groups…

list_case_subtypes

List the subtypes inside one case type — the third-level classification. Get the case type ID from list_case_types. R…

get_contact

Get a contact’s core details by contact ID — name, primary address, phone, and email. Use get_contact_full for the co…

get_contact_full

Get a contact’s complete record, including all addresses, emails, phones, and classification fields. Heavier than get…

search_contacts

Search contacts by modified-date window, optionally restricted to those linked to given case numbers. The date window…

lookup_contacts

Find contacts by name or phone number — the way to resolve a person to a contact ID before add_case_contact, add_plai…

create_contact

Create a contact. Call list_contact_types first — category and type IDs are per-firm configuration. Give first_name a…

patch_contact

Change selected fields on a contact, leaving the others untouched. Pass fields as a mapping of API field name to new…

list_related_contacts

List contacts related to a given contact, with the relationship each one holds — family members, employers, and simil…

list_contact_addresses

List a contact’s postal addresses. Returns the address IDs patch_contact_address and delete_contact_address take.

add_contact_addresses

Add one or more postal addresses to a contact. Pass a list even for a single address. Use list_incident_states for va…

patch_contact_address

Change selected fields on one of a contact’s addresses. Get the address ID from list_contact_addresses. Pass fields a…

delete_contact_address

Delete one address from a contact permanently. This cannot be undone.

list_contact_emails

List a contact’s email addresses. The address itself is in the name field. Returns the email IDs patch_contact_emai…

add_contact_emails

Add one or more email addresses to a contact. Pass a list even for a single address. Set prevent_auto_contact to stop…

patch_contact_email

Change selected fields on one of a contact’s email addresses. The address itself is the name field. Get the email I…

delete_contact_email

Delete one email address from a contact permanently. This cannot be undone.

list_contact_phones

List a contact’s phone numbers with their labels and texting flags. Returns the phone IDs patch_contact_phone and del…

add_contact_phones

Add one or more phone numbers to a contact. Pass a list even for a single number. Use list_phone_types for the labels…

patch_contact_phone

Change selected fields on one of a contact’s phone numbers. Get the phone ID from list_contact_phones. Pass fields as…

delete_contact_phone

Delete one phone number from a contact permanently. This cannot be undone.

list_contact_types

List the firm’s contact types for a contact category. Call this before create_contact — the category and type IDs are…

list_address_types

List the firm’s address types for a contact category, for labelling addresses on a contact.

list_phone_types

List the firm’s phone types, e.g. Mobile Phone or Work Phone. Use one of these as the name when calling add_contact_p…

list_contact_subcategories

List the firm’s contact subcategories. Feeds contact_sub_category_id on create_contact.

list_case_documents

List document metadata for one case, filtered server-side by category, subcategory, or originating/destination contac…

list_documents_by_case_number

List document metadata for one case by its human-readable case number, with the same category and contact filters. Us…

get_document

Get one document’s metadata by document ID — name, category, dates, and review state. Returns no file content; use do…

search_documents

Search document metadata across cases by modified-date window, narrowed by case number, category, subcategory, or con…

create_document

Create a document metadata record on a case. This moves no bytes — call upload_document_content with the returned doc…

update_document

Replace a document’s metadata in full. Every field you want kept must be supplied — omitted fields are cleared. Use p…

patch_document

Change selected metadata fields on a document, leaving the others untouched. Pass fields as a mapping of API field na…

download_document

Download a document’s file content by document ID. Returns UTF-8 text as text and anything else as base64 — check the…

upload_document_content

Attach file content to an existing document record. Pass the bytes as base64 in content_base64, or a file_reference f…

list_document_categories

List the firm’s document categories with their subcategories, one row per category/subcategory pair. Call this before…

list_document_folders

List the document folders configured on one case. Use a folder name as document_folder on create_document to file a d…

list_document_tags

List the firm’s document tags. Call this before create_document to pass valid tag_ids.

get_case_incident

Get a case’s incident record — the facts of what happened plus structured details like date, state, and county. Retur…

get_incident_by_case_number

Get a case’s incident record by its human-readable case number. Use get_case_incident when you already have the inter…

search_incidents

Search incident records across cases by modified-date window, optionally restricted to specific case numbers. The dat…

update_incident

Replace a case’s incident facts and structured details. Get the incident ID from get_case_incident. Supplying inciden…

patch_incident

Change selected fields on a case’s incident record, leaving the others untouched. Pass fields as a mapping of API fie…

list_incident_states

List the states available on incident records. Call this before update_incident to get a valid state ID, or to resolv…

list_incident_counties

List the counties available on incident records. This is a large reference list covering every state; call it before…

list_liability_codes

List the firm’s liability codes for incident records. Call this before update_incident — these IDs are per-firm confi…

list_case_injuries

List the injury records on a case, one per injured plaintiff. Returns the injury IDs the injury-detail tools take. Us…

get_injury

Get one injury record on a case, including its summaries and confinement details. Use list_case_injuries to find inju…

search_injuries

Search injury records across cases by modified-date window, optionally restricted to specific case numbers. The date…

create_injury

Create an injury record for one plaintiff on a case. plaintiff_id is the plaintiff RECORD id from list_plaintiffs, no…

update_injury

Replace an injury record’s summaries, confinement details, and comments. Fields left unset are cleared, so supply eve…

delete_injury

Delete an injury record from a case permanently, along with its detail rows. This cannot be undone.

list_injury_details

List the detail rows under one injury — each a body part with its treatments and sequelae. Returns the detail row IDs…

get_injury_detail

Get one injury detail row by its ID. Use list_injury_details to find row IDs.

create_injury_detail

Add a body-part detail row to an injury. Call list_body_parts first, then list_treatments and list_sequelae with that…

update_injury_detail

Replace an injury detail row. Fields left unset are cleared, so supply everything you want kept. Use patch_injury_det…

patch_injury_detail

Change selected fields on an injury detail row, leaving the others untouched. Pass fields as a mapping of API field n…

delete_injury_detail

Delete one injury detail row permanently. This cannot be undone.

add_injury_details_by_icd

Add injury detail rows from ICD diagnosis codes, letting SmartAdvocate map each code to the right body part and injur…

add_injury_details_by_cpt

Add procedure detail rows to an injury from CPT procedure codes, letting SmartAdvocate map each code to the right tre…

list_body_parts

List the body parts available on injury detail rows. Call this first when building a detail row, then feed the ID to…

list_sequelae

List the sequelae — follow-on conditions — recorded for one body part. Feeds sequelae_ids on create_injury_detail. Us…

list_treatments

List the treatments available for one body part. Feeds treatment_ids on create_injury_detail. Use list_body_parts to…

list_injury_names

List the firm’s catalogue of injury names. This is a large reference list; use it to resolve an injury description to…

list_case_insurance

List the insurance policies on a case for one side. party is required: ‘P’ for plaintiff-side coverage, ‘D’ for defen…

list_insurance_by_case_number

List insurance policies for one side of a case by its human-readable case number. Use list_case_insurance when you al…

get_insurance

Get one insurance policy on a case by its insurance record ID, including carrier, adjuster, limits, and claim number.

create_insurance

Record an insurance policy on a case. Set party to ‘P’ or ‘D’ and pass the matching plaintiff_id or defendant_id from…

update_insurance

Replace an insurance policy in full. Fields left unset are cleared, so supply everything you want kept, including par…

patch_insurance

Change selected fields on an insurance policy, leaving the others untouched. Pass fields as a mapping of API field na…

delete_insurance

Delete an insurance policy from a case permanently. This cannot be undone.

list_insurance_types

List the firm’s insurance types, e.g. auto liability or health. Call this before create_insurance — these IDs are per…

list_case_notes

List the notes on one case by internal case ID, newest first. Use list_notes_by_case_number when you only have the ca…

list_notes_by_case_number

List the notes on one case by its human-readable case number. Use list_case_notes when you already have the internal…

get_note

Get one case note by its note ID, including full body text and sharing settings.

search_notes

Search notes across cases by modified-date window, optionally restricted to specific case numbers. The date window is…

create_note

Add a note to a case. Call list_note_types first — note type IDs are per-firm configuration. note_text accepts HTML…

update_note

Replace a note in full — type, body, date, subject, contact, priority and sharing. Every field left unset is cleared,…

patch_note

Change selected fields on a note, leaving the others untouched. Pass fields as a mapping of API field name to new val…

list_note_types

List the firm’s note types. Call this before create_note or update_note — note type IDs are per-firm configuration an…

list_plaintiffs

List the plaintiffs on a case with their roles and contact IDs. Set add_contact_info to include full contact details,…

list_defendants

List the defendants on a case with their roles and contact IDs.

add_plaintiff

Add a plaintiff to a case. Call list_plaintiff_roles first with the case’s type ID — role IDs are per-firm configurat…

patch_plaintiff

Change selected fields on a plaintiff record, leaving the others untouched. Pass fields as a mapping of API field nam…

list_plaintiff_roles

List the plaintiff roles available for a case type, e.g. Passenger or Driver. Call this before add_plaintiff — role I…

lookup_cases

Look up cases by a single criterion, e.g. every case with a given status. Pass the value as criteria and what it refe…

list_case_staff

List the staff assigned to one case with their roles. This is the discovery tool for staff IDs: it returns the contac…

list_staff_by_case_number

List staff assignments by case number. Accepts % as a wildcard, so ‘1%’ returns assignments for every case whose numb…

search_case_staff

Search staff assignments across cases by modified-date window, optionally restricted to specific case numbers. The da…

list_case_statuses

List a case’s status history by internal case ID — each record with its type, value, and effective dates. A record wi…

list_statuses_by_case_number

List a case’s status history by its human-readable case number. Use list_case_statuses when you already have the inte…

get_case_status

Get one case status record by its status record ID, with dates and comments.

search_case_statuses

Search case status records across cases by modified-date window, optionally restricted to specific case numbers. The…

create_case_status

Add a status record to a case. Call list_status_types first — both the status type ID and the status value ID within…

update_status_comment

Change the comment on an existing case status record. Only the comment can be edited; use create_case_status to recor…

terminate_case_status

Close out the active status of a given type on a case by stamping its end date. Nothing is deleted — the record stays…

list_status_types

List the firm’s case status types and the status values inside each one. Call this before create_case_status or termi…

list_tags

List every tag defined in the firm, with its active state and any case-group or case-type restrictions. Use list_avai…

get_tag

Get one tag definition by ID, including its group and case-type restrictions.

create_tag

Define a new tag that can be applied to cases. Set limit_groups true and pass groups to restrict it to certain case g…

update_tag

Update a tag definition’s name, active state, or group restrictions. This replaces the tag’s properties, so supply ev…

delete_tag

Delete a tag definition permanently. This also removes the tag from every case it was applied to and cannot be undone…

list_available_case_tags

List the tags that can still be applied to one case — those allowed for its case group and type and not already assig…

add_case_tags

Apply one or more existing tags to a case. Call list_available_case_tags first — a tag not permitted for the case’s g…

remove_case_tags

Take one or more tags off a case. The tag definitions themselves are left intact — use delete_tag to remove a definit…

list_case_tasks

List the tasks on one case by internal case ID. Use list_tasks_by_case_number when you only have the case number, or…

list_tasks_by_case_number

List the tasks on one case by its human-readable case number. Use list_case_tasks when you already have the internal…

get_task

Get one task by its task ID, including assignee, dates, and attached documents.

search_tasks

Search tasks across cases, filtering by modified window, due-date range, type, status, assignee, or template. All fil…

create_task

Create a task on a case. Call list_task_types, list_task_statuses, and list_task_priorities first — these IDs are per…

update_task

Replace a task in full. Every field you want kept must be supplied — omitted fields are cleared. Use patch_task to ch…

patch_task

Change selected fields on a task, leaving the others untouched. Pass fields as a mapping of API field name to new val…

delete_task

Delete a task permanently by its task ID. This cannot be undone.

list_task_types

List the firm’s task types. Call this before create_task, update_task, or search_tasks — task type IDs are per-firm c…

list_task_statuses

List the firm’s task statuses, e.g. Not Started or Completed. Call this before create_task, update_task, or search_ta…

list_task_priorities

List the firm’s task priority levels, e.g. Normal or High. Call this before create_task or update_task.

list_case_udfs

List a case’s user-defined fields and their current values — SmartAdvocate’s custom fields. This is the discovery too…

list_udfs_by_case_number

List a case’s user-defined fields by its human-readable case number. Use list_case_udfs when you already have the int…

get_udf

Get one user-defined field’s value on a case by its UDF definition ID. Use list_case_udfs to find UDF IDs.

search_udfs

Search user-defined field values across cases by modified-date window, optionally restricted to specific case numbers…

update_udf

Set one user-defined field’s value on a case. Call list_case_udfs first for the udfid, and pass its relatedPK as sub_…

bulk_update_udfs

Set several user-defined field values on one case in a single transaction — if any entry is invalid nothing is writte…

list_udf_grid_rows

List the rows of a UDF grid on a case. Get the screen name from the screen_name of a grid-type field returned by list…

get_udf_grid_row

Get one row of a UDF grid by row ID, returning each cell’s column definition ID and value. Use list_udf_grid_rows to…

create_udf_grid_row

Add a row to a UDF grid on a case. Read the column definition IDs from an existing row with list_udf_grid_rows first…

update_udf_grid_row

Replace a UDF grid row’s cells. This is a full replacement — include every column you want kept, with each cell’s udf…

delete_udf_grid_row

Delete a row from a UDF grid on a case. This cannot be undone.