Tool reference
This page is generated from the committed CLI route tree and tool-registry
snapshot. It includes curated MCP tools, discriminator subcommands, and every
generated stella capability <domain> <action> command that the CLI exposes.
Access is the tool’s declared behavior: read tools never change state; write tools do and ordinary writes may execute immediately; destructive writes delete or irreversibly change data and require explicit confirmation. Some additional writes can also request server-side confirmation based on their target.
| Tool | CLI command | Access | What it does |
|---|---|---|---|
List matterslist_matters | stella matter list | read | List the matters you can access, or get one matter's overview. Omit matter_id to list accessible matters (filter with status, page with cursor); list first when the user does not name a matter or you need matter IDs for follow-up tools. Pass matter_id to return that matter's overview instead: counts, recent entities, linked contacts, and members. |
Save mattersave_matter | stella matter save | write | Create, update, archive, or unarchive a matter. Omit matter_id to create a new matter (name required; pass client_id to attach a client contact). Pass matter_id to update an existing matter: set name, reference, or billing_reference, and/or set status to 'archived' or 'active' to archive or unarchive it. Returns the matter ID. |
Delete matterdelete_matter | stella matter delete | destructive | Permanently delete a matter and all its documents, tasks, fields, and chat history. This is irreversible. |
Link contact to matterlink_matter_contact | stella matter link-contact | write | Link a contact to a matter in a party role (opposing party/counsel, co-counsel, witness, expert witness, third party, judge, mediator, or other), or remove such a link. Pass contact_id with role to link. To unlink, pass matter_contact_id (precise, from list_matters) or contact_id alone; contact_id alone is rejected when the contact holds several roles on the matter. |
Search across matterssearch_across_matters | stella search matters | read | Search across all accessible matters. Use this when the user explicitly asks to search outside a single matter or you do not yet know the right matter. |
Search case lawsearch_case_law | stella case-law search | read | Search case law within one country. `queries` carries several phrasings of one question and merges their results; matchedQueries names the phrasings that returned each hit. `limit` is the merged page, split evenly across them. Filters: court, language, dates, decision type, source_id (a `facets.source` bucket's `value`). `sort` defaults to 'relevance'. Facets and total describe ONE query's whole set: first page of a single-query call only, null otherwise. Function words are not required terms; `searches[]` gives each phrasing's `queryUsed` and warnings, and `strict` requires every word. Each hit carries citationAuthority (the score the ranking blends in), matchingPassages (at least 1) and a route-independent resourceName. read_case_law_citations gives the polarity of the citing decisions. |
Look up case law by identifierlookup_case_law | stella case-law lookup | read | Resolve case references to decisions: docket numbers as the courts write them (a trailing sheet number is ignored) and ECLIs. Answered from the identity columns, never by ranking text, so a hit is the decision named, not one citing it. Every `identifiers[]` entry is answered on its own, in input order, under `status`: `found` carries that decision's id, resourceName, appUrl, docket, court, date and ECLI; `ambiguous` carries the candidates: a docket is unique to a court, not to the corpus, and picking one would cite the wrong court; `not_found` says what to call instead; `lookup_failed` means the read did not complete, so retry that entry. Use this when the user names a case; use search_case_law when they describe one. Pass a `found` decisionId to read_case_law_decision for the text. |
Read case-law decisionread_case_law_decision | stella case-law read | read | Read case-law decisions by id. Every `decision_ids[]` entry is answered on its own, in input order, under `status`: `found` carries the decision (metadata, text fields, plain text, source URLs, resourceName, citation ids), while `not_found` (no such public decision) and `pending` (its publisher document is not stored yet) carry a message. Prefer one batched call over one per decision; the call's text budget is shared, so read one id alone for a whole decision's text. It does NOT say how the citing courts treated a decision: its citation entries carry no treatment and no surrounding text. For that call read_case_law_citations ({ decision_id: '<uuid>', direction: 'cited_by' }). Long text and citation lists come back in windows; pass an entry's nextCursor back as cursor with that one id. |
Read case-law citationsread_case_law_citations | stella case-law citations | read | How the decisions citing one stood to it, or what it cited. One page of citations, each with a polarity and an excerpt of the paragraph the citation sits in. `cited_by` returns the decisions that cite this one, `cites` the ones it cites; neither means agreement. `polarity` is one of negative, neutral, positive, supportive, unclassified: a stance, not a doctrinal act, so it never says followed, distinguished or overruled. 'unclassified' means none was read. `passage.text` is at most 1200 characters centred on the citation, cut when `passage.truncated`; `passage.mention` is 'sole', 'classified_section' (the mention the polarity was read from), or 'latest_of_several' (it may not be). Example: { decision_id: '<uuid>', direction: 'cited_by', limit: 20 }. Pass the returned nextCursor back as cursor. |
Read content across mattersread_content_across_matters | stella document content | read | Read a document's content, found anywhere in your accessible matters. DOCX files are converted to Markdown with structure preserved (headings, tables, lists); other formats return their extracted plain text. Use after search_across_matters. Long documents are returned in windows; pass the returned nextCursor back as cursor to read more. |
List documentslist_documents | stella document list | read | List the documents and folders in a matter. Use 'flat' mode to enumerate every document and folder in the matter, or 'children' mode to walk the folder tree one level at a time (pass parent_id to list a folder's direct children, or omit it for the matter root). Returns each entity's id, name, kind (document or folder), and parentId. Read a document's metadata, fields, or versions with read_document. |
Read documentread_document | stella document read | read | Read a document's metadata and field values by entity ID. By default returns the current version's name, kind, and field/property values. The default response also reports contentState and searchIndexState, including an actionable remediation or escalation requirement when document text processing is required. Pass version_id to inspect a specific version instead. Pass version_id and compare_with_version_id to get a plain-text line diff between two versions. Pass include_versions to also return the version history. To read the document's extracted text content, use read_content_across_matters. |
Save documentsave_document | stella document save | write | Create a document or folder, or update an existing one. Omit entity_id to create: pass matter_id and name, optionally a parent_id folder and kind ('document' by default, or 'folder'). Creating makes an empty named entity; uploading file content is a separate step. Pass entity_id to update: set name to rename; parent_id to move it into a folder or move_to_root to move it to the matter root; version_id with label and/or description to annotate a version. An update needs at least one change. Returns the entity ID. |
Compare document versionscompare_documents | stella document compare | write | Create a tracked-changes DOCX redline. source versions compares an explicit stored base with up to 8 targets; source previous compares one stored version with its predecessor; source uploads compares two .docx files stella does not hold, staged by open_file_comparison, prepare_file_comparison_from_links or prepare_file_comparison. base_tracked_changes and target_tracked_changes handle tracked changes each side already carries: accept (the usual choice) compares its final text. output_mode preview compares without writing; download returns each redline as an expiring link, not a version; version saves each redline as a derived version and needs a stored source. Results are independent, so read every status. Show the user each redline's openUrl or download link. |
Prepare file comparisonprepare_file_comparison | stella document comparison prepare | write | Reserve upload slots for redlining two .docx files that are not stored in stella, for a client that can PUT the bytes itself (the CLI, a script). In a chat, prefer open_file_comparison, whose panel uploads from the user's browser, or prepare_file_comparison_from_links when the files are reachable by HTTPS link. Both files must be .docx and at most 50 MB. PUT each file's bytes to its url with the returned headers sent verbatim: the URL is signed against that exact size and checksum. Then call compare_documents with the echoed next.source, within the hour. The staged files and the redline are temporary and never become a document, a version, or matter content. |
Prepare file comparison from linksprepare_file_comparison_from_links | stella document comparison prepare-from-links | write | Stage two .docx files for redlining from HTTPS links the server can download, so no bytes pass through the client. Each file is at most 50 MB and must be a .docx. Then call compare_documents with the echoed next.source, within the hour. The staged files and the redline are temporary and never become a document, a version, or matter content. |
Delete documentdelete_document | stella document delete | destructive | Delete a document and all its versions, or delete a single version when version_id is provided (the current version is promoted to the next latest; the only remaining version cannot be deleted). This is irreversible. |
List propertieslist_properties | stella document properties list | read | List the property (column) definitions of a matter. Returns each property's id, name, value type (text, single-select, multi-select, date, int, or file), status, and writeMethod. Use set_field_value for scalar properties. Arbitrary file-property cells are not writable; document upload/version tools replace only a document's primary file. |
Set field valueset_field_value | stella document field set | write | Set a document's value for a property (a cell in the matter's table). Pass the document entity_id, the property_id (from list_properties), and a content object whose 'type' matches the property's value type: text (value: string), single-select (value: string or null), multi-select (value: array of strings), date (value: ISO YYYY-MM-DD or null), or int (value: integer, optional currency: 3-letter ISO code). An empty value clears the cell. |
Read contactread_contact | stella contact read | read | Read a contact by ID. Use this after matter overview or entity metadata surfaces a contact the user wants to inspect more closely. |
List contactslist_contacts | stella contact list | read | List or search the organization's internal contact directory. Returns internal contact IDs accepted by read_contact, save_contact, and link_matter_contact. Use q to search display names and type to filter people or organizations. |
Save contactsave_contact | stella contact save | write | Create or update a contact (a person or organization in the address book, shared across the whole organization). Omit contact_id to create (type required, plus display_name or the name parts it is derived from); pass contact_id to update. String fields other than display_name accept null to clear them. |
Delete contactdelete_contact | stella contact delete | destructive | Permanently delete a contact from the organization address book. Rejected while the contact is still the client of any matter. This is irreversible. |
Look up business registrylookup_business_registry | stella contact lookup-registry | read | Look up a company in a public business register (ARES, Brreg, Companies House, EDGAR, GCIS, KRS, ORSR, PRH, recherche-entreprises, or VIES). Pass a canonical identifier (company/registration number, VAT number) for an exact match, or a company name to search where the register supports it. Returns registered names, addresses, and registry-specific details. Result IDs belong to the external registry, not stella's contact directory; create a contact with save_contact before using read_contact. |
Set practice jurisdictionsset_practice_jurisdictions | stella organization set-jurisdictions | write | Set the practice jurisdictions for the user's stella organization. Call this when the org's practice jurisdictions are empty (e.g., the user signed up via an OAuth client and skipped onboarding). Pass an array of {country_code, is_primary}; exactly one entry should be primary. |
Manage organizationmanage_organization | stella organization add-member | write | Manage organization members and non-secret settings. Member actions require matter_id and user_id. update_org_settings controls matter numbering, prompt caching, and document processing. Manage provider secrets in the dashboard. |
Manage organizationmanage_organization | stella organization remove-member | destructive | Manage organization members and non-secret settings. Member actions require matter_id and user_id. update_org_settings controls matter numbering, prompt caching, and document processing. Manage provider secrets in the dashboard. |
Manage organizationmanage_organization | stella organization update-settings | write | Manage organization members and non-secret settings. Member actions require matter_id and user_id. update_org_settings controls matter numbering, prompt caching, and document processing. Manage provider secrets in the dashboard. |
Search legislationsearch_legislation | stella legislation search | read | Search the stella legislation corpus within one country: consolidated statutes, each with its ELI, title, language, document type, publication status, effective date and a matched snippet. Filters: document type, status, language, and an effective-date range (ISO YYYY-MM-DD). No facets are returned and `total` is not counted, so page with the returned nextCursor instead of reasoning about a result count. A hit is metadata only: pass its `eli` to read_statute for the text, the outline of anchors and the consolidated versions. |
Read statuteread_statute | stella legislation read | read | Read one statute by ELI as it stood on a date: `as_of` picks the consolidation in force that day, and omitting it reads the text in force today. Returns that consolidation's metadata and validity window, `versions` (the newest page of the work's consolidations), `outline` (its heading anchors, the input read_statute_provisions takes) and its plain text. Long text comes back in windows; pass the returned nextCursor back as cursor to read more. A source that bars AI use of its wording still answers with metadata, versions and outline, and `textWithheldReason` in place of the text. |
Read statute provisionsread_statute_provisions | stella legislation provisions | read | Read named provisions of one or more statutes in one call: each `items[]` entry is { eli, anchor } plus an optional as_of and language. An anchor is the publisher's own (par_1729, par_1729-odst_1) and read_statute's `outline` lists them. Every entry is answered separately, in input order, under `status`: `found` carries the provision's text, while `not_found` (no such ELI), `uncovered_date` (no consolidation covers that day), `provision_not_found` (that consolidation has no such anchor) and `text_withheld` (the source bars AI use of its wording) each carry a message. Prefer one batched call over one call per provision. |
Read provision historyread_provision_history | stella legislation history | read | How one provision's wording changed: its text in each consolidation of the work, newest validity window first, so two wordings can be compared without downloading whole statutes. Takes the work's `eli` and an `anchor` from read_statute's outline. A consolidation that does not carry the anchor is left out of `items`. Pass the returned nextCursor back as cursor for older windows. |
Search BOE legislationsearch_boe_legislation | stella legislation boe-search | read | Search and read Spanish consolidated legislation from the BOE. In search mode, pass query (free text) and/or filters (title, department_code, legal_range_code, matter_code, date_from/date_to as YYYYMMDD); at least one filter is required. In read mode, pass law_id (e.g. BOE-A-1889-4763) to return the law with its block structure; add full_text to include the consolidated text, block_id to return one text block, or relation_type to list related laws instead. Returns public statutory data. |
List templateslist_templates | stella template list | read | List the document templates in this organization (NDAs, powers of attorney, leases), or describe one template's fillable fields. Omit template_id to list templates: each template's id, name, field count, tags, and usage guidance (whenToUse / whenNotToUse); prefer a template whose whenToUse matches the request and skip any whose whenNotToUse applies. Pass template_id to return that template's full field configuration, in the shape the field reference documents (see stella://reference/template-fields), its named conditions and formula fields, and the configure_template_fields call to make next. `arrays` marks {% for %} fields as arrays of objects, not dotted keys. |
Fill templatefill_template | stella template fill | write | Fill a template and return the rendered text; pass output_mode='docx' for base64 bytes. Call list_templates first, then pass its field paths in values. Registry, composite, formula, and AI fields resolve automatically. Unknown keys fail unless allow_unused_values is true. Missing required values always fail. Unfilled placeholders or failed AI drafts fail unless completion_mode is allow_partial. Errors name exact paths; never guess required values. Output includes completionStatus. |
Save filled templatesave_filled_template | stella template save-filled new-document | write | Fill a registered template and persist its DOCX in a matter. Use create_document (optionally with parent_id) or create_version with entity_id. Call list_templates for field paths; never guess required values. Missing required values always fail. Unfilled placeholders or failed AI drafts stop writes unless completion_mode is allow_partial. Returns document/version ids and fill diagnostics. |
Save filled templatesave_filled_template | stella template save-filled new-version | write | Fill a registered template and persist its DOCX in a matter. Use create_document (optionally with parent_id) or create_version with entity_id. Call list_templates for field paths; never guess required values. Missing required values always fail. Unfilled placeholders or failed AI drafts stop writes unless completion_mode is allow_partial. Returns document/version ids and fill diagnostics. |
Create templatecreate_template | stella template create | write | Create a template from a DOCX, or publish a new version of one. To create, pass a name and the document. To publish over an existing template, pass its template_id with the document; template_id with only a name renames it. Same-name templates are never merged: only template_id matches an existing one. For the document, pass file (preferred, up to 50 MB) or the original bytes as docx_base64 (max 196608 bytes decoded within the 524288-byte MCP request frame); never retype the file or strip parts out to fit. Read stella://reference/template-markers before authoring: markers are the docxtpl dialect of Jinja, and a value marker's filters ARE its field's configuration. Returns the template id, its fields, arrays, conditions, computed values and warnings; configure_template_fields writes those filters. |
Configure template fieldsconfigure_template_fields | stella template configure-fields | write | Configure an existing template's fields: who fills each one, its input control, options and validation. The configuration lives in the document, so this rewrites what carries each field (its markers at every occurrence, the {% if %} tags a rule replaces, the keyed markers that render a registry hit) and publishes the result. Pass template_id and one entry per field path; every path must be one the document already carries, and a property you leave out keeps what the marker says. Read stella://reference/template-fields first. Returns the template's full field configuration afterwards, plus the entries that could not be applied. |
Preview template conditionspreview_template_conditions | stella template preview-conditions | read | Ask what current values decide without filling. Returns every AI condition with `path`, `label`, and either `state: "decided"`, its `value`, `decided_by` (`user` or `decision_model`), and `probability` for model answers; or `state: "undecided"` and `reason` (`no_decision_model`, `below_floor`, `failed`). Only the decision model runs; fill may later use the generative model. A boolean in `values` wins. Nothing is written. |
List taskslist_tasks | stella task list | read | List tasks, or read one task in detail. Pass task_id for one task's fields, assignees, and linked entities. Otherwise pass matter_id to list one matter's tasks, or omit it to list tasks across every matter you can read; filter by status, due date (date_from/date_to, ISO YYYY-MM-DD), or assignee. Soonest due first, undated last. Each task names its matter (id, name, reference). |
Save tasksave_task | stella task save | write | Create or update a task, and manage its assignees and entity links. Omit task_id to create a task (matter_id and name required). Pass task_id to update: set name, item_type, status, priority, or due_date (ISO YYYY-MM-DD, null to clear); add or remove one assignee (add_assignee_user_id / remove_assignee_user_id); link the task to another entity (link_entity_id) or remove a link (unlink_link_id). Returns the task ID. |
Delete taskdelete_task | stella task delete | destructive | Permanently delete a task from its matter, together with its links, assignees and audit-visible field values. Refused while the matter is archived. This is irreversible. |
List clauseslist_clauses | stella clause list | read | List the clause library for this organization, or read one clause in detail. Pass clause_id to get a clause's body, description, usage notes, variants, and version history; add version_id to read one version's body. Otherwise list clauses (newest first), optionally filtered by category_id or a text query, and set include_categories to also return the category tree. Returns each clause's id, title, category, language, and current version. |
Save clausesave_clause | stella clause save | write | Create or update a clause in the organization's clause library. Omit clause_id to create (title and body required); pass clause_id to update. body is an ordered array of paragraphs, each with text and optional style, level, runs, list_kind, list_level, is_directive, directive_kind, and directive_expression. category_id, language, description, usage_notes, and metadata accept null to clear them on update. Set snapshot_version true on an update to also append a version snapshot of the body. Returns the clause id. |
Delete clausedelete_clause | stella clause delete | destructive | Permanently delete a clause and all its variants and versions from the organization's clause library. This is irreversible. |
List playbookslist_playbooks | stella playbook list | read | List the review playbooks in this organization, or read one in detail. Pass playbook_id to get a playbook's positions (the issues it reviews, their questions, tiered rules, and ideal language), scope, and description. Otherwise list playbooks (newest first). Returns each playbook's id, name, and description. |
Save playbooksave_playbook | stella playbook save | write | Create a review playbook, or add, change, and remove positions in one. Omit playbook_id to create (name required); pass playbook_id and expected_updated_at to update. positions lists only what is added or changed, never the whole playbook: an entry with source_id replaces that stored position whole, an entry without one is added. Entries are checked one by one; a refused entry comes back in issues with the fix and the rest are saved. A saved playbook is a draft that a person approves in the editor before it can run. Returns the playbook id, the updatedAt to pass as the next expected_updated_at, and each written position's sourceId. |
Run playbookrun_playbook | stella playbook run | write | Run a review playbook over a matter's documents. Materializes the playbook's extraction and verdict columns onto the matter's table and starts the AI review; findings populate asynchronously. Pass matter_id and playbook_id. Returns the number of columns queued for review. |
List time entrieslist_time_entries | stella time-entry list | read | List time entries in a matter, or read one entry in detail. Pass time_entry_id to get a single entry. Otherwise pass matter_id to list the matter's entries, optionally filtered by entity_id (the item the time was logged against), user_id, a date-worked range (date_from/date_to, ISO YYYY-MM-DD), and status. Returns each entry's id, entity, user, date, minutes, rate (minor currency units), currency, narrative, and status. The response includes visibility: all_entries for billing reviewers, or own_entries when the caller can see only their own time; own_entries is not a matter total. |
Save time entrysave_time_entry | stella time-entry save | write | Create or update a time entry. Omit time_entry_id to create (matter_id, date_worked, timezone_id, duration_minutes, and narrative required; entity_id is optional context). Pass time_entry_id to update: set date_worked (with timezone_id), duration_minutes, narrative, invoice_narrative, billable, no_charge, entity_id (move the entry), task_code, and/or activity_code. The timekeeper's effective rate is resolved server-side. Durations are whole minutes. Returns the time entry ID. |
Delete time entrydelete_time_entry | stella time-entry delete | destructive | Delete a time entry. A draft entry is permanently deleted; an approved entry is written off instead (kept for the audit trail, excluded from billing). A billed entry cannot be deleted until its invoice is reverted. Returns whether the entry was hard-deleted. |
Resolve billing rateresolve_rate | stella rate resolve | read | Resolve the effective hourly rate for a user on a given date in a matter, using its default rate table (user-specific rate first, then the table default). Returns the hourly rate in integer minor currency units (e.g. cents) and the currency, or nulls when no rate applies. |
List invoiceslist_invoices | stella invoice list | read | List invoices in a matter, or read one invoice in detail. Pass invoice_id to get a single invoice with its line items (time entries and expenses). Otherwise pass matter_id to list the matter's invoices. Returns each invoice's id, number, reference, status, dates, currency, and total (integer minor currency units). |
Get usageget_usage | stella usage get | read | Read the organization's current usage entitlement: plan, seats, billing period, and how many usage units (AI credits) remain this period. Returns { entitlement: null } when the organization has no active plan. Requires organization-settings management access. |
List audit loglist_audit_log | stella audit-log list | read | Read the organization's audit trail (compliance view). Returns audit entries newest first, each with its action, resource type and id, actor user id, matter, timestamp, and change detail. Filter by matter_id, action, resource_type (with optional resource_id), user_id, and a created-at range (from/to, ISO date-time). Paginate with limit and cursor. Requires organization audit-log access. |
Prepare feedbackprepare_feedback | stella feedback prepare | read | Draft a bug, idea, missing-capability or docs report for the stella maintainers and get it back sanitized. Sends nothing: emails, UUIDs and ULIDs, secret-looking tokens, non-allowlisted URLs and IP addresses are redacted server-side, and the result is the report for you to show the human verbatim. Once they approve it, call submit_feedback with that same report and confirm: true. Describe the problem, then what you expected against what happened, then the steps. Refer to people by role, never by name. Never paste document text, matter or client names, or ids. Put the requestId of a failed call in context.request_id. The reporter's identity is stored privately and is never published. |
Submit feedbacksubmit_feedback | stella feedback submit | write | File the report prepared by prepare_feedback with the stella maintainers. This sends the content out of the workspace: it is stored, emailed to the maintainers, and may be posted as a public issue, so it is refused without confirm: true. emails, UUIDs and ULIDs, secret-looking tokens, non-allowlisted URLs and IP addresses are redacted server-side again here, and the reporter's identity is stored privately and never published. Returns a receipt to give the human. Re-sending identical content within a day returns the original receipt and sends nothing. |
List capabilitieslist_capabilities | stella capability list | read | List the automatable capabilities beyond the curated tools: every safe backend operation (CRUD, exports, processing triggers) reachable through invoke_capability. Paginated; filter by domain (the id prefix, e.g. "time-entries") or access (read/write). Each item gives the capability id, description, access/destructive, its transport (whether this path can run it, which field takes a file, and what to use instead), handlerKind (workspace or root), and every OAuth scope it needs. Use describe_capability for the full input schema. |
Describe capabilitydescribe_capability | stella capability describe | read | Describe one capability in full: its live input JSON Schema (body/params/query), required OAuth scopes, member permissions, whether it is destructive, its handler kind (workspace/root), its disposition, and its transport (whether this path can run it, which field takes a file, and what to use instead). Call this before invoke_capability to learn exactly what input to pass. |
Invoke capabilityinvoke_capability | stella capability invoke | write | Invoke one capability by id (from list_capabilities/describe_capability). Pass its input under input: { body, params, query } (no other top-level argument is accepted); matter-scoped capabilities take the target matter as input.params.matterId. Real authority is enforced per capability: the session must hold the capability's scope and your member role its permissions. Set validate_only: true to check input without running it; destructive capabilities require confirm: true after human approval. |
audit-logs.listcapability:audit-logs.list | stella capability audit-logs list | read | Read the organization's audit trail (compliance view). Returns audit entries newest first, each with its action, resource type and id, actor user id, matter, timestamp, and change detail. Filter by matterId, action, resourceType (with optional resourceId), userId, and a created-at range (from/to, ISO date-time). Paginate with limit and cursor. Requires organization audit-log access. |
billing-codes.createcapability:billing-codes.create | stella capability billing-codes create | write | Add one task or activity billing code to a matter's code list. The code string must be unique within the matter for its type, so the same literal may exist once as a task code and once as an activity code; a duplicate of the same type is refused, and the matter has a fixed cap on how many codes it may hold. |
billing-codes.deletecapability:billing-codes.delete | stella capability billing-codes delete | destructive | Permanently delete one billing code (a task or activity code) from a matter's code list. Time entries already recorded under it keep their stored code string, so past entries are not rewritten; the code just stops being offered. |
billing-codes.listcapability:billing-codes.list | stella capability billing-codes list | read | List a matter's task and activity billing codes, ordered by sort order then code, with cursor pagination. Filter by type (task or activity) and by whether the code is still active. |
billing-codes.updatecapability:billing-codes.update | stella capability billing-codes update | write | Change one billing code's code string, label, sort order, or active flag in a matter. Only the fields you pass are written, the code string must stay unique within the matter for its type, and deactivating a code stops it being offered without rewriting entries already recorded under it. |
case-law.analysis.generatecapability:case-law.analysis.generate | stella capability case-law analysis-generate | write | Read the structural analysis of one court decision, starting generation when there is none yet. Returns status done with the stored analysis, generating while a run is in flight (poll until it is done), or error when the decision is unknown or its text could not be parsed. Generation runs in the background and a call made while one is already running does not start a second. |
case-law.ingestion.statuscapability:case-law.ingestion.status | stella capability case-law ingestion-status | read | Report case-law corpus ingestion health for operators. Per source: adapter key and whether an adapter is still registered for it, enabled flag, sync cursor, decisions held against the total the publisher reports, decisions inserted in the last hour and last day, failures and the top error types in the last day, the last ingestion event, and standing reconciliation counts (slices surveyed, short slices, parked and terminal items). Requires organization audit-log access. |
case-law.matter-links.batch.createcapability:case-law.matter-links.batch.create | stella capability case-law matter-links-batch-create | write | Link a selection of case-law decisions to the current matter in one call, each with an optional note. Best effort and idempotent: the response reports every decision asked for, under `linked` (newly pinned), `existing` (already pinned, returned unchanged with the note recorded earlier) or `rejected` with a reason — `not_found` for a decision that is not in the corpus, `limit` for one that would push the matter past its maximum number of links. A decision already pinned never counts against that maximum. The whole call is one transaction: either every link it reports lands, or none does. Repeat the call with the same items safely; the second call reports them as `existing`. At most as many items as the matter may hold links. |
case-law.matter-links.createcapability:case-law.matter-links.create | stella capability case-law matter-links-create | write | Link one case-law decision from the corpus to the current matter, with an optional note. A decision that is not in the corpus is a 404; a decision already linked to this matter returns the existing link unchanged, note included, even when the matter is full, because re-linking adds nothing. The call is refused only when it would add a link past the matter's maximum. To link a selection at once, use the batch call instead of repeating this one. |
case-law.matter-links.deletecapability:case-law.matter-links.delete | stella capability case-law matter-links-delete | destructive | Unlink one case-law decision from a matter, deleting the link and the note recorded on it. The decision itself stays in the case-law corpus and can be linked again. |
case-law.matter-links.listcapability:case-law.matter-links.list | stella capability case-law matter-links-list | read | List the case-law decisions linked to the current matter, newest link first, each with its note and the decision's row facts: case number, slug, ECLI, court, country, language, the decision's other language versions, date, type, citation count and headnote preview. Returns the whole set up to the per-matter link cap; there is no pagination. |
catalogue.install-skillcapability:catalogue.install-skill | stella capability catalogue install-skill | write | Install one catalogue skill into the organization by slug, at team scope (the default) or private scope. Team scope requires admin or owner. The skill is stored as bundled content, so it cannot be edited afterwards. Refused when that slug is already installed at the same scope, or when the scope's skill limit is reached. |
catalogue.list-cataloguecapability:catalogue.list-catalogue | stella capability catalogue list-catalogue | read | List the tool catalogue for the signed-in user's organization: curated skills, MCP connectors, and native tools, plus the organization's own custom skills and custom MCP connectors as synthetic entries. Each entry reports its install state, whether it is enabled, whether it is locked (a baseline capability that cannot be toggled), whether it is recommended for the organization's practice jurisdictions, and the handles the uninstall paths need. The practice jurisdictions behind those recommendations are returned alongside. |
chat.delete-threadcapability:chat.delete-thread | stella capability chat delete-thread | destructive | Permanently delete one of your own chat threads with its messages and the files uploaded to it; the stored file objects are deleted, not just dereferenced. Succeeds silently when the thread does not exist or belongs to someone else. |
chat.export.createcapability:chat.export.create | stella capability chat export-create | write | Export one assistant chat message as a DOCX document with the selected citation style. Returns a short-lived download URL. |
chat.fork.createcapability:chat.fork.create | stella capability chat fork-create | write | Fork one of your own chat threads into a new thread that keeps the history up to a chosen answer, so another direction or model can be explored without touching the original. The boundary must be an assistant message: a fork branches off an answer, not off an ask. The new thread id is minted by the caller, which makes a retried fork return the existing copy instead of duplicating it. Attachments are duplicated, never shared: deleting either thread leaves the other's files intact. The fork records where it came from and starts with no compaction state of its own. |
chat.get-messagescapability:chat.get-messages | stella capability chat get-messages | read | Read the most recent page of one of your own chat threads, together with the thread's context matters, model and reasoning-effort settings, anonymization flag, whether web search is available and enabled, and an estimate of the model context the next send would carry. Pass matterId for a matter-scoped thread and omit it for a global one; a scope that contradicts the stored thread is rejected. With allowMissingThread, a thread that does not exist yet returns an empty draft instead of a 404. Page further back with chat.get-older-messages. |
chat.get-older-messagescapability:chat.get-older-messages | stella capability chat get-older-messages | read | Page backwards through one of your own chat threads using the olderCursor a previous read returned. Returns only the message page and the next cursor, without the thread settings and context estimate that chat.get-messages carries. The thread must be yours and the matterId scope must match the one it was created in. |
chat.get-threadscapability:chat.get-threads | stella capability chat get-threads | read | List your own chat threads, most recently active first, split into global threads and groups per matter. Threads with no messages, and threads belonging to a matter that is being deleted, are left out. search matches the thread title or the matter name; paginate with limit and cursor. |
chat.rename-threadcapability:chat.rename-thread | stella capability chat rename-thread | write | Set the title of one of your own chat threads. The new title is marked as user-chosen, so automatic title generation can never overwrite it afterwards. A thread that does not exist in the requested scope is a 404: this never creates one. |
chat.update-threadcapability:chat.update-thread | stella capability chat update-thread | write | Turn web search on or off for one of your own chat threads. Unlike chat.rename-thread this is an upsert: when no thread exists under that id it is created as an empty placeholder carrying the flag, so a draft can record the setting before its first message is sent. |
clauses.categories-createcapability:clauses.categories-create | stella capability clauses categories-create | write | Create a category in the organization's clause library taxonomy, optionally under a parent category. Refused once the organization holds its maximum number of categories, or when the named parent does not exist. |
clauses.categories-deletecapability:clauses.categories-delete | stella capability clauses categories-delete | destructive | Delete one category from the organization's clause library taxonomy. No clause is deleted: clauses filed under the category become uncategorized, and its child categories are re-parented to its own parent. |
clauses.categories-listcapability:clauses.categories-list | stella capability clauses categories-list | read | List the organization's clause categories in sort order, each with its id, parent, name, description, and sort order. The taxonomy is capped per organization and comes back whole; there is no pagination. |
clauses.categories-updatecapability:clauses.categories-update | stella capability clauses categories-update | write | Rename or re-describe one clause category, move it under a different parent (or to the root by passing null), or change its sort order. Only the fields you pass are written. A category cannot become its own parent, and a move that would make the tree circular is refused. |
clauses.createcapability:clauses.create | stella capability clauses create | write | Create a clause in the organization's clause library: a title and an ordered body of paragraphs, plus optional category, language, description, usage notes, and metadata. The clause starts at version 1 with a matching version snapshot. Refused when the organization is at its clause limit or the category does not exist. |
clauses.deletecapability:clauses.delete | stella capability clauses delete | destructive | Permanently delete a clause and all its variants and versions from the organization's clause library. This is irreversible. |
clauses.getcapability:clauses.get | stella capability clauses get | read | Read one clause in full: its body, category, language, description, usage notes, metadata, and current version number, plus every variant in sort order and the list of its stored versions. Use clauses.read-version for the body of a particular version. |
clauses.listcapability:clauses.list | stella capability clauses list | read | List the organization's clause library. Without q, clauses come back newest first with cursor pagination; with q they are matched on the title as a substring or on the clause text as a prefix search, ordered by title, and no cursor is returned. Filter by categoryId. Items carry title, category, language, description, and current version but not the body: read that with clauses.get. |
clauses.read-versioncapability:clauses.read-version | stella capability clauses read-version | read | Read the stored body of one specific clause version, with its version number and creation time. Use clauses.get for the clause's current body and its version list, and clauses.versions-restore to bring an old version back into use. |
clauses.rewritecapability:clauses.rewrite | stella capability clauses rewrite | write | Rewrite the prose of a clause body with the model, following a free-text instruction plus the clause title and usage notes when supplied. The body goes in and the revised body comes back, so this works on an unsaved draft as well; nothing is stored. The model is instructed to keep paragraph order, lists, and every {{ }} template marker, and to change ordinary paragraph text only, but the result is not verified against the original, so review a rewrite before saving one that carries markers. A changed paragraph loses its inline formatting. Consumes AI usage. |
clauses.template-slot-previewcapability:clauses.template-slot-preview | stella capability clauses template-slot-preview | read | Resolve one template's clause slots to the plain text of the clauses linked to them, keyed by slot name, using the same version and variant rules the fill path applies, so the preview matches the filled document. Slots that are unlinked, or whose target version cannot be resolved, are left out and keep their marker visible. |
clauses.updatecapability:clauses.update | stella capability clauses update | write | Change a clause's title, category, language, body, description, usage notes, or metadata; only the fields you pass are written. By default a new body is saved as the working copy without touching history. Pass snapshotVersion true to also append a version snapshot and move the current version forward: that is skipped when the body is identical to the latest snapshot, and refused when the clause is at its version limit. |
clauses.variants-createcapability:clauses.variants-create | stella capability clauses variants-create | write | Add a variant, an alternative wording of a clause carrying its own label, to one clause. Refused when the clause does not exist in this organization or already holds its maximum number of variants. |
clauses.variants-deletecapability:clauses.variants-delete | stella capability clauses variants-delete | destructive | Permanently delete one variant (an alternative wording) of a clause, leaving the clause and its other variants in place. Templates that used the variant fall back to the clause itself and keep only a stale label snapshot of what was removed. |
clauses.variants-listcapability:clauses.variants-list | stella capability clauses variants-list | read | List one clause's variants in sort order, each with its label, body, and position. A clause that does not belong to this organization is a 404. |
clauses.variants-updatecapability:clauses.variants-update | stella capability clauses variants-update | write | Change one variant's label, body, or position within its clause; only the fields you pass are written. |
clauses.versions-diffcapability:clauses.versions-diff | stella capability clauses versions-diff | read | Return a plain-text, line-level diff between one stored clause version and the clause's current body. An empty segment list means the two are identical. This is what backs the what-changed disclosure shown on a template link pointing at an outdated version. |
clauses.versions-restorecapability:clauses.versions-restore | stella capability clauses versions-restore | write | Restore a stored clause version by copying its body onto the clause as a new version. History is append-only: the older versions stay and the version number moves forward rather than back. The body is read server-side from the version id, never supplied by the caller. Refused when the clause is at its version limit. |
clauses.versions-summarizecapability:clauses.versions-summarize | stella capability clauses versions-summarize | write | Summarize in prose what changed between one stored clause version and the clause's current body, over the same diff clauses.versions-diff returns. Returns summary null when the two are identical, skipping the model call. Consumes AI usage. |
contacts.business-registries-lookupcapability:contacts.business-registries-lookup | stella capability contacts business-registries-lookup | read | Look up a company in a public business register (ARES, Brreg, Companies House, EDGAR, GCIS, KRS, ORSR, PRH, recherche-entreprises, or VIES). Pass a canonical identifier (company/registration number, VAT number) for an exact match, or a company name to search where the register supports it. Returns registered names, addresses, and registry-specific details. |
contacts.createcapability:contacts.create | stella capability contacts create | write | Create a contact in the organization address book. type (person or organization), displayName, and the contact id are supplied in the body; names, emails, phones, addresses, tags, registration and tax numbers, bank and billing details, default hourly rate, payment terms, and originating or responsible attorneys are optional. Refused once the organization holds its maximum number of contacts, or when an attorney id is not a member of the organization. |
contacts.deletecapability:contacts.delete | stella capability contacts delete | destructive | Permanently delete a contact from the organization address book. Rejected while the contact is still the client of any matter. This is irreversible. |
contacts.getcapability:contacts.get | stella capability contacts get | read | Read a contact by ID. |
contacts.importcapability:contacts.import | stella capability contacts import | write | Import a reviewed batch of up to 500 contacts into the organization address book. Supply a caller-generated importRequestId: replaying it with the same rows returns the original result, while changing the rows is rejected. taxIdScheme selects tax-id validation (none, or br_cpf_cnpj checksums with duplicate detection). Rows failing the import rules, duplicates, and over-limit rows are skipped; all accepted rows commit atomically. |
contacts.listcapability:contacts.list | stella capability contacts list | read | List the organization address book alphabetically by display name, with cursor pagination. Filter by type (person or organization) and by q, which matches a substring of the display name only. Each item carries the names, emails, phones, tags, and the number of matters the contact is the client of. Use contacts.search for a short unpaginated lookup that also matches first, last, and organization names. |
contacts.searchcapability:contacts.search | stella capability contacts search | read | Look up contacts by name, for a picker: q matches a substring of the display name, first name, last name, or organization name, normalized so Arabic spellings match, optionally narrowed by type. Returns at most 20 contacts ordered by display name with no cursor; use contacts.list to page the whole address book. |
contacts.updatecapability:contacts.update | stella capability contacts update | write | Change a contact in the organization address book, writing only the fields you pass and clearing a nullable one when you pass null. metadata is merged into the stored object rather than replacing it. An attorney id that is not a member of the organization is refused, and an unknown contact is a 404. |
document-translations.preparecapability:document-translations.prepare | stella capability document-translations prepare | read | Inspect the current DOCX version and prepare its comment requirements for translation. |
document-translations.runs.createcapability:document-translations.runs.create | stella capability document-translations runs-create | write | Start a background document translation and save only the completed output as a new document. |
document-translations.runs.getcapability:document-translations.runs.get | stella capability document-translations runs-get | read | Read a document translation run and its progress. |
document-types.createcapability:document-types.create | stella capability document-types create | write | Add one document type to the organization's classification list. Its key is slugified from the label and de-duplicated automatically, and the type is appended at the end of the display order. Refused once the organization holds the maximum number of document types. |
document-types.deletecapability:document-types.delete | stella capability document-types delete | destructive | Remove one document type from the organization's classification list so it can no longer be assigned. Documents already classified as that type keep their stored label; the call is refused while any playbook is scoped to the type. |
document-types.listcapability:document-types.list | stella capability document-types list | read | List the organization's document types in display order, each with its id, immutable key, label, and sort order. The starter taxonomy is seeded when the organization is created, so this only ever reads. The list is bounded and returned whole rather than paginated. |
document-types.reordercapability:document-types.reorder | stella capability document-types reorder | write | Set the display order of the organization's document types: each id's position in orderedIds becomes its sort order. Ids that do not belong to the organization are ignored, and any type you leave out of the list keeps the sort order it already had. Ordering is cosmetic, so no audit event is recorded. |
document-types.updatecapability:document-types.update | stella capability document-types update | write | Rename one document type. Only the label changes: the key is immutable, and the display order is set through document-types.reorder. |
documents.comparecapability:documents.compare | stella capability documents compare | write | Create tracked-changes DOCX redlines between stored versions of one document in a matter. Select an explicit base and up to 8 targets, or compare one target with its immediate predecessor. Strict mode refuses an unverified redline; best-effort returns it with explicit verification failures. Output preview compares without writing; output download writes each redline to temporary storage and returns an expiring link without saving it to the document; output version explicitly saves each successful redline as a derived document version without replacing the current version. The operation may partially succeed across multiple targets, so inspect every result status. Saving the same comparison inputs again returns the same derived version; retrying a lost response does not create a duplicate. Folio-exact review preserves both document endpoints; compatibility reports when pending history requires Folio and may be discarded by Word on save. Created results include an openUrl and a temporary DOCX download URL; downloadable results carry the temporary link alone. Show these links to the user; if download delivery is unavailable, the redline is already saved: open it in stella instead of creating it again. |
entities.bilingual.createcapability:entities.bilingual.create | stella capability entities bilingual-create | write | Create a two-column bilingual copy of a DOCX document (source text on the left, a copy to translate on the right) as a new document. |
entities.clipcapability:entities.clip | stella capability entities clip | write | Save an external source as a link entity in the current matter: a title and url, plus optional snippet, citation, jurisdiction, and source type. No file is stored, only the reference and its metadata. Refused once the matter holds its maximum number of entities. |
entities.copy-to-mattercapability:entities.copy-to-matter | stella capability entities copy-to-matter | destructive | Copy a document or folder subtree into another matter, or move it with deleteSource, which permanently deletes the source documents and their no-longer-referenced files. A copy starts a new version history; a move carries the existing one across, so every printed reference keeps resolving. Fields whose property has no counterpart in the target matter are dropped rather than remapped, so a move can lose column values; read-only entities are refused. |
entities.createcapability:entities.create | stella capability entities create | write | Create an empty document, folder, or task in a matter (kind defaults to document) with a name and an optional parent folder. Nothing is attached: use entities.upload or the uploads flow to bring in a file, and entities.create-blank-document for a document that starts from an empty DOCX. Refused when the matter is at its entity limit or the parent is not a usable folder in this matter. |
entities.create-blank-documentcapability:entities.create-blank-document | stella capability entities create-blank-document | write | Create a document in a matter whose file is a fresh empty DOCX built from the stella template, optionally inside a parent folder. Returns the entity, its file field, and the file name, so it can be opened in the editor straight away. Use entities.create for a document with no file at all. |
entities.create-from-legal-sourcecapability:entities.create-from-legal-source | stella capability entities create-from-legal-source | write | Compile a plain-text legal draft written in stella's legal-source markup into a DOCX and store it as a new document in the current matter. Returns the new entity and its file field plus a ready-made link and mention for chat. Refused with a structural-repair error when the source cannot be compiled, and when the generated file exceeds the document size limit or the matter is at its entity limit. |
entities.deletecapability:entities.delete | stella capability entities delete | destructive | Permanently delete documents, folders, or tasks from one matter, together with their versions, field values, and stored files. Refused while any of them is read-only or has a document-processing run in flight; unlike entities.delete-version this is a real delete, not a tombstone. |
entities.delete-versioncapability:entities.delete-version | stella capability entities delete-version | destructive | Tombstone one version of a document: it disappears from listings, downloads, and restores, but the row and its stored file are retained for chain of custody. Deleting the current version promotes the next surviving one; the last remaining version, a read-only document, and a version still being processed are refused. |
entities.duplicatecapability:entities.duplicate | stella capability entities duplicate | write | Copy one document, or a folder with its whole subtree, inside the same matter, placing the copy alongside the original. Stored files are copied too, so the copies own their own bytes and get their own text extraction and PDF and thumbnail derivatives. Use entities.copy-to-matter to copy into a different matter. |
entities.getcapability:entities.get | stella capability entities get | read | Read one document, folder, or task in a matter: its kind, name, current version id, creation time and document reference, that version's field values, and which field is the current text-extraction source. Use entities.read-version-by-id to read a historical version, and entities.read-versions for the version list. |
entities.listcapability:entities.list | stella capability entities list | read | List a matter's documents, folders, and tasks as table rows, using the same filters, sorts, and search the matter's views use, with cursor pagination. fieldMode and fieldIds choose which column values come back, excludedKinds drops kinds you do not want, and previewableForAi keeps only documents whose content a model can read. Use entities.read-filesystem-tree for the same query shaped as a folder tree, and entities.get to read one row in full. |
entities.list-filescapability:entities.list-files | stella capability entities list-files | read | List every document in a matter that has an uploaded file, oldest first with cursor pagination, each with its entity id, name, parent folder, file name, and media type. Documents without a file, and folders and tasks, are left out; use entities.list for the full table with column values. |
entities.list-folderscapability:entities.list-folders | stella capability entities list-folders | read | List the folders of a matter, oldest first with cursor pagination, each with its id, name, and parent folder. Documents and tasks are left out; use entities.read-filesystem-tree for the folder tree with the documents in it. |
entities.movecapability:entities.move | stella capability entities move | write | Move one document, folder, or task into another folder of the same matter, or out to the matter root by passing parentId null. The target must be a folder in this matter, a folder may not be moved into itself or into one of its own descendants, and a read-only entity is refused. |
entities.ocr.createcapability:entities.ocr.create | stella capability entities ocr-create | write | Queue an unencrypted PDF field for the next searchable-text recognition batch. Returns the durable run and reports when that source was already processed. |
entities.organize-suggestionscapability:entities.organize-suggestions | stella capability entities organize-suggestions | write | Propose a folder placement and a tidied file name for up to 100 documents of a matter, given the folders that already exist plus an optional locale and free-text instructions. Returns one suggestion per file (folder path, suggested name, detected date, document type) and the empty folders it suggests removing. Suggestions only: nothing is moved, renamed, or deleted, so apply what you want with entities.move and entities.rename. Per-document summaries are generated and cached where missing, and the call consumes AI usage. |
entities.read-filesystem-treecapability:entities.read-filesystem-tree | stella capability entities read-filesystem-tree | read | Read a matter's folders and documents as one unpaginated tree, using the same filters, sorts, and search as the table listings; tasks are excluded. When a filter or search hides intermediate folders, their parent links come back separately as ancestorLinks, so a matched row's full path can still be resolved without those folders entering the tree itself. |
entities.read-summariescapability:entities.read-summaries | stella capability entities read-summaries | read | List a matter's documents, folders, and tasks as bare id and name pairs, newest first with cursor pagination. The cheapest listing available: no column values, no file metadata, no filters. Use entities.read-summaries-count for the total and entities.list when you need column values or filtering. |
entities.read-summaries-countcapability:entities.read-summaries-count | stella capability entities read-summaries-count | read | Count all documents, folders, and tasks in a matter. The companion total for entities.read-summaries, whose pages carry no count of their own. |
entities.read-version-by-idcapability:entities.read-version-by-id | stella capability entities read-version-by-id | read | Read one specific version of a document in a matter: its version number, stamp, creation time, and the field values stored on that version. A version tombstoned by entities.delete-version reads as not found. Use entities.get for the current version. |
entities.read-versionscapability:entities.read-versions | stella capability entities read-versions | read | List one document's version history, newest first, with a before cursor for older pages. Each version carries its number, stamp, label, description, the words added and removed against its predecessor, its author, and the file attached to it; tombstoned versions are left out. The response also names the entity's current version. |
entities.read-windowcapability:entities.read-window | stella capability entities read-window | read | Read a window of a matter's documents, folders, and tasks with the same filters, sorts, search, and field selection as entities.list, plus the find filter, but with the page bounds the virtualized table scrolls by (200 rows by default). Prefer entities.list unless you are filling a table viewport. |
entities.renamecapability:entities.rename | stella capability entities rename | write | Rename one document, folder, or task in a matter. For a document the stored file name is renamed to match, so the table's file column stays in step with the entity name. A read-only entity is refused. |
entities.restore-versioncapability:entities.restore-version | stella capability entities restore-version | write | Restore a historical document version by copying it into a new current version; the prior history remains intact. |
entities.update-version-descriptioncapability:entities.update-version-description | stella capability entities update-version-description | write | Set or clear the free-text description on one version of a document, up to 1024 characters. An annotation only: no file and no field value changes. A version tombstoned by entities.delete-version is refused. Use entities.update-version-label for the short label instead. |
entities.update-version-labelcapability:entities.update-version-label | stella capability entities update-version-label | write | Set or clear the short label on one version of a document, up to 128 characters, for marking a version as a draft, an execution copy, and so on. An annotation only, like entities.update-version-description, which carries the longer note. A tombstoned version is refused. |
entities.version-diffcapability:entities.version-diff | stella capability entities version-diff | read | Return a plain-text, line-level diff of one document version's DOCX against its immediate predecessor; the first version is diffed against an empty document. Both texts are resolved server-side from the ids, and an empty segment list means nothing changed. Use documents.compare for a DOCX redline between versions you choose. |
entities.version-summarizecapability:entities.version-summarize | stella capability entities version-summarize | write | Summarize in prose what changed between one document version and its predecessor, over the same server-resolved text diff entities.version-diff returns. Returns summary null for identical versions, skipping the model call entirely. Consumes AI usage. |
entity-views.createcapability:entity-views.create | stella capability entity-views create | write | Save a personal Table or Kanban view across accessible matters. Layout filters and sorts use the same contract as matter views. |
entity-views.deletecapability:entity-views.delete | stella capability entity-views delete | destructive | Delete one personal cross-matter view. This does not delete its records or proposals. |
entity-views.listcapability:entity-views.list | stella capability entity-views list | read | List the current user's saved cross-matter views in tab order. The complete list is bounded by the per-user creation limit. |
entity-views.reordercapability:entity-views.reorder | stella capability entity-views reorder | write | Reorder every personal cross-matter view. Supply each of the user's view IDs exactly once. |
entity-views.rows.listcapability:entity-views.rows.list | stella capability entity-views rows-list | read | Read a table or Kanban window across accessible matters, with the same filters, sorts, fields and cursors as a matter view. With `inboxView`, the window also holds the caller's Inbox signals for that view, ordered by the same sorts under one cursor, and limits tasks to the view's lifecycle slice. Task rows carry their governed-work risk as of `asOf`. |
entity-views.updatecapability:entity-views.update | stella capability entity-views update | write | Change the name or layout of one personal cross-matter view. Other users' views cannot be changed. |
expenses.createcapability:expenses.create | stella capability expenses create | write | Record a disbursement in the current matter against a work item (matterId: the document, folder, or task the cost belongs to). amount is an integer in minor currency units with a 3-letter currency; dateIncurred is read in the timezoneId you pass and is refused when it is in the future or older than the entry-age limit. The expense starts as a draft. |
expenses.deletecapability:expenses.delete | stella capability expenses delete | destructive | Delete an expense: a draft expense is permanently deleted, and any other unbilled expense is written off instead (kept for the audit trail, excluded from billing). A billed expense is refused until its invoice is reverted; the return value says which of the two happened. |
expenses.listcapability:expenses.list | stella capability expenses list | read | List expenses in a matter, earliest date first, with cursor pagination. Filter by userId, work item (matterId), a date-incurred range (dateFrom/dateTo, ISO YYYY-MM-DD), status, category, and billable. Each item carries the amount in minor currency units, currency, category, markup percentage, status, and the recording user's name. |
expenses.updatecapability:expenses.update | stella capability expenses update | write | Change a draft or approved expense in a matter: its date, amount, currency, category, description, invoice description, billable flag, markup, work item, or status (draft or approved). A billed or written-off expense is refused; use expenses.delete to write off an unbilled one. |
fields.kanban-placement.updatecapability:fields.kanban-placement.update | stella capability fields kanban-placement-update | write | Move one entity across writable Kanban axes in one transaction. The request may change a task status, up to two property values, or both. |
fields.mark-column-flagcapability:fields.mark-column-flag | stella capability fields mark-column-flag | write | Set or clear the verified or locked flag on one column's cells across every document a filter selects in a matter, working in batches until the whole selection is covered. Folders and tasks are never touched. Returns how many cells changed plus an addedAt stamp: pass that stamp back as onlyAddedAt with set false to undo exactly this mark and leave flags from other marks alone. Pass groupByPropertyId and groupValue to restrict the batch to one group of a grouped view. |
fields.update-cell-metadatacapability:fields.update-cell-metadata | stella capability fields update-cell-metadata | write | Set the manual flags and lock state of one cell, meaning one document's value for one property. manualFlags is merged against baseManualFlags rather than overwritten, so flags added or removed by someone else since you read the cell survive; when no flags remain and the cell is not locked, the metadata row is deleted. Use fields.upsert-by-id to change the cell's value itself, and fields.mark-column-flag to flag a whole column at once. |
fields.upsert-by-idcapability:fields.upsert-by-id | stella capability fields upsert-by-id | write | Set a document's value for a property (a cell in the matter's table). Pass the document entityId, the propertyId (from list_properties), and a content object whose 'type' matches the property's value type: text (value: string), single-select (value: string or null), multi-select (value: array of strings), date (value: ISO YYYY-MM-DD or null), or int (value: integer, optional currency: 3-letter ISO code). An empty value clears the cell. |
flows.createcapability:flows.create | stella capability flows create | write | Create an automation flow definition in the organization: name, description, ordered steps, a trigger, and whether it is enabled. The definition is validated before it is stored, and a schedule trigger is registered with the scheduler afterwards. Refused once the organization holds its maximum number of flows. |
flows.deletecapability:flows.delete | stella capability flows delete | destructive | Permanently delete one automation flow definition from the organization and remove its schedule trigger. Past runs survive on their own definition snapshot; an enabled flow with runs in flight is deleted without warning. |
flows.getcapability:flows.get | stella capability flows get | read | Read one flow definition: its name, description, steps, trigger, and enabled flag. Use flows.list to browse the organization's flows and flows.run-detail to read a run of one. |
flows.listcapability:flows.list | stella capability flows list | read | List flow definitions available to the organization, with optional status filtering and pagination. |
flows.run-cancelcapability:flows.run-cancel | stella capability flows run-cancel | write | Cancel a flow run that is still in progress in a matter, returning the run id and the status it settled on. Work already committed by steps that finished is not undone. |
flows.run-detailcapability:flows.run-detail | stella capability flows run-detail | read | Read one flow run, including its current status, inputs, outputs, steps, and review state. |
flows.run-listcapability:flows.run-list | stella capability flows run-list | read | List flow runs in a matter, including lifecycle state and pagination metadata. |
flows.run-reviewcapability:flows.run-review | stella capability flows run-review | write | Resolve a flow run waiting at a review gate: pass decision approved or rejected, with an optional note. The run continues or stops accordingly, and its id and new status come back. |
flows.run-startcapability:flows.run-start | stella capability flows run-start | write | Start a manual flow run in a matter using a flow definition and optional input documents. Returns the run ID and initial status. |
flows.updatecapability:flows.update | stella capability flows update | write | Replace one flow definition's name, description, steps, trigger, and enabled flag. The whole definition is revalidated and written, so this is not a partial update. The scheduler row is reconciled afterwards, so changing or removing a schedule trigger, or disabling the flow, also stops it from firing. |
invoices.add-entriescapability:invoices.add-entries | stella capability invoices add-entries | write | Attach approved, billable, not-yet-invoiced time entries and expenses to a draft invoice, marking them billed and recomputing the invoice total. Every entry must match the invoice currency, because an invoice is single-currency and nothing is converted. Only draft invoices accept entries, and a concurrent change to the same entries fails with a retryable conflict rather than attaching part of the set. |
invoices.createcapability:invoices.create | stella capability invoices create | write | Create a draft invoice from approved, billable, not-yet-invoiced time entries in a matter, marking them billed and setting the total from their billed minutes and recorded rates. Every entry must already carry the invoice currency, since nothing is converted, and the invoice number must not already be in use. Expenses are added afterwards with invoices.add-entries. |
invoices.deletecapability:invoices.delete | stella capability invoices delete | destructive | Delete a draft invoice and return every time entry and expense on it to approved, unbilled status so they can be invoiced again. Only draft invoices can be deleted: a sent, paid, or void invoice is refused. |
invoices.getcapability:invoices.get | stella capability invoices get | read | Read one invoice with its full line detail: every attached time entry with its work item, every attached expense with its work item, plus status, dates, currency, and total. Use invoices.list for a paginated summary without line items. |
invoices.listcapability:invoices.list | stella capability invoices list | read | List a matter's invoices oldest first with cursor pagination, returning each invoice's number, reference, status, dates, currency, and total, but not its line items. Use invoices.get to read the attached time entries and expenses. |
invoices.remove-entriescapability:invoices.remove-entries | stella capability invoices remove-entries | write | Detach time entries and expenses from a draft invoice, returning them to approved, unbilled status and recomputing the invoice total. Reversible: the same entries can be attached again with invoices.add-entries, and nothing is deleted. Only draft invoices may be changed, and ids that are not on this invoice are skipped without an error. |
invoices.transitioncapability:invoices.transition | stella capability invoices transition | write | Move an invoice through its lifecycle with one action: finalize (draft to finalized), send (finalized to sent), mark_paid (sent to paid), revert_to_draft (finalized back to draft), or void (from finalized, sent, or paid). Voiding also releases every attached time entry and expense back to approved, unbilled status and clears the paid timestamp. An action the invoice's current status does not allow is refused. |
invoices.updatecapability:invoices.update | stella capability invoices update | write | Change a draft invoice's number, invoice date, due date, reference, notes, or currency. Only draft invoices can be edited, and the currency cannot change while any time entry or expense is still attached to the invoice. |
legislation.boe-get-lawcapability:legislation.boe-get-law | stella capability legislation boe-get-law | read | Read one consolidated Spanish law from the BOE by its BOE-X-YYYY-N identifier. The metadata, analysis, fullText, and eli flags select which blocks the BOE returns; this queries the BOE service directly rather than the stella legislation corpus. |
legislation.boe-law-structurecapability:legislation.boe-law-structure | stella capability legislation boe-law-structure | read | Read the block outline of one consolidated Spanish BOE law: its parts, articles, and provisions with the block ids that address them. Use legislation.boe-text-block to fetch the text of a single block. |
legislation.boe-related-lawscapability:legislation.boe-related-laws | stella capability legislation boe-related-laws | read | List the Spanish BOE laws related to one law, narrowed by relationType: modifies, modifiedBy, derogates, derogatedBy, or all (the default). |
legislation.boe-searchcapability:legislation.boe-search | stella capability legislation boe-search | read | Search Spanish consolidated legislation on the BOE. At least one filter is required: free text, title, department code, legal-range code (law rank), subject-matter code, or a publication date range as YYYYMMDD. Paginate with limit and the opaque cursor. This queries the BOE service live; use the search_legislation tool to search the stella legislation corpus instead. |
legislation.boe-text-blockcapability:legislation.boe-text-block | stella capability legislation boe-text-block | read | Read the text of one block of a consolidated Spanish BOE law, addressed by the law identifier and a block id taken from legislation.boe-law-structure. |
legislation.borme-summarycapability:legislation.borme-summary | stella capability legislation borme-summary | read | Read the BORME summary the Spanish commercial registry gazette published on one date, given as YYYYMMDD. |
legislation.getcapability:legislation.get | stella capability legislation get | read | Read one legislation document from the stella corpus by id: its ELI, title, country, language, document type, status, effective and version-validity dates, source links, full text, and parsed structure. Only documents from sources cleared for redistribution are returned; anything else reads as not found. |
legislation.searchcapability:legislation.search | stella capability legislation search | read | Full-text search the stella legislation corpus, returning ranked results with a highlighted snippet and each document's ELI, title, country, language, type, status, and effective date. Filter by jurisdiction, document type, status, source, language, and effective-date range; paginate with limit and cursor. Admitted jurisdiction codes (uppercase): CZE. Omit jurisdiction to search all admitted jurisdictions. Only admitted jurisdictions and sources cleared for redistribution are searched. Read a hit in full with legislation.read; use legislation.boe-search to query the Spanish BOE service directly instead. |
lists.columns.createcapability:lists.columns.create | stella capability lists columns-create | write | Add a column to a list by binding one of the matter's properties to it, with an optional position and a required flag. The list must be active and the property must belong to the same matter. A property can be bound only once per list: binding it again returns the existing column rather than creating a second one, except once the list holds its maximum number of columns, where the cap is checked first and the call is refused. |
lists.createcapability:lists.create | stella capability lists create | write | Create a list in a matter from a name and an optional description; it starts active and empty. Refused once the matter holds its maximum number of lists. Add structure afterwards with lists.sections.create and lists.columns.create. |
lists.generation-candidates.acceptance.createcapability:lists.generation-candidates.acceptance.create | stella capability lists generation-candidates-acceptance-create | write | Accept one candidate from a generation run: create the item it proposes as a task in the matter, optionally in a named section, and copy the candidate's sources onto the new item with their locators and quotes. The candidate is claimed before the item is created, so two concurrent accepts cannot both produce one, and the run flips to committed once no candidate is left pending. A candidate whose sources have disappeared is refused and the reserved item is cleaned up. |
lists.generation-candidates.createcapability:lists.generation-candidates.create | stella capability lists generation-candidates-create | write | Submit the candidates a generation run produced: per candidate a name, description, item type, status, priority, due date, suggested assignees, and the sources it was drawn from, each naming a document version with a locator and optional quote. Every source must be one of the run's own source versions. The run moves from running to review; candidates stay proposals until they are accepted or rejected. |
lists.generation-candidates.listcapability:lists.generation-candidates.list | stella capability lists generation-candidates-list | read | List one generation run's candidates in proposal order with cursor pagination: the proposed item fields, the candidate's status, the item it was accepted as when it has one, and the sources it cites. The run's own status is returned alongside the page. |
lists.generation-candidates.rejection.createcapability:lists.generation-candidates.rejection.create | stella capability lists generation-candidates-rejection-create | write | Reject one pending candidate of a generation run so it is never turned into a list item. Only a pending candidate can be rejected; the run flips to committed once nothing is left pending. Nothing is deleted: the candidate stays in the run with status rejected. |
lists.generations.createcapability:lists.generations.create | stella capability lists generations-create | write | Start a generation run over a list: an instruction plus the document versions to read, each named by its entity and version id and each appearing once. Every source must be a live document version in this matter. Returns the run id with status running; the candidates it produces are submitted separately and leave the run in review. |
lists.generations.listcapability:lists.generations.list | stella capability lists generations-list | read | List one list's generation runs, newest first, with cursor pagination: each run's status, its instruction, and its created, updated, and completed timestamps. |
lists.getcapability:lists.get | stella capability lists get | read | Read one list with its sections in order, its columns (each bound property with its position and required flag), and how many items it holds. The items themselves come from lists.items.list. |
lists.items.activity.listcapability:lists.items.activity.list | stella capability lists items-activity-list | read | Read one list item's activity trail, newest first with cursor pagination: the audit entries recorded against the item and against the task behind it, each with its action, the actor's name, the recorded changes, and the operation label. |
lists.items.comments.createcapability:lists.items.comments.create | stella capability lists items-comments-create | write | Add a comment to one list item. The comment is stored against the item and shows up in its activity trail. |
lists.items.listcapability:lists.items.list | stella capability lists items-list | read | List one list's items in list order with cursor pagination. Each item carries its name, item type, task status, priority, due date, section, position, description, and review status, plus the values it holds for the properties the list binds as columns. |
lists.items.reviews.updatecapability:lists.items.reviews.update | stella capability lists items-reviews-update | write | Record a review decision on one list item, with an optional note. The item's review status becomes that decision and the decision is appended to the item's review history; an unrecognized decision is refused. |
lists.items.sources.createcapability:lists.items.sources.create | stella capability lists items-sources-create | write | Attach a source to one list item: the document version it comes from plus a locator (the whole document, a DOCX block, or a PDF page) and an optional quote. The source must be a live document version in this matter. A new source starts unverified; change that with lists.items.sources.verification.update. |
lists.items.sources.listcapability:lists.items.sources.list | stella capability lists items-sources-list | read | List the sources attached to one list item with cursor pagination, each with the document version it points at, its locator, its quote, and its verification status with who verified it and when. |
lists.items.sources.verification.updatecapability:lists.items.sources.verification.update | stella capability lists items-sources-verification-update | write | Set the verification status of one source attached to a list item. Any status other than unverified records who set it and when; setting it back to unverified clears both. |
lists.items.updatecapability:lists.items.update | stella capability lists items-update | write | Change one list item's section, its ordering position within the list, or its description; only the fields you pass are written, and a section that does not belong to this list is refused. The item's name, status, priority, and due date live on the task behind it, so change those with tasks.update. |
lists.listcapability:lists.list | stella capability lists list | read | List a matter's lists, newest first, with cursor pagination, filtered by status (active by default, archived on request). Each entry carries the name, description, status, and timestamps. |
lists.sections.createcapability:lists.sections.create | stella capability lists sections-create | write | Add a section to an active list, with a name and an optional ordering position. Refused when the list is not active or already holds its maximum number of sections. |
lists.updatecapability:lists.update | stella capability lists update | write | Rename a list, change its description, or move it between active and archived. Only the fields you pass are written, an unrecognized status is refused, and a call that changes nothing is a no-op rather than an error. |
matters.anonymization-allowlist.createcapability:matters.anonymization-allowlist.create | stella capability matters anonymization-allowlist-create | write | Add a never-mask entry to a matter's anonymization allowlist, so a term that detection finds is left in the clear. scope workspace covers the whole matter; scope document covers one document and needs an entityId belonging to this matter. Only matter-scoped entries can be created here, never organization-wide ones. A term already listed is a no-op, until the matter reaches its allowlist limit: the cap is checked before the duplicate is detected, so replaying an existing entry is refused there rather than reported as a no-op. |
matters.anonymization-allowlist.deletecapability:matters.anonymization-allowlist.delete | stella capability matters anonymization-allowlist-delete | destructive | Remove one anonymization allowlist entry from a matter, so the term it exempted is masked again from the next detection run on. Only entries scoped to this matter can be removed here, never organization-wide ones, and output already anonymized is not revisited. |
matters.anonymization-allowlist.listcapability:matters.anonymization-allowlist.list | stella capability matters anonymization-allowlist-list | read | Read the never-mask entries that apply in a matter: the organization-wide ones plus the matter's own and, when entityId is given, that document's own, merged into one list so a detection run can be filtered in a single pass. |
matters.anonymization-terms.createcapability:matters.anonymization-terms.create | stella capability matters anonymization-terms-create | write | Add always-mask terms to a matter's anonymization gazetteer, each with a canonical form, a label, and optional spelling variants. Idempotent per canonical form: a term the matter already holds is left as it is and not counted as inserted. Refused when the batch would push the matter past its term limit. Organization-wide terms are managed separately. |
matters.anonymization-terms.deletecapability:matters.anonymization-terms.delete | stella capability matters anonymization-terms-delete | destructive | Remove one always-mask term from a matter's anonymization gazetteer, so it is no longer force-masked and is redacted only when detection finds it on its own. Only entries scoped to this matter can be removed here, never organization-wide ones; text already sent to a provider is unaffected. |
matters.anonymization-terms.listcapability:matters.anonymization-terms.list | stella capability matters anonymization-terms-list | read | Read a matter's own always-mask terms with their canonical form, label, variants, and enabled flag. Organization-wide terms are not included; read those with organization-settings.read-anonymization-blacklist. |
matters.archivecapability:matters.archive | stella capability matters archive | write | Archive a matter: it stops being writable and is cleared from members' last-visited matter. Reversible with matters.unarchive, and nothing is deleted. Refused while document processing is running in the matter or any timer is still running there. |
matters.cell-retrycapability:matters.cell-retry | stella capability matters cell-retry | write | Re-run the AI extraction for one cell, meaning one document's value for one AI column, in a matter. Refused when the property is not AI-extracted, when the document is read-only, when the cell is locked, and while another workflow is already running in the matter. |
matters.createcapability:matters.create | stella capability matters create | write | Create a new matter (name required; pass clientId to attach a client contact). Returns the matter ID. |
matters.deletecapability:matters.delete | stella capability matters delete | destructive | Permanently delete a matter and all its documents, tasks, fields, and chat history. This is irreversible. |
matters.duplicatecapability:matters.duplicate | stella capability matters duplicate | write | Copy a matter into a new one: its columns with their dependencies, views, members, party contacts, client, billing reference, colour, and lead. With includeContent true its documents, folders, tasks, and their stored files are copied as well; with false the new matter starts empty. The copy takes the organization's next matter number and its name gains a numeric suffix when earlier copies exist. Refused once the organization is at its matter limit. |
matters.listcapability:matters.list | stella capability matters list | read | List the matters you can access. |
matters.matter-contacts-createcapability:matters.matter-contacts-create | stella capability matters matter-contacts-create | write | Link a contact to a matter in a party role (opposing party/counsel, co-counsel, witness, expert witness, third party, judge, mediator, or other). Pass contactId with role to link. |
matters.matter-contacts-deletecapability:matters.matter-contacts-delete | stella capability matters matter-contacts-delete | destructive | Remove one contact from a matter's party list, deleting the link with the party role and notes recorded on it. The contact stays in the organization address book; use contacts.delete to remove it from there. |
matters.matter-members-addcapability:matters.matter-members-add | stella capability matters matter-members-add | write | Add one member of the organization to a matter, granting them access to it. A user who is already a member is a 409, and the call is refused once the matter holds its maximum number of members. Revoke access with matters.matter-members-remove. |
matters.matter-members-removecapability:matters.matter-members-remove | stella capability matters matter-members-remove | destructive | Remove one member from a matter, revoking their live access and cancelling their open desktop editing sessions. Their active work obligations are unassigned rather than deleted; refused when they are the matter's last member, when a timer of theirs is still running, or when they own more work obligations than one call may unassign at once. |
matters.read-justificationscapability:matters.read-justifications | stella capability matters read-justifications | read | Read the stored justifications for the current versions of up to one page of documents in a matter: per extracted cell, the explanation the model gave, the bounding boxes on the source file, and the file fields those boxes belong to. |
matters.read-workflow-statuscapability:matters.read-workflow-status | stella capability matters read-workflow-status | read | Report whether an extraction workflow is running in a matter and describe its most recent run: scope, status, how many targets it covers and how many are done, error code, and start and finish times. |
matters.read-workflow-target-countcapability:matters.read-workflow-target-count | stella capability matters read-workflow-target-count | read | Count the documents an extraction workflow would process in a matter, optionally narrowed to a set of entity ids. Use it before matters.workflow-start to size the run. |
matters.search-preview.getcapability:matters.search-preview.get | stella capability matters search-preview-get | read | Return bounded task and document highlights for a matter search-result preview. |
matters.unarchivecapability:matters.unarchive | stella capability matters unarchive | write | Return an archived matter to active so it is writable again. The counterpart of matters.archive: a matter that is not archived is left exactly as it is. |
matters.updatecapability:matters.update | stella capability matters update | write | Change a matter: its name, reference, billing reference, colour, or lead (who must already be a member of it). Only the fields you pass are written. Attaching a client to a personal matter is a one-way promotion and must go through promote, which takes the client contact and optionally the members to share it with at the same time; a bare clientId on a personal matter, and any attempt to re-promote a matter that already has a client, are refused. |
matters.workflow-startcapability:matters.workflow-start | stella capability matters workflow-start | write | Start an extraction workflow in a matter, filling the AI columns of the documents that need it. Narrow it with entityIds and propertyIds, set the processing order with entityIdsOrder, and choose serviceTier standard or flex, where flex is the cheaper deferred tier and is refused when the configured provider does not offer it. Returns the run's status, including already-running when one is in flight. |
organization-settings.document-ocr-availability.getcapability:organization-settings.document-ocr-availability.get | stella capability organization-settings document-ocr-availability-get | read | Report whether a document OCR worker is currently ready to accept work. |
organization-settings.getcapability:organization-settings.get | stella capability organization-settings get | read | Read the organization's general settings: document processing mode, matter-number pattern and padding, practice jurisdictions, prompt caching, and memory extraction. An organization that has never saved settings gets the defaults rather than an error. |
organization-settings.previewcapability:organization-settings.preview | stella capability organization-settings preview | read | Preview the matter number a pattern would produce next: the pattern and padding are validated, the counter for the scope that pattern falls in is read, and the rendered reference is returned with the sequence value it would take. Nothing is stored and no counter is advanced. |
organization-settings.read-ai-availabilitycapability:organization-settings.read-ai-availability | stella capability organization-settings read-ai-availability | read | Report whether AI is usable in this organization: whether the deployment provides a model, whether the organization has configured its own provider, whether either of those makes AI available at all, and whether the reduced-cost deferred service tier can be used. Booleans only, so any member may read it. |
organization-settings.read-anonymization-blacklistcapability:organization-settings.read-anonymization-blacklist | stella capability organization-settings read-anonymization-blacklist | read | Read the organization-wide always-mask terms: each entry's canonical form, label, spelling variants, and enabled flag. Matter-scoped terms live in the same table but are never returned here; read those with matters.anonymization-terms.list. |
organization-settings.read-deepl-availabilitycapability:organization-settings.read-deepl-availability | stella capability organization-settings read-deepl-availability | read | Report whether the organization has a translation provider key configured, as a single boolean. Nothing about the key itself, not even a masked preview, is returned here. |
organization-settings.updatecapability:organization-settings.update | stella capability organization-settings update | write | Change the organization's general settings: document processing mode, matter-number pattern and padding, prompt caching, and memory extraction. Only the fields you pass are written and the matter-number pattern is validated against its padding first. Turning document processing off is refused while an automatic run is still going. Practice jurisdictions are set through organization-settings.update-practice-jurisdictions. |
organization-settings.update-anonymization-blacklistcapability:organization-settings.update-anonymization-blacklist | stella capability organization-settings update-anonymization-blacklist | write | Replace the organization-wide always-mask list with the entries you pass: terms not in the list are deleted, terms already present are updated, and the rest are inserted, so this is a whole-list replacement rather than a merge, and an empty list clears every organization-wide term. Matter-scoped terms in the same table are left untouched. |
organization-settings.update-practice-jurisdictionscapability:organization-settings.update-practice-jurisdictions | stella capability organization-settings update-practice-jurisdictions | write | Set the practice jurisdictions for the user's stella organization. Call this when the org's practice jurisdictions are empty (e.g., the user signed up via an OAuth client and skipped onboarding). Pass an array of {countryCode, isPrimary}; exactly one entry should be primary. |
playbooks.approvecapability:playbooks.approve | stella capability playbooks approve | write | Approve a playbook definition: snapshot its current name, description, scope, and positions as a new immutable version, then mark the definition approved. Runs pin the latest approved version, so this is what publishes edits to reviews. Pass expectedUpdatedAt as a concurrency token; a definition that changed since you read it is a conflict. Approving an already-approved playbook is allowed and simply appends another version. |
playbooks.auto-runcapability:playbooks.auto-run | stella capability playbooks auto-run | write | Run every applicable playbook over a matter in one pass and materialize their columns onto its table: a playbook with no document-type scope always applies, one scoped to a document type only when that type is present among the matter's classified documents. Each playbook pins its own latest approved version and opens its own per-document runs; a playbook that hits a limit is skipped while the rest continue. Returns how many playbooks ran, how many columns were materialized, and how many document runs opened. Use playbooks.run for a single playbook. |
playbooks.createcapability:playbooks.create | stella capability playbooks create | write | Create a playbook definition in the organization from a name, an optional description, an optional document-type scope, and its positions. The positions are validated and the automatic questions derived from their tier rules before storage. It starts as a draft: approve it with playbooks.approve before runs will use it. |
playbooks.deletecapability:playbooks.delete | stella capability playbooks delete | destructive | Permanently delete a playbook definition and every approved version of it from the organization. Columns the playbook materialized into matters are kept: they keep their extracted answers and verdicts and continue to work as ordinary columns, no longer owned by any playbook. Recorded review findings are kept as well. There is no in-use check. |
playbooks.from-runcapability:playbooks.from-run | stella capability playbooks from-run | write | Save the position list a completed document review ran against as a new draft playbook in the organization, taking the same create path a hand-authored playbook takes (validation, the per-organization limit, the draft status). Position ids are preserved, so decisions already taken on those positions stay attached to them. |
playbooks.from-startercapability:playbooks.from-starter | stella capability playbooks from-starter | write | Create or reopen the organization's playbook from a bundled starter, cloning its positions with fresh ids on first use and otherwise taking exactly the path playbooks.create takes, including validation, the per-organization limit, and the draft status. Repeated use of one starter returns the existing playbook instead of creating a copy. Browse the starters with playbooks.list-starters. |
playbooks.getcapability:playbooks.get | stella capability playbooks get | read | Read one playbook definition in full: its name, description, document-type scope, positions, status, approval metadata, and how the organization has decided each position across past reviews. Use playbooks.list for the paginated overview. |
playbooks.listcapability:playbooks.list | stella capability playbooks list | read | List the organization's playbook definitions with cursor pagination, each with its scope, status, and approval metadata. Read one playbook's positions in full with playbooks.get. |
playbooks.list-starterscapability:playbooks.list-starters | stella capability playbooks list-starters | read | List the bundled starter playbooks available to instantiate: each starter's id, name, description, target document type, and how many positions it holds. Metadata only, enough to render a picker; create one with playbooks.from-starter. |
playbooks.list-versionscapability:playbooks.list-versions | stella capability playbooks list-versions | read | List one playbook's approval history, newest version first: the version number, the name it carried at that version, when it was created, and by whom. A version is only written when a playbook is approved, so the list is capped rather than cursor-paginated. |
playbooks.recent.listcapability:playbooks.recent.list | stella capability playbooks recent-list | read | List the current user's recently used playbooks in the active organization. |
playbooks.restore-versioncapability:playbooks.restore-version | stella capability playbooks restore-version | write | Restore a stored playbook version by copying its name, description, scope, and positions back onto the definition. A restore counts as an edit: the playbook returns to draft with its approval metadata cleared, so it must be approved again before runs pick it up, and the stored version itself is left untouched. |
playbooks.runcapability:playbooks.run | stella capability playbooks run | write | Run a review playbook over a matter's documents. Every DOCX document is reviewed against the playbook's latest approved version, and each document's findings are recorded against its own pinned version. Pass matterId, playbookId, and the projection: "columns" also materializes the playbook's extraction and verdict columns onto the table, "none" materializes none. Findings populate asynchronously. |
playbooks.updatecapability:playbooks.update | stella capability playbooks update | write | Replace a playbook definition's name, description, scope, and positions; the positions are validated and their automatic questions re-derived. Any edit invalidates a prior approval, so the playbook drops back to draft with its approval metadata cleared and runs keep using the last approved version until it is approved again. Pass expectedUpdatedAt as a concurrency token; a definition changed since you read it is a conflict, and the new updatedAt comes back for the next save. |
properties.createcapability:properties.create | stella capability properties create | write | Add one property (a column) to a matter: its name, value type, and either an AI prompt tool, optionally depending on other columns, or a manual-input tool. An AI column is created stale, so its values are produced by the next run rather than immediately. Refused when the matter is at its property limit, when a dependency is not a property of this matter, or when the matter already has a document-type classifier column. |
properties.create-batchcapability:properties.create-batch | stella capability properties create-batch | write | Add up to ten properties (columns) to a matter in a single transaction, under the same rules as properties.create: all of them land or none do, the resulting count must stay within the matter's property limit, every dependency must be a property of this matter, and at most one document-type classifier may exist. Returns the new property ids. |
properties.deletecapability:properties.delete | stella capability properties delete | destructive | Permanently delete one custom property (column) from a matter, with every value stored under it on every document version, plus its cell metadata and list placements. System properties, file properties, and properties another property depends on are refused. |
properties.listcapability:properties.list | stella capability properties list | read | List the property (column) definitions of a matter. Returns each property's id, name, value type (text, single-select, multi-select, date, or int), and status. Use the returned property id with set_field_value to set a document's value for that property. |
properties.previewcapability:properties.preview | stella capability properties preview | write | Run a column prompt against one document without creating the column or storing anything, so a prompt can be tried before it is saved. Pass the prompt, the value type, the entityId to run it against, any select options, and the columns it depends on. Returns status ready with the generated value, skipped when the dependency values are missing or unusable on that document, unsupported when the document cannot be processed, or empty when the model returned nothing. Consumes AI usage. |
properties.suggest-promptcapability:properties.suggest-prompt | stella capability properties suggest-prompt | write | Draft or refine a column's extraction prompt with the model, from the column name, value type, select options, a free-text instruction, and optionally the prompt as it stands. Returns one single-line prompt of at most 280 characters and stores nothing. Consumes AI usage. |
properties.updatecapability:properties.update | stella capability properties update | write | Replace one property's name, value type, and tool (an AI prompt with its dependencies, or manual input) in a matter. A change that affects extraction marks the column, and every column that transitively depends on it, stale so the next run recomputes them. Refused on a circular dependency, on a second document-type classifier, on a file property without a manual-input tool, and on a select fallback that is not one of the supplied options. The dependency rows of a playbook-materialized manual column are preserved rather than rewritten. |
rates.createcapability:rates.create | stella capability rates create | write | Create a rate table, a named set of hourly rates in a single currency, in a matter. Pass isDefault to make it the matter's default, which clears the flag on the previous default; matters have a fixed cap on how many rate tables they may hold. Add the rates themselves with rates.entries-create. |
rates.deletecapability:rates.delete | stella capability rates delete | destructive | Permanently delete one rate table from a matter and, with it, every per-user rate line it holds. The matter's default rate table is refused until another table is made the default; time entries already recorded keep the rate they were billed at. |
rates.entries-createcapability:rates.entries-create | stella capability rates entries-create | write | Add one rate line to a rate table: an hourly rate in integer minor currency units, effective from a date and optionally until another. Pass userId for a person-specific rate or omit it for the table's fallback rate. Refused when the date range overlaps an existing line for the same user, when userId is not a member of the organization, or when the table is at its line limit. |
rates.entries-deletecapability:rates.entries-delete | stella capability rates entries-delete | destructive | Delete a single user's rate line (hourly rate and effective dates) from a rate table, leaving the table and its other lines in place. Use rates.delete to remove the whole table instead. |
rates.entries-readcapability:rates.entries-read | stella capability rates entries-read | read | List the rate lines of one rate table, earliest effective-from first, with cursor pagination. Each line carries the hourly rate in minor currency units, its effective dates, and the user it applies to (null for the table's fallback rate). A rate table that does not exist in this matter returns an empty page rather than an error. |
rates.entries-updatecapability:rates.entries-update | stella capability rates entries-update | write | Change one rate line's hourly rate or effective dates in a rate table. Changing the dates re-checks for overlap against the other lines for the same user and is refused on a conflict; the user a line applies to cannot be changed here. |
rates.listcapability:rates.list | stella capability rates list | read | List a matter's rate tables oldest first with cursor pagination, returning each table's name, currency, default flag, and how many rate lines it holds. Use rates.entries-read for the lines themselves and rates.resolve for the rate that actually applies to a user on a date. |
rates.resolvecapability:rates.resolve | stella capability rates resolve | read | Resolve the effective hourly rate for a user on a given date in a matter, using the matter's default rate table (user-specific rate first, then the table default). Returns the hourly rate in integer minor currency units (e.g. cents) and the currency, or nulls when no rate applies. |
rates.updatecapability:rates.update | stella capability rates update | write | Rename a rate table, change its currency, or make it the matter's default, which clears the flag on the previous default. Unsetting the flag on the only default table is refused, so a matter that has a default keeps one; a matter whose tables were all created without the flag has none, and rate resolution handles that. Rates already recorded on time entries are not rewritten. |
reports.clone-builtincapability:reports.clone-builtin | stella capability reports clone-builtin | write | Copy one built-in report template into the organization so it can be edited in Template Studio and picked like any other template. Pass the built-in's key. The clone keeps the built-in's fill manifest verbatim, so it fills identically, and its name gains a (copy) suffix when a template of that name already exists. |
reports.export-viewcapability:reports.export-view | stella capability reports export-view | write | Start an asynchronous DOCX or PDF export of a matter view using a selected report template. Returns an export ID to poll. |
reports.list-exportscapability:reports.list-exports | stella capability reports list-exports | read | List report exports requested by the current user in a matter, newest first with cursor pagination. |
reports.list-templatescapability:reports.list-templates | stella capability reports list-templates | read | List built-in and organization report templates available for exporting a matter view. |
reports.read-exportcapability:reports.read-export | stella capability reports read-export | write | Read a report export's status. Completed downloads include a short-lived URL; workspace exports include the created document ID. |
signals.acceptances.createcapability:signals.acceptances.create | stella capability signals acceptances-create | write | Accept an inbox signal by taking one of its suggestions. Task and deadline suggestions are created here; for the others the client performs the action and reports what it produced. |
signals.assignments.createcapability:signals.assignments.create | stella capability signals assignments-create | write | Assign an open inbox signal to an organization member, or clear the assignment with null. |
signals.dismissals.createcapability:signals.dismissals.create | stella capability signals dismissals-create | write | Dismiss an inbox signal with an optional reason; the reason is kept for tuning the producer that emitted it. |
signals.getcapability:signals.get | stella capability signals get | read | Read one inbox signal with its evidence and suggestions; 404 when it is not visible to the caller. |
signals.listcapability:signals.list | stella capability signals list | read | List inbox signals visible to the caller: open by default, or snoozed or resolved via `view`; filter by matter, origin, severity, or assignment. |
signals.requests.createcapability:signals.requests.create | stella capability signals requests-create | write | Post a manual request into the inbox: a piece of work for the legal team, optionally scoped to a matter and assigned to a colleague. |
signals.snoozes.createcapability:signals.snoozes.create | stella capability signals snoozes-create | write | Snooze an inbox signal until a later time; it returns to the open feed once that time passes. |
skills.comments.createcapability:skills.comments.create | stella capability skills comments-create | write | Comment on a character range of one revision of an agent skill, or of a proposal's body. Pass exactly one of revisionId and proposalId; a comment on a proposal is also anchored to the revision that proposal branched from. The quoted source text is captured from the range so the comment survives the text moving on. |
skills.comments.deletecapability:skills.comments.delete | stella capability skills comments-delete | destructive | Delete a comment on an agent skill. Only its author or someone who may edit the skill can. |
skills.comments.listcapability:skills.comments.list | stella capability skills comments-list | read | List the comments anchored to an agent skill, oldest first, across its revisions and proposals. Each carries the character range and the quoted text it was written against, and whether it has been resolved. |
skills.comments.updatecapability:skills.comments.update | stella capability skills comments-update | write | Resolve or reopen a comment on an agent skill. Anyone who can see the skill can, not only the comment's author. |
skills.createcapability:skills.create | stella capability skills create | write | Author an agent skill from text: name, description, instruction body, and an optional slash command. Team scope requires admin or owner, private scope is your own. A command must be lowercase letters, digits, hyphens, or underscores, must not be one of the reserved commands, and must be free in the organization, as must the skill name. Refused once the per-user or per-organization skill limit is reached. Use skills.upload or skills.import-url for a packaged skill instead. |
skills.deletecapability:skills.delete | stella capability skills delete | destructive | Permanently delete an agent skill from the organization, with every resource file attached to it. Team skills may only be deleted by an admin or owner and private skills only by their author; bundled skills, which cannot be edited, can still be deleted here. |
skills.discovercapability:skills.discover | stella capability skills discover | write | Discover importable skills from a GitHub repository or SKILL.md URL. |
skills.from-blueprintcapability:skills.from-blueprint | stella capability skills from-blueprint | write | Create an editable draft skill from one of the bundled blueprints, a SKILL.md skeleton with placeholder resource files. The draft is installed disabled and under a fresh slug, so the same blueprint can be used more than once, and stays fully editable afterwards. Team scope requires admin or owner. |
skills.generate-draftcapability:skills.generate-draft | stella capability skills generate-draft | write | Draft a skill bundle with the model: returns SKILL.md markdown plus up to eight companion files under references/, prompts/, or knowledge/. Pass intent, optionally examples, and, to revise an existing draft, previousDraft with previousResources and feedback. Nothing is stored: pass the result to skills.create and the resource endpoints to keep it. Consumes AI usage. |
skills.getcapability:skills.get | stella capability skills get | read | Read one agent skill in full: its instruction body, scope, origin, version, license, compatibility, source URL, slash command, and every resource file with its content. A team skill is readable by every member of the organization; a private one only by its author. |
skills.importcapability:skills.import | stella capability skills import | write | Import one or more discovered skills from source URLs into the selected scope. |
skills.import-urlcapability:skills.import-url | stella capability skills import-url | write | Fetch and install one agent skill from a URL pointing at a SKILL.md file or a skill package. It is stored with a url origin, so it stays editable afterwards. Team scope requires admin or owner. To pull several skills out of a repository, use skills.discover and then skills.import instead. |
skills.listcapability:skills.list | stella capability skills list | read | List the agent skills visible to you, the organization's team skills plus your own private ones, enabled first and then by scope and name, with cursor pagination, alongside the deployment's built-in skills. Instruction bodies come back only for skills that carry a slash command; read one skill in full with skills.get. Also reports whether you may manage team skills. |
skills.list-commandscapability:skills.list-commands | stella capability skills list-commands | read | List the enabled skills that carry a slash command, shaped for the chat composer's command menu: id, scope, name, description, command, and the full instruction body to insert on pick. Capped at 250 rows and not paginated; use skills.list for the whole catalogue. |
skills.proposals.createcapability:skills.proposals.create | stella capability skills proposals-create | write | Open a draft change proposal against an agent skill, branched from its newest revision. Omit body to start from that revision's text. The skill itself is untouched until someone with edit rights accepts the proposal; bundled skills are refused. |
skills.proposals.deletecapability:skills.proposals.delete | stella capability skills proposals-delete | destructive | Delete a change proposal for an agent skill, along with the comments anchored to it. The skill and its revisions are untouched. Only the author or someone who may edit the skill can. |
skills.proposals.from-comments.createcapability:skills.proposals.from-comments.create | stella capability skills proposals-from-comments-create | write | Turn reviewer comments on an agent skill into a draft change proposal: the model rewrites SKILL.md so each comment is addressed, and the result is stored as a draft branched from the skill's newest revision. Pass commentIds to apply specific comments, or omit it to apply every unresolved comment on that revision. The skill itself is untouched until someone with edit rights accepts the proposal, the comments stay unresolved, and bundled skills are refused. Consumes AI usage. |
skills.proposals.getcapability:skills.proposals.get | stella capability skills proposals-get | read | Read one change proposal for an agent skill, with its proposed body and the body of the revision it branched from, so the two can be diffed. |
skills.proposals.listcapability:skills.proposals.list | stella capability skills proposals-list | read | List the change proposals raised against an agent skill, newest first and without their bodies. baseIsCurrent reports whether a proposal still branches from the skill's newest revision. |
skills.proposals.reviewcapability:skills.proposals.review | stella capability skills proposals-review | write | Accept or reject a change proposal for an agent skill. Accepting writes the proposed body to the skill and records the revision it produced; rejecting leaves the skill untouched. Either way the decision is final. Requires the rights to edit the skill itself. |
skills.proposals.updatecapability:skills.proposals.update | stella capability skills proposals-update | write | Edit a change proposal for an agent skill: its proposed body, its summary, or whether it is still a draft or now up for review. Only the author or someone who may edit the skill can, and only until the proposal is decided. |
skills.resources.createcapability:skills.resources.create | stella capability skills resources-create | write | Add one text file to an agent skill at a path such as references/checklist.md, taking its kind from the path unless you pass one. A path already used in the skill is a 409, a skill at its file limit is refused, and bundled skills cannot be edited. Team skills require admin or owner, private ones their author. Use skills.resources.upload for a DOCX or PDF whose text must be extracted first. |
skills.resources.deletecapability:skills.resources.delete | stella capability skills resources-delete | destructive | Delete one resource file from an agent skill, addressed by its path; the skill and its other resources are untouched. Bundled skills are read-only and are refused. |
skills.resources.renamecapability:skills.resources.rename | stella capability skills resources-rename | write | Move one file of an agent skill to a new path, re-deriving its kind from that path and leaving the content untouched. A path identical to the old one, a path already used by another file in the same skill, and a bundled skill are all refused. |
skills.resources.rewritecapability:skills.resources.rewrite | stella capability skills resources-rewrite | write | Rewrite one file of an agent skill with the model, from a free-text instruction and the file's current content. Returns the proposed content without saving it: persist it with skills.resources.update. Consumes AI usage. |
skills.resources.updatecapability:skills.resources.update | stella capability skills resources-update | write | Replace the content of one file of an agent skill, addressed by its path. The path and kind stay as they are; use skills.resources.rename to change them. Bundled skills are read-only, team skills require admin or owner, and private ones their author. |
skills.revisions.getcapability:skills.revisions.get | stella capability skills revisions-get | read | Read one recorded revision of an agent skill in full, including the instruction body as it stood at that point. |
skills.revisions.listcapability:skills.revisions.list | stella capability skills revisions-list | read | List the recorded revisions of an agent skill, newest first, without their bodies. Every body change records one, including the edits that accepting a proposal makes. |
skills.seedcapability:skills.seed | stella capability skills seed | write | Install the four default slash-command skills (summarize, risks, compare, draft) as private skills for the signed-in user in the active organization. Returns seeded false and writes nothing when that user already has any authored skill with a command in this organization, so defaults someone deleted are not put back. |
skills.updatecapability:skills.update | stella capability skills update | write | Change an agent skill: enable or disable it, or edit its name, description, instruction body, version, or slash command. Pass command as null to clear it; at least one field is required. Enabling and disabling works on any skill you may manage, but editing the content of a bundled skill is refused. A rename also moves the slug, and a name or command already taken in the organization is a 409. |
style-sets.create-from-editorcapability:style-sets.create-from-editor | stella capability style-sets create-from-editor | write | Create an organization style set from explicit editor settings applied to the built-in stella preset, with no DOCX involved. Returns the new style set's id, name, and updatedAt. |
style-sets.deletecapability:style-sets.delete | stella capability style-sets delete | destructive | Permanently delete an organization style set and the stored package file behind it. Documents and templates already created from the style set are unaffected, because they copied its styles at creation time. |
style-sets.downloadcapability:style-sets.download | stella capability style-sets download | read | Mint a short-lived download URL for one organization style set's stored DOCX package, recording the download in the audit trail. A style set that is unknown or already deleted is a 404. |
style-sets.listcapability:style-sets.list | stella capability style-sets list | read | List the organization's style sets, most recently updated first, with cursor pagination; deleted ones are left out. Each item carries the name, file name, size in bytes, and timestamps, and the response also reports the maximum number of style sets the organization may hold. |
style-sets.read-editorcapability:style-sets.read-editor | stella capability style-sets read-editor | read | Read one organization style set as editor settings: its name, updatedAt, and the style settings parsed out of the stored DOCX package. Pass that updatedAt back to style-sets.update-from-editor as expectedUpdatedAt so a concurrent edit is not silently overwritten. |
style-sets.read-stella-editorcapability:style-sets.read-stella-editor | stella capability style-sets read-stella-editor | read | Read the built-in stella style preset as editor settings, the starting point for a new style set. Takes no arguments and reads no stored data. |
style-sets.updatecapability:style-sets.update | stella capability style-sets update | write | Rename one organization style set; its export file name follows the new name. The stored style package is untouched, so use style-sets.replace or style-sets.update-from-editor to change the styles themselves. |
style-sets.update-from-editorcapability:style-sets.update-from-editor | stella capability style-sets update-from-editor | write | Rewrite one style set's package from explicit editor settings, using its current package as the base, and set its name at the same time. Pass expectedUpdatedAt from style-sets.read-editor so an edit made in the meantime is rejected instead of overwritten. |
tasks.assignees-addcapability:tasks.assignees-add | stella capability tasks assignees-add | write | Assign one member of the matter to a task, in a role that defaults to assignee. Repeating an assignment updates that user's role instead of duplicating it. Refused when the user is not a member of this matter and when the task is read-only. Remove an assignment with tasks.assignees-remove. |
tasks.assignees-removecapability:tasks.assignees-remove | stella capability tasks assignees-remove | destructive | Unassign one user from a task. Idempotent: removing a user who is not assigned still succeeds, and nothing stops a task from ending up with no assignee; a read-only task is refused. |
tasks.assignees.movecapability:tasks.assignees.move | stella capability tasks assignees-move | write | Reassign a task from one member to another in one atomic step: removes fromUserId (when not null) and adds toUserId (when not null) together, so a failed add can never leave the task with neither assignee. At least one of the two must be non-null. Refused when a new toUserId is not a member of this matter and when the task is read-only. |
tasks.calendarcapability:tasks.calendar | stella capability tasks calendar | read | Read a matter's tasks that fall inside a date-time window, shaped for a calendar. datePropertyIds chooses which date fields place an item, including the built-in created, updated, due, and start dates; endDatePropertyId supplies the end of a range. Filters and sorts follow the same contract as the table views. |
tasks.createcapability:tasks.create | stella capability tasks create | write | Create a task in the current matter: name plus optional parent, status, priority, due date, assignees, calendar fields for an agenda item (kind, start, end, occurrence, reminder, all-day, time zone, location, meeting URL, attendees, recurrence), list placement, and, where the deployment enables governed work, its owner and target and deadline dates. Change one afterwards with tasks.update. |
tasks.entity-links-createcapability:tasks.entity-links-create | stella capability tasks entity-links-create | write | Link a task to another document, folder, or task, with a link type that defaults to related. Both ends must be in this matter, an entity cannot be linked to itself, and a read-only entity is refused. Remove the link with tasks.entity-links-delete. |
tasks.entity-links-deletecapability:tasks.entity-links-delete | stella capability tasks entity-links-delete | destructive | Remove one link between a task and another document, folder, or task, addressed by the link id. Both linked items survive; a link with a task on neither end, and a read-only task, are refused. |
tasks.entity-links-readcapability:tasks.entity-links-read | stella capability tasks entity-links-read | read | List every link one task has, in both directions, each with the entity at the other end and its kind. Change them with tasks.entity-links-create and tasks.entity-links-delete. |
tasks.getcapability:tasks.get | stella capability tasks get | read | Read one task in full: its own fields, its assignees with their users, its governed-work ownership with the most recent lifecycle events, its child tasks with their assignees, its links in both directions, and who created it. |
tasks.updatecapability:tasks.update | stella capability tasks update | write | Change one task in a matter: name, status, priority, due date, list item type, sort order, or the calendar fields of an agenda item (kind, start, end, occurrence, reminder, all-day, time zone, location, meeting URL, availability, sensitivity, organizer, attendees, recurrence). Only the fields you pass are written and a read-only task is refused. Where governed work is enabled a status change also records a lifecycle event, and workflowReason carries the explanation stored with it. |
template-packs.getcapability:template-packs.get | stella capability template-packs get | read | Read one bundled template pack: attribution (drafters, reviewers, converters), license and license URL, source, disclaimer, review date, jurisdictions, languages, and every template with its README, field list and, when already installed in the organization, the installed template id. Also reports whether the organization hides pack offers. |
template-packs.installs.createcapability:template-packs.installs.create | stella capability template-packs installs-create | write | Copy templates from a bundled pack into the organization's template library as ordinary templates with a first version; each records the pack, version, slug, content hash, license and authors it came from. Pass the pack id and the template slugs. A template already installed from the same pack is reported as such and not copied again, so a request that failed part way through can simply be repeated. Owners and admins only. |
template-packs.listcapability:template-packs.list | stella capability template-packs list | read | List the template packs bundled with this deployment, ranked for the organization: packs covering one of its practice jurisdictions first, then jurisdiction-agnostic packs, then the rest, with packs in the caller's language ahead within each group. Each pack carries its attribution, license, jurisdictions, languages, template list and how many of its templates are already installed. Also reports whether the organization hides pack offers and whether the caller may install. |
template-packs.visibility.updatecapability:template-packs.visibility.update | stella capability template-packs visibility-update | write | Hide or show the bundled template-pack catalogue for the organization. Pass hidden true to stop offering packs in the template library; templates already installed are unaffected. Owners and admins only. |
template-recipes.createcapability:template-recipes.create | stella capability template-recipes create | write | Create a template recipe, a named reusable block of pre-configured template fields, from a name, an optional description, and a definition object that is structurally validated before it is stored. Refused once the organization holds its maximum number of recipes. |
template-recipes.deletecapability:template-recipes.delete | stella capability template-recipes delete | destructive | Permanently delete one template recipe (a reusable, pre-configured block of template fields) from the organization. Templates already built with it keep the fields that were inserted, and there is no in-use check. |
template-recipes.listcapability:template-recipes.list | stella capability template-recipes list | read | List the organization's template recipes alphabetically by name, each with its id, description, and full definition. Recipes are capped per organization, so the whole set comes back in one response without a cursor. |
templates.binding-catalogcapability:templates.binding-catalog | stella capability templates binding-catalog | read | List the data-binding options a template field can be bound to: every (source, field) pair in the binding taxonomy with its label key. The catalog is static and identical for every matter in the organization; it takes no arguments and reads no stored data. |
templates.categories-createcapability:templates.categories-create | stella capability templates categories-create | write | Create a category in the organization's template category tree, optionally under a parent category. |
templates.categories-deletecapability:templates.categories-delete | stella capability templates categories-delete | destructive | Delete one category from the organization's template category tree. No template is deleted: templates filed under the category become uncategorized, and its child categories are promoted to its own parent. |
templates.categories-listcapability:templates.categories-list | stella capability templates categories-list | read | List the organization's template categories with their parents, descriptions, and sort order, enough to render the whole tree. The set is bounded per organization and returned whole, without a cursor. |
templates.categories-updatecapability:templates.categories-update | stella capability templates categories-update | write | Rename or re-describe one template category, move it under a different parent (or to the root by passing null), or change its sort order. Only the fields you pass are written, and a move that would make the tree circular is refused. |
templates.checkcapability:templates.check | stella capability templates check | read | Run the authoring checks over one stored template and return their findings: broken marker structure and invalid markers, markers with no manifest field and manifest fields with no marker, clause slots with no linked clause and links with no slot, fields missing a label or input type, selects with no options, and formulas or conditions referring to unknown paths. Read-only: it reports, it never repairs. |
templates.clause-slotscapability:templates.clause-slots | stella capability templates clause-slots | read | List the clause slots of one template together with the resolved body of the clause linked to each, using the same resolution the fill path runs, so a fill form can show what will be inserted and adjust it for that fill. Slots with no linked clause are left out; those fill as unmatched placeholders. |
templates.clauses-linkcapability:templates.clauses-link | stella capability templates clauses-link | write | Link a clause from the library into a template, optionally pinning one of its variants and naming the clause slot it fills. The link records the clause's version as it is now, so later edits to the clause do not reach the template until it is synced. Refused once the template holds its maximum number of clause links. |
templates.clauses-listcapability:templates.clauses-list | stella capability templates clauses-list | read | List the clauses linked to one template: each link's id, clause, pinned variant and version, slot name, sort order, and whether the pinned version has fallen behind the clause's current one. |
templates.clauses-slot-updatecapability:templates.clauses-slot-update | stella capability templates clauses-slot-update | write | Assign one clause link of a template to a named clause slot, or clear the assignment by passing null. The clause, its pinned version, and its variant are untouched: only which slot the link fills changes. |
templates.clauses-synccapability:templates.clauses-sync | stella capability templates clauses-sync | write | Re-pin one clause link of a template to its clause's current version, so the next fill inserts the newest wording. The link's slot and variant stay as they are. Use templates.clauses-sync-all to do this for every outdated link at once. |
templates.clauses-sync-allcapability:templates.clauses-sync-all | stella capability templates clauses-sync-all | write | Re-pin every outdated clause link of one template to its clause's current version in a single transaction, auditing each link as if it had been synced on its own. Links already on the current version are left untouched. |
templates.clauses-unlinkcapability:templates.clauses-unlink | stella capability templates clauses-unlink | write | Remove one clause link from a template, with its pinned version, variant, and slot assignment. Reversible: nothing leaves the clause library and the same clause can be linked again with templates.clauses-link. The template's own document is not rewritten, so the slot marker stays in it. |
templates.condition-decisions.getcapability:templates.condition-decisions.get | stella capability templates condition-decisions-get | read | Ask the organization's decision model about every AI-decided boolean condition of a stored template, given the values entered so far, and return what it decided with its probability and confidence. Nothing is filled and no document is produced; the generative model is never called, so a condition the decision model leaves undecided is reported as such (the fill itself still falls back to the generative model). values is an object mapping each field path to its value. |
templates.create-blankcapability:templates.create-blank | stella capability templates create-blank | write | Create an empty template from the stella base DOCX, with a name and an optional category. It carries no fields yet: add markers by editing the document and storing it with templates.save-document. Use templates.create to upload a DOCX that already has {{field}} markers. |
templates.create-from-style-setcapability:templates.create-from-style-set | stella capability templates create-from-style-set | write | Create an empty template whose document is built from one of the organization's style sets, so it starts in that house style, with a name and an optional category. Like templates.create-blank it carries no fields until a document is saved onto it. |
templates.deletecapability:templates.delete | stella capability templates delete | destructive | Permanently delete an organization template with its version history, its clause slots, and the stored file of every version. Recorded fills of the template survive as history, but the template and its files cannot be recovered. |
templates.fill-previewcapability:templates.fill-preview | stella capability templates fill-preview | read | Run the full fill of a stored template with the given values and return text instead of a file: the filled paragraphs, the character count, placeholders no value matched, values no marker used, and any structural errors. It does the same work as a real fill, AI-drafted fields included, so it is not a cheap dry run. values is an object mapping each field path to its value. Use templates.fill-by-id to download the document. |
templates.fill-to-mattercapability:templates.fill-to-matter | stella capability templates fill-to-matter | write | Fill a stored template and save the result as a new document in a matter rather than returning bytes. Same values and clauseOverrides contract as templates.fill-by-id, plus an optional document name (the .docx extension is appended when missing) and a parent folder; the created entity is returned. |
templates.getcapability:templates.get | stella capability templates get | read | Read one template's record: name, file name, size, manifest, field count, tags, languages, whenToUse and whenNotToUse guidance, usage counters, and a short-lived presigned URL for its current DOCX. The download grant is recorded in the audit trail. |
templates.listcapability:templates.list | stella capability templates list | read | List the document templates in this organization (NDAs, powers of attorney, leases): each template's id, name, field count, tags, and usage guidance (whenToUse / whenNotToUse); prefer a template whose whenToUse matches the request and skip any whose whenNotToUse applies. |
templates.lookup-formats.createcapability:templates.lookup-formats.create | stella capability templates lookup-formats-create | write | Save a reusable company specification format for colleagues in the active organization. |
templates.lookup-formats.default.updatecapability:templates.lookup-formats.default.update | stella capability templates lookup-formats-default-update | write | Choose or clear the default company specification format for a business registry in the active organization. |
templates.lookup-formats.deletecapability:templates.lookup-formats.delete | stella capability templates lookup-formats-delete | destructive | Delete a shared company specification format from the active organization. |
templates.lookup-formats.listcapability:templates.lookup-formats.list | stella capability templates lookup-formats-list | read | List shared company specification formats and the default for a business registry in the active organization. |
templates.lookup-formats.my-default.updatecapability:templates.lookup-formats.my-default.update | stella capability templates lookup-formats-my-default-update | write | Choose or clear your own default company specification format for a business registry, overriding the organization's default for you alone. |
templates.lookup-previewcapability:templates.lookup-preview | stella capability templates lookup-preview | read | Preview a registry-lookup field: resolve a company number against the chosen public register and render the field's format string over the hit, returning the text with its bold and italic markers left in place for the client to interpret. Refused when the number is not plausible for that register or required credentials are missing, and a 404 when the company is not found. Outcomes are cached per register and number, and no model is involved. |
templates.prefillcapability:templates.prefill | stella capability templates prefill | write | Suggest values for one stored template's fields from source material: an uploaded DOCX or PDF, pasted text, or the stored extracted text of up to five documents picked from a matter, in any combination. Returns a suggestion per field with the snippet it came from; nothing is written to the template and no document is filled. Pass timezone so dates are anchored to your calendar day rather than the server's. Consumes AI usage. |
templates.previewcapability:templates.preview | stella capability templates preview | read | Read one stored template as text for display: its paragraphs tagged with header, body, or footer origin, the character count, the structural marker errors positioned against those paragraphs, and the names of its clause slots. |
templates.suggest-fieldscapability:templates.suggest-fields | stella capability templates suggest-fields | write | Ask the model which literal values in a slice of template text (a whole document or just a selection) should become fillable fields, with optional extra instructions. Returns raw suggestions of literal text, proposed field path, and input type for a human to accept or reject; unlike templates.prepare it never rewrites the document. Consumes AI usage. |
templates.updatecapability:templates.update | stella capability templates update | write | Change a template's record: name, category, tags, languages, whenToUse and whenNotToUse guidance. Only the fields you pass are written. The fields a template asks for live in its document, so change those by storing a new body with templates.save-document or by calling configure_template_fields. |
templates.versions-diffcapability:templates.versions-diff | stella capability templates versions-diff | read | Return a plain-text, line-level diff of one template version against its predecessor; the first version is diffed against an empty document. Both texts are resolved server-side from the ids, and an empty segment list means nothing changed. |
templates.versions-getcapability:templates.versions-get | stella capability templates versions-get | read | Read one stored template version: its number, field count, creation time, and a short-lived presigned URL to download that version's DOCX. The download grant is recorded in the audit trail. |
templates.versions-listcapability:templates.versions-list | stella capability templates versions-list | read | List one template's versions, newest first, with cursor pagination. Each entry carries its version number, field count, creation time, and the author's name and image, which are blank for a version saved by someone who has left the organization. |
templates.versions-summarizecapability:templates.versions-summarize | stella capability templates versions-summarize | write | Summarize in prose what changed in one template version compared with its predecessor, over the same diff templates.versions-diff returns. Returns summary null when the two are identical, skipping the model call. Consumes AI usage. |
time-entries.batch-deletecapability:time-entries.batch-delete | stella capability time-entries batch-delete | destructive | Delete or write off many time entries in one matter at once: draft entries are permanently deleted and every other unbilled entry is written off. Billed, already written-off, and unknown ids are skipped without an error and there is no per-entry ownership check, so the returned count is the only report of what happened. |
time-entries.batch-updatecapability:time-entries.batch-update | stella capability time-entries batch-update | write | Apply one action to up to 200 time entries in a matter at once: approve, revert_to_draft, mark_billable, or mark_non_billable. Entries that are not in the action's starting state are skipped and only the number of changed rows is returned. Approval is refused while any selected entry has a running timer or a billable entry has no rate; mark_billable re-resolves each entry's rate and is refused when one of them has no effective rate. |
time-entries.createcapability:time-entries.create | stella capability time-entries create | write | Create a time entry in the current matter. dateWorked, timezoneId, durationMinutes, and narrative are required; workItemId is optional. The timekeeper's effective matter rate is resolved server-side. durations are whole minutes. Returns the time entry ID. |
time-entries.deletecapability:time-entries.delete | stella capability time-entries delete | destructive | Delete a time entry. A draft entry is permanently deleted; an approved entry is written off instead (kept for the audit trail, excluded from billing). A billed entry cannot be deleted until its invoice is reverted. Returns whether the entry was hard-deleted. |
time-entries.export-csvcapability:time-entries.export-csv | stella capability time-entries export-csv | read | Export a matter's time entries as CSV text, one row per entry with date, timekeeper name, work item, minutes, rate, amount, billable flag, status, task and activity codes, and narratives. Filter by date-worked range, status, and work item. Unlike the LEDES export this includes non-billable and written-off entries; the row count is capped. |
time-entries.export-ledescapability:time-entries.export-ledes | stella capability time-entries export-ledes | read | Export a matter's time entries as a LEDES 1998B e-billing file. Only billable, charged, not-written-off entries are included, so the selection is narrower than the CSV export of the same filters. Refused when an included entry has no effective rate, or when the selection spans more than one currency, which the format cannot represent. |
time-entries.getcapability:time-entries.get | stella capability time-entries get | read | Read one time entry in a matter by id, with its minutes, rate, currency, narratives, billing status, source, task and activity codes, timer timestamps, and the timekeeper's name. A caller without time-entry approval access can only read their own entries; another user's entry is reported as not found. |
time-entries.listcapability:time-entries.list | stella capability time-entries list | read | List time entries in a matter, optionally filtered by workItemId (the document, folder, or task providing context), userId or scope=me, a date-worked range (dateFrom/dateTo, ISO YYYY-MM-DD), and status. Returns each entry's id, entity, user, date, minutes, rate (minor currency units), currency, narrative, and status. |
time-entries.splitcapability:time-entries.split | stella capability time-entries split | write | Split one time entry across several work items by percentage, between 2 and 10 parts totalling 100. The original entry is deleted and replaced by new entries that share a splitGroupId and inherit its date, rate, narrative, codes, and status, with the minutes apportioned and re-rounded to the billing increment. A billed or written-off entry, and a duration too short to divide, are refused. |
time-entries.suggestions.decisions.createcapability:time-entries.suggestions.decisions.create | stella capability time-entries suggestions-decisions-create | write | Decide on a suggested time entry from time-entries.suggestions.list. `decision.type: accept` records a time entry with the given minutes and narrative (source `suggested`) and keeps the suggestion's evidence with the decision; it fails with 409 when the fingerprint is no longer pending for that day. `decision.type: dismiss` hides the suggestion for good and is idempotent: repeating it returns the decision already stored, including an earlier accept. |
time-entries.suggestions.listcapability:time-entries.suggestions.list | stella capability time-entries suggestions-list | read | List suggested time entries for one day in the current matter, drawn from the signed-in user's own activity here: chat messages they sent and records they created, edited, or downloaded. Each item carries a fingerprint, the observed span, engaged minutes, and the evidence behind it. Items the user already accepted or dismissed are omitted. Accept one with time-entries.suggestions.accept or hide it with time-entries.suggestions.dismiss. |
time-entries.summary.getcapability:time-entries.summary.get | stella capability time-entries summary-get | read | Summarize time in the current matter for a bounded date range; team scope requires time-entry approval access. |
time-entries.timer-startcapability:time-entries.timer-start | stella capability time-entries timer-start | write | Start a running timer for the signed-in user in the current matter, creating a draft time entry dated today in the timezoneId you pass and optionally attached to a work item. The user's effective rate is resolved at start and an entry with no resolvable rate is recorded as non-billable. Refused when the user already has a running timer. |
time-entries.timer-stopcapability:time-entries.timer-stop | stella capability time-entries timer-stop | write | Stop the signed-in user's running timer in the current matter, writing the elapsed minutes onto its draft time entry and rounding the billed minutes up to the billing increment. Fails when that user has no running timer in this matter. |
time-entries.updatecapability:time-entries.update | stella capability time-entries update | write | Change one time entry's date worked, duration, narratives, billable and no-charge flags, work item, or task and activity codes. Editing someone else's entry, or any entry past draft, requires time-entry approval access, and billed or written-off entries are always refused. Making an entry billable or moving its date re-resolves the rate and fails when none applies. The write is conditional on the entry being unchanged since it was read, so a concurrent edit returns a conflict instead of overwriting. |
uploads.createcapability:uploads.create | stella capability uploads create | write | Step 1 of 3 of the file-upload flow: reserve an upload and mint a short-lived presigned S3 PUT URL. This is the ONLY way to get a file into stella from an agent surface; the multipart endpoints cannot be called with JSON. Pass purpose plus the file metadata: name, mimeType, size in bytes, and sha256Hex (lowercase hex SHA-256 of the exact bytes). purpose is entity_create (with propertyId, optional parentId) to add a new document, entity_version (with entityId) to add a version to an existing one, or agent_skill (with scope team or private) for a skill pack. Returns uploadId, url, expiresAt, and headers. Step 2: PUT the bytes to url with those headers verbatim -- the URL is signed against the exact size and checksum, so any deviation is rejected. Step 3: call uploads.update with the uploadId to commit the record. Call uploads.delete instead if the PUT fails. |
uploads.deletecapability:uploads.delete | stella capability uploads delete | destructive | Abandon an upload reserved by uploads.create, discarding the staged object. Call this when the presigned PUT fails or the upload is no longer wanted, so the staged bytes are not left to expire on their own. Idempotent: aborting an already aborted upload succeeds. Fails if the upload was already finalized -- delete the resulting entity or skill instead. |
uploads.updatecapability:uploads.update | stella capability uploads update | write | Step 3 of 3 of the file-upload flow: finalize an upload whose bytes have already been PUT to the presigned URL from uploads.create. Verifies the stored object against the size and checksum the URL was signed for, then commits the durable record and returns finalizedResult, which is an entity_create (entityId, fileId, fileName, renamed), entity_version (entityId, entityVersionId, versionNumber, fileId, fileName), or agent_skill (skillId, name, version) shape depending on the purpose the upload was created with. Idempotent: replaying it on an already finalized upload returns the same result rather than duplicating. |
usage.get-entitlementcapability:usage.get-entitlement | stella capability usage get-entitlement | read | Read the organization's current usage entitlement: plan, seats, billing period, and how many usage units (AI credits) remain this period. Returns { entitlement: null } when the organization has no active plan. Requires organization-settings management access. |
view-templates.createcapability:view-templates.create | stella capability view-templates create | write | Save a view layout as a personal view template, the blueprint used to create views in other matters. Duplicate sorts and multiple kind filters are refused, references to columns that do not exist are dropped, and the columns the layout needs are captured so they can be recreated wherever the template is applied. Names are unique per user, so a repeat name is a 409, and the per-user template limit applies. |
view-templates.deletecapability:view-templates.delete | stella capability view-templates delete | destructive | Delete one of your own saved view templates, the personal blueprint used to create new views. Views already created from it are untouched, and the call succeeds silently when the template does not exist or belongs to someone else. |
view-templates.listcapability:view-templates.list | stella capability view-templates list | read | List your own saved view templates, newest first, each with its name, layout, layout type, and the columns that layout needs. Personal: templates saved by other members are never returned. |
views.convertcapability:views.convert | stella capability views convert | write | Convert one view of a matter to another layout type (table, filesystem, kanban, calendar, or timeline), carrying over as much of its filters and sorts as the target layout supports. Converting to overview, or to the layout the view already has, is refused. Use views.update to change a view's name or the details of its current layout. |
views.createcapability:views.create | stella capability views create | write | Add a view (a tab) to a matter with a name and a layout. Duplicate sorts and multiple kind filters are refused, the columns the layout needs are created when your role may create columns, and references to columns that do not exist are dropped. A matter may hold only one overview view, and a fixed maximum of views in total. |
views.deletecapability:views.delete | stella capability views delete | destructive | Delete one view (a shared tab) from a matter, removing it for everyone with access. Refused when it is the matter's last view, or the last view of a layout the matter must keep (overview, table, filesystem, kanban); past report exports keep their own layout snapshot. |
views.listcapability:views.list | stella capability views list | read | List a matter's views in tab order, each with its layout, position, and creation time. Default view names come back localized for the request's language, and references to deleted columns are stripped out of the layouts. A pure read: default views are seeded when the matter is created, so listing never mints one. |
views.reordercapability:views.reorder | stella capability views reorder | write | Set the tab order of a matter's views. viewIds must name every view of the matter exactly once in the order you want; a partial list, an unknown id, or a duplicate is refused. Only positions change. |
views.updatecapability:views.update | stella capability views update | write | Rename one view of a matter or replace its layout. The layout type cannot change here, use views.convert for that; duplicate sorts and multiple kind filters are refused, columns the new layout needs are created when your role may create columns, and references to deleted columns are dropped. |
work-obligations.acknowledgements.createcapability:work-obligations.acknowledgements.create | stella capability work-obligations acknowledgements-create | write | Acknowledge ownership of governed work assigned to the signed-in user. |
work-obligations.queues.listcapability:work-obligations.queues.list | stella capability work-obligations queues-list | read | List the signed-in user's governed work with cursor pagination. The queues partition the work: at-risk holds every open obligation already due, to-acknowledge the rest awaiting acknowledgement, upcoming the rest already acknowledged, and completed the finished work. |
work-obligations.transitioncapability:work-obligations.transition | stella capability work-obligations transition | write | Complete, cancel, or reopen governed work while preserving its lifecycle history. Completing or cancelling the task a workflow review gate raised approves or rejects that gate. |
work-obligations.updatecapability:work-obligations.update | stella capability work-obligations update | write | Update accountable ownership, dates, type, or provenance for a governed task or deadline. |