filevine-mcp
This server is an MCP connector for Filevine, enabling AI-powered interaction with legal practice data. You can:
Authentication: Exchange a Personal Access Token (PAT) for secure access; check auth status and logout. Tokens are encrypted (AES-256-GCM) locally.
Cases: List and search cases by status (active, closed, pending), name, or number; retrieve full case details.
Contacts: Search contacts by name, email, or phone; get details; list all contacts on a case.
Notes: List and create notes (general, phone_call, internal) on cases.
Documents: List document metadata (name, type, size, URL)—binary content is not returned directly.
Tasks: List tasks by status (open, completed, overdue); create tasks with title, description, assignee, due date.
Custom Data: Discover the firm's custom schema and fetch collection data (e.g., medical records, liens) via selectors.
Rate Limiting & Compliance: Automatic rate limiting with exponential backoff and audit logging.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@filevine-mcpshow my active cases"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Filevine MCP — Claude Integration
Built by Oktopeak — AI transformation & automation for law firms
Digital transformation for legal and healthcare businesses. We build AI integrations, workflow automation, and custom software your firm owns outright — including this connector. → Book a 30-min call
An open-source MCP (Model Context Protocol) server connecting Claude to Filevine practice management platform. Access cases, contacts, documents, notes, tasks, and custom PI data from Claude with automatic rate limiting and audit logging.
Supported Endpoints: 15 tools covering the Filevine v2 REST API.
Not a developer? You don't need to be.
The README below assumes someone comfortable editing a JSON config file. If that's not you or your team, we deploy this for law firms: scoped credentials, audit log wired in, one custom workflow, training.
Jump to: Setup · Available tools · Compliance & security · Need it deployed for you? · Other connectors
Setup
1. Prerequisites
Node.js 18+
Filevine account with API access enabled
Client ID, Client Secret, and Personal Access Token (PAT) from your firm's Filevine settings
Claude Code, MCP client, or compatible application
2. Get Filevine Credentials
Personal Access Token (PAT)
Go to Filevine Settings → Access Tokens → Generate PAT
Copy and save securely
Client Credentials
Go to Settings → Client Secrets → Create Client ID + Client Secret
Valid for 1 year, can be rotated anytime
Copy both values
Organization & User IDs (auto-discovered on first auth call)
The server will discover these from
/v2/users/meon first run
3. Environment Variables
Copy .env.example to .env:
# Filevine OAuth client credentials
FILEVINE_CLIENT_ID=<from Settings → Client Secrets>
FILEVINE_CLIENT_SECRET=<from Settings → Client Secrets>
FILEVINE_PAT=<from Settings → Access Tokens>
# API region (us or ca)
FILEVINE_REGION=us
# Token encryption key (generate new one)
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY=<64-character-hex-string>4. Install & Build
npm install
npm run build5. Run the Server
# Start the server
npm start
# Or use MCP inspector for debugging
npm run inspectThe server listens on stdio and outputs connection status to stderr.
6. Authenticate
Before using any Filevine tools, call the authenticate tool:
Tool: authenticate
→ Exchanges PAT for access token
→ Discovers org_id and user_id
→ Stores encrypted tokens in ~/.oktopeak-filevine/tokens.encTokens auto-refresh before expiry (3600s TTL). Call logout to clear stored tokens.
Related MCP server: filevine-mcp
Tools (15 Total)
Authentication (3 tools)
Tool | Purpose |
| Exchange PAT for access token and cache org/user IDs |
| Check authentication status and token expiry |
| Clear stored tokens |
Cases — Projects (2 tools)
Tool | Purpose |
| List cases (active, closed, pending); search by name/number |
| Get full case details by ID |
Contacts (3 tools)
Tool | Purpose |
| Search contacts by name, email, or phone across all cases |
| Get contact details by ID |
| List all contacts on a specific case |
Notes (2 tools)
Tool | Purpose |
| List case notes; supports general, phone_call, and internal types |
| Create a note (e.g., AI summary, findings, follow-ups) |
Documents (1 tool)
Tool | Purpose |
| List case documents with metadata (name, type, size, URL, dates) |
Note: Returns document metadata only — no binary content. Use returned URLs to fetch document content if needed.
Tasks (2 tools)
Tool | Purpose |
| List case tasks by status (open, completed, overdue) |
| Create a new task with title, description, assignee, due date |
Known Issue: The targetDate field may be ignored by the Filevine API as of Aug 2025. Workaround: set tasks via UI.
Custom Data — Collections (2 tools)
Tool | Purpose |
| Map your firm's custom sections (medical records, liens, settlements, etc.) |
| Fetch custom collection data using discovered selectors |
Why collections matter: Unlike standardized case fields, each firm builds custom "Collection sections" for PI workflows. The discover-schema tool finds your firm's structure.
Example workflow:
Call
discover-schema→ see available sections (e.g., "MedicalRecords", "Liens")Use selector from discovery →
get-collectionto fetch PI-specific data
Rate Limiting & Performance
Filevine Rate Limits:
Endpoint | Limit |
Standard | 320 req/endpoint/min |
Billing | 250 req/endpoint/min |
Reports/Vitals | 5 req/endpoint/min |
VineSign | 10 req/user/month |
Implementation:
Token bucket at 300 req/min (conservative)
Exponential backoff on 429 Too Many Requests (1s → 2s → 4s → ... → 30s max)
Automatic wait before rate limit breach
API Details
Request Flow
Token Exchange (on first
authenticatecall)POST https://identity.filevine.com/connect/token client_id, client_secret, grant_type=personal_access_token, token=PAT → access_token (3600s), refresh_token, scopesOrg/User Discovery
GET /v2/users/me Authorization: Bearer {access_token} → {id: user_id, org_id: org_id}Every API Request (3 required headers)
Authorization: Bearer {access_token} x-fv-orgid: {org_id} x-fv-userid: {user_id}
Base URLs
US:
https://api.filevine.ioCA:
https://api.filevine.ca
Set via FILEVINE_REGION environment variable.
Authentication Headers
The biggest difference from other legal APIs: every request needs 3 headers, not just Authorization. Filevine uses x-fv-orgid and x-fv-userid to scope queries to the correct organization and user context.
Architecture
src/
├── index.ts # Server entry point
├── filevine-client.ts # API client with 3-header middleware
├── auth/
│ ├── authTools.ts # authenticate, auth-status, logout
│ ├── oauth.ts # PAT token exchange + org/user discovery
│ └── token-store.ts # AES-256-GCM encrypted token storage
├── tools/
│ ├── cases.ts # list-cases, get-case
│ ├── contacts.ts # search-contacts, get-contact, list-case-contacts
│ ├── notes.ts # list-notes, create-note
│ ├── documents.ts # list-documents
│ ├── tasks.ts # list-tasks, create-task
│ └── collections.ts # discover-schema, get-collection
├── resources/
│ ├── auth-status.ts # Auth status resource (filevine://auth/status)
│ └── compliance.ts # Compliance notice
├── audit/
│ └── logger.ts # Audit logging (JSON-lines)
└── utils/
└── rate-limiter.ts # Token bucket + 429 backoffToken Storage
Tokens are encrypted with AES-256-GCM and stored locally:
Location:
~/.oktopeak-filevine/tokens.encEncryption: AES-256-GCM with random IV + auth tag
Key:
ENCRYPTION_KEYfrom.env(64-char hex)
Audit Logging
Every tool call is logged to ~/.oktopeak-filevine/audit.log:
Timestamp, tool name, arguments (secrets redacted)
Outcome (success/error), user ID, case ID, result count
Supports ABA Opinion 512 compliance documentation
Error Handling
Common Errors
Error | Cause | Fix |
| Missing env var | Generate key: |
| Invalid credentials | Verify Client ID, Secret, PAT from Filevine Settings |
| Token doesn't have required scopes | Regenerate PAT and Client Credentials in Filevine |
| Rate limit hit | Server auto-backs off; normal behavior under load |
| Selector not found | Run |
Development
TypeScript
Strict mode enabled
ES2022 target, Node16 modules
npm run build→build/directory
Dependencies
@modelcontextprotocol/sdk— MCP protocoldotenv— Environment loadingzod— Schema validation for tool parameterscrypto,fs,http— Node builtins
Debugging
npm run inspectOpens MCP inspector at http://localhost:3000 — test tools, check parameters, verify responses.
Testing
npm run build
npm start
# In another terminal:
npm run inspectResources
Official Filevine
API Docs: developer.filevine.io
Support: support.filevine.com/hc/en-us
Examples: github.com/Filevine/filevine-api-examples (C#, JS, Python)
Rate Limits: support.filevine.com/hc/en-us/articles/30948396130203
Reference Implementations
Treillage (Python): github.com/W1ndst0rm/Treillage — Rate limiter + token refresh reference
Compliance & Security
Data Handling: All Filevine data fetched on-demand — nothing cached locally
Token Storage: AES-256-GCM encrypted on disk; decryption requires
ENCRYPTION_KEYAudit Logging: Every tool call logged with redacted secrets
Rate Limiting: 300 req/min rolling window + 429 backoff protects your account
Write Access: Only
create-noteandcreate-taskmodify dataToken Refresh: Auto-refresh 5 min before expiry (3600s TTL)
See src/resources/compliance.ts for full compliance notice.
License
MIT — Oktopeak
Need more than the connector?
The open-source connector reads your Filevine data and lets Claude work with it. That handles about 20% of what most firms eventually want.
We help two ways, depending on your scope:
→ Guided MCP Setup: We deploy the connector in your firm with scoped credentials, audit log wired into your stack, a custom workflow designed with your team, and training. Scope and pricing tailored to your firm. → oktopeak.com/services/mcp-guided-setup/
→ Filevine Integration: For custom reporting, project schema work, document and intake automation, and the production software layer around Filevine. → oktopeak.com/services/filevine-integration/
Want a polished overview of this connector with FAQ? → oktopeak.com/filevine-mcp/
Want to talk first? → Book a 30-min scoping call
Other connectors by Oktopeak
We ship the same kind of connector for other practice management platforms. Each has its own overview page on oktopeak.com:
Clio MCP: Clio practice management. Source: github.com/oktopeak/clio-mcp. npm:
@oktopeak/clio-mcpMyCase MCP: MyCase legal practice management. Source: github.com/oktopeak/mycase-mcp. npm:
@oktopeak/mycase-mcpLawmatics MCP: Lawmatics legal CRM and intake. Source: github.com/oktopeak/lawmatics-mcp. npm:
@oktopeak/lawmatics-mcpIntakeQ / PracticeQ MCP: HIPAA-aware connector for IntakeQ/PracticeQ (healthcare). Audit logging on every PHI read/write. npm:
@oktopeak/intakeq-mcp
Same architecture, same audit logging, same encryption at rest. All MIT licensed.
Supporting this project
This connector is free, MIT licensed, and maintained by Oktopeak. It always will be — we don't take donations. If it saved you time, the things that actually help:
Star this repo. It is genuinely how other firms find it.
Tell another firm running Filevine.
Leave a review if we helped you directly.
Need it deployed, extended, or maintained for your firm? Commercial support — that is what funds the free work.
Firm-wide deployment: rolling Claude + this connector out to a whole firm (Claude Cowork, multi-user, security review)? See Firm Deployment.
Who we are
Oktopeak — digital transformation for law firms and healthcare.
We're a 7-person in-house product team building AI solutions for regulated industries: AI integrations, workflow automation, and custom software our clients own outright. We maintain five open-source MCP connectors — Clio, MyCase, Filevine, Lawmatics, and IntakeQ — and deploy them inside real practices with scoped credentials, audit logs, and workflows built around how your team actually works.
✉️ office@oktopeak.com — security reports welcome
💼 LinkedIn
Available Tools
15 toolsauthenticateA
Exchange your Filevine Personal Access Token (PAT) for an access token. Must be called once before using other Filevine tools. Requires FILEVINE_CLIENT_ID, FILEVINE_CLIENT_SECRET, and FILEVINE_PAT in .env
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the token exchange mechanism, env var requirements, and the one-time prerequisite nature. However, it does not describe what happens on success or failure, or whether it establishes a persistent session, which would add further transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably concise—two sentences that front-load the purpose and follow with the necessary requirements. Every word contributes meaning, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero params, no output schema), the description covers the essential context: what it does, when to call it, and what it needs. A minor gap is that it doesn't explicitly state that the obtained access token is stored for subsequent calls, but the 'must be called once' phrase strongly implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description is the only source of semantic detail. It compensates by specifying the required environment variables (FILEVINE_CLIENT_ID, FILEVINE_CLIENT_SECRET, FILEVINE_PAT), which are effectively the tool's inputs. This exceeds the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: exchanging a Personal Access Token for an access token. It also specifies a prerequisite role, distinguishing it from sibling authentication tools like auth-status and logout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Must be called once before using other Filevine tools.' This provides clear timing and prerequisite context, leaving no ambiguity about the tool's placement in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth-statusA
Check whether the server is authenticated with Filevine and when the token expires.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states this is a read-only check ('check whether'), which signals non-destructive behavior, and adds the specific detail about token expiry. This is sufficient for a simple status tool, though it could mention network dependency or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that immediately states the action and the key informational output. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only tool with no output schema, the description gives a complete picture: it tells the agent what is checked and what will be reported (authenticated state and expiry time). There is no missing scope, inputs, or outputs that the agent would need to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly avoids mentioning non-existent parameters and focuses purely on the tool's return value, which is all that is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('check') and resource ('server authenticated with Filevine', 'token expires'), clearly distinguishing it from sibling tools like authenticate and logout. It precisely names the query being answered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies usage as a pre-flight authentication check, but it does not explicitly state when to use this tool vs alternatives (e.g., before calling other tools, or that authenticate is needed if not authenticated). The context is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-noteA
Create a new note on a case. Useful for logging AI summaries, findings, or follow-up items.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The Filevine project ID | |
| content | Yes | The note text content | |
| note_type | No | Type of note | general |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only restates the action ('create') and gives purpose, but does not mention permissions, side effects, note visibility, or response behavior. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action and followed by relevant use cases. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and context, and the schema documents all parameters. However, without annotations or output schema, it could benefit from behavioral details, but for a simple creation tool it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all three parameters (case_id, content, note_type), giving high coverage. The description adds no additional parameter semantics, thus the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new note on a case' with a specific verb and resource, and adds context on intended use cases (logging AI summaries, findings, follow-ups), distinguishing it from siblings like create-task and list-notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool ('logging AI summaries, findings, or follow-up items'), but does not explicitly mention alternatives or when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-taskA
Create a new task on a case. Note: targetDate field may be ignored by Filevine API (known issue as of Aug 2025).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task title | |
| case_id | Yes | The Filevine project ID | |
| due_date | No | Due date in ISO format (YYYY-MM-DD). Note: may be ignored by API. | |
| assigned_to | No | Filevine user ID to assign task to | |
| description | No | Task description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses one behavioral issue: the targetDate/due_date field may be ignored by the API. However, this information is also present in the schema parameter description, so the description adds minimal additional context. It does not mention return behavior, error conditions, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and includes a relevant caveat. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and 2 required, with no output schema. The description does not explain what the tool returns, potential errors (e.g., case not found), or any prerequisites. However, the schema fully documents parameters, so completeness is acceptable but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with per-parameter descriptions, so baseline is 3. The description's note about targetDate being ignored is redundant with the schema's due_date description, and uses a different field name (targetDate vs due_date), which could cause confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (a task on a case), using a specific verb and object. It distinguishes from sibling tools like create-note (different resource) and list-tasks (different operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention alternatives or exclusions. While the context is clear (use when creating a task), there is no guidance on when not to use this vs other tools, such as list-tasks for reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover-schemaA
Discover the firm's custom data structure: list all project types and their collection sections. Use this to map section selectors for get-collection tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It states that the tool lists project types and sections, implying a read-only operation, but does not explicitly confirm read-only semantics, authentication requirements, or any potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff: the first states the purpose, the second gives direct usage guidance. Every word earns its place, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with zero params and no output schema. The description covers both what it returns (list of project types and sections) and how to use the result (mapping selectors for get-collection), making it self-contained for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain about input semantics. The description adds no parameter details, but none are needed; baseline 4 applies for parameter-less tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'Discover' and 'list' with a clear resource ('the firm's custom data structure'), naming exact outputs ('project types and collection sections'). It also differentiates from siblings by referencing the get-collection tool, establishing its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies when to use it: to map section selectors for get-collection. It does not list exclusions or alternatives, but the clear context is sufficient for a dedicated discovery tool with no obvious competing sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-caseA
Get detailed information about a specific case (project) by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| case_id | Yes | The Filevine project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Get detailed information' without mentioning permissions, authentication requirements, error handling, or what 'detailed' includes. The burden is unmet.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It efficiently conveys action, resource, and qualifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one well-documented parameter. However, without an output schema, the phrase 'detailed information' is vague and does not specify what fields or related data are returned, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter with the description 'The Filevine project ID'. The tool description repeats 'by ID' without adding any new meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('detailed information about a specific case'), and the qualifier ('by ID'). It distinguishes from siblings like list-cases and get-contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies use when a specific case ID is known and full details are needed. It does not explicitly name alternatives or exclusions, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-collectionA
Get custom collection data (medical records, liens, settlements, etc.) for a case. Use discover-schema first to find available selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| case_id | Yes | The Filevine project ID | |
| selector | Yes | The collection selector (e.g., 'MedicalRecords', 'Liens'). Find selectors via discover-schema tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only says 'Get' and gives examples, without mentioning pagination, permissions, rate limits, or error behavior. This is minimal beyond the basic operation and leaves the agent without important expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and provides a helpful instruction without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's main purpose and prerequisite, but with no output schema it fails to describe the return format, pagination, or limit behavior. This is a clear gap for a tool that fetches data, but the core usage is still adequately conveyed for a relatively simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by giving example selector values ('MedicalRecords', 'Liens') and explicitly directing users to the discover-schema tool for valid selectors. The case_id parameter is already described in the schema, and the limit parameter has range constraints, so the description compensates for the partial schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with the specific verb 'Get' and identifies the resource as 'custom collection data' with concrete examples (medical records, liens, settlements). This clearly distinguishes it from sibling tools like get-case or list-documents, which operate on different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite: 'Use discover-schema first to find available selectors.' This tells the agent what to do before invoking the tool. It does not spell out when not to use it, but the focused 'custom collection' language provides a clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-contactA
Get detailed information about a specific contact by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The Filevine contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'detailed information' which implies a read operation, but it doesn't disclose error behavior, authentication requirements, or the exact structure of the response. The gap is moderate for a simple get-by-ID tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and contains no unnecessary words. It is highly concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema), but the description doesn't specify what 'detailed information' includes or what happens if the contact is not found. It's adequate for a basic get-by-ID tool but lacks some completeness expected without annotations or an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the schema already describes contact_id as 'The Filevine contact ID'. The description just says 'by ID' without adding extra meaning. Baseline 3 is appropriate because the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('specific contact') and scopes it by ID. This distinguishes it from sibling tools like search-contacts (which searches) and list-case-contacts (which lists contacts for a case).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' clearly implies when to use this tool: when you have a specific contact ID and need detailed information. It doesn't explicitly exclude alternatives like search-contacts, but the context is clear and no alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-case-contactsB
List all contacts assigned to a specific case.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| case_id | Yes | The Filevine project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read operation ('List'), but does not disclose the limit parameter's effect (default 50) or pagination behavior. The word 'all' is potentially misleading given the limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that is front-loaded with the action and resource. No filler or repetitive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters, no output schema, and no annotations. The description omits important context like pagination, limit behavior, and any error conditions. As a result, the agent cannot fully predict the tool's behavior from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%; the limit parameter lacks a description. The description does not compensate by explaining limit or adding meaning to case_id beyond 'case'. It also conflicts with the limit by saying 'all'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') with a clear resource ('contacts') and scope ('assigned to a specific case'). It distinguishes itself from sibling tools like search-contacts or get-contact by indicating case-based listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a case_id and need its contacts, but it does not explicitly discuss when to choose this over alternatives (e.g., search-contacts). There are no exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-casesA
List cases (projects) from Filevine, optionally filtered by status or search term.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| limit | No | Number of cases to return | |
| search | No | Search case name or number | |
| status | No | Filter by case status. Defaults to "active". | active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the listing and filtering behavior but omits crucial behavioral details like pagination (though page/limit params exist), default status, response shape, or whether authentication is required. The description adds some value but leaves significant gaps for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the resource, source, and optional filters. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with full schema coverage and no output schema. The description sufficiently captures the core purpose and filtering, but since there is no output schema, it does not clarify the return structure or pagination behavior. Given the low complexity, this is a minor but present gap, so 3 is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a plain-language summary of filters (status or search term) that aligns with the schema but does not clarify parameter meanings beyond what the schema already provides. No added syntax or example values are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (List) and resource (cases from Filevine), which clearly distinguishes it from siblings like list-notes (different resource) and get-case (single case). It also notes optional filters, clarifying the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states that it lists cases and can be filtered by status or search term, implying when to use it. However, it does not explicitly call out alternatives (e.g., 'for a single case, use get-case') or mention exclusions, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-documentsB
List all documents for a specific case. Returns metadata, URLs, and file info — not the binary content.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| case_id | Yes | The Filevine project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses that the tool returns metadata/URLs/file info and not binary content, which is valuable. However, it does not state side effects (though 'list' implies read-only), pagination behavior, or any rate/auth constraints, leaving moderate gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the core purpose and adds a clarifying exclusion, earning its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only partial parameter documentation, the description leaves significant gaps: it does not explain page/limit interaction, response shape, or how 'all documents' relates to pagination. It provides a minimal baseline but is incomplete for a tool with three parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (case_id only), and the description does not compensate for page/limit parameters. It implicitly ties case_id to the case context, but omits explanation of pagination controls, leaving undocumented params for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List all documents') and the target resource ('for a specific case'), with the verb+resource structure distinguishing it from siblings like list-notes. It also clarifies the output scope (metadata, URLs, file info) and explicitly excludes binary content, leaving no doubt about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites, or any explicit decision criteria, relying solely on the inferred context that documents are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-notesB
List all notes for a specific case.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| case_id | Yes | The Filevine project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior. Saying 'List all notes' is misleading because the schema includes pagination parameters (page, limit), implying results are paginated rather than 'all' at once. There is no mention of ordering, error conditions, or the shape of the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It states the essential purpose succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with three parameters and no output schema, the description gives the core context but leaves gaps. It does not disclose that results are paginated, how to interpret the response, or any caveats. Given the lack of annotations and output schema, additional clarity would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (case_id). The description adds no explanatory value for page and limit, and while case_id is described in the schema as a Filevine project ID, the description's 'specific case' is vaguer. Parameter names are self-explanatory, but the description does not help with the missing 67% of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), the resource (notes), and the scope (a specific case). This distinguishes it from sibling tools like create-note and list-documents/tasks, making the tool's purpose immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that create-note should be used for adding notes or that list-documents/list-tasks are for other entity types. The context is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-tasksB
List all tasks for a specific case, optionally filtered by status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| status | No | Filter by task status. Defaults to "open". | open |
| case_id | Yes | The Filevine project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'List', but it does not mention the pagination parameters (page, limit) that control the result set, nor does it clarify that 'all tasks' may be limited. This could mislead an agent about the completeness of the returned list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It delivers the core message efficiently, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters including pagination controls, and no output schema. The description omits any mention of pagination or response format, leaving the agent without key usage information. Additionally, it does not clarify how this listing tool relates to create-task or other task-oriented tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions the status filter, aligning with the status parameter, but it adds no meaning to page, limit, or case_id beyond the schema. With only 50% schema description coverage, the pagination parameters (page, limit) remain undocumented in both schema and description, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('tasks') with a clear scope ('for a specific case') and an optional filter ('by status'). This clearly distinguishes it from sibling list tools like list-notes and list-documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when tasks for a known case are needed, but it does not explicitly state when to use this tool over alternatives such as create-task or list-cases. No exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutA
Remove the stored Filevine tokens from disk.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the core behavior (removing tokens from disk) but does not disclose additional behavioral traits such as whether the operation is idempotent, reversible, or what happens if no tokens are stored. The statement is honest but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is immediately informative. No filler or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description adequately explains the tool's purpose and effect. It might have mentioned return behavior or side effects, but for a logout operation, removing tokens is the key action and is clearly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the baseline is 4. The description does not need to add parameter details, and it correctly focuses on the operation's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and a specific resource ('stored Filevine tokens from disk'). It clearly distinguishes this tool from sibling tools like authenticate (which creates tokens) and auth-status (which checks token status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you want to log out by removing stored tokens. The context of sibling tools (authenticate, auth-status) helps clarify its role, though it doesn't explicitly state alternatives or situations to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-contactsA
Search for contacts across all cases by name or email.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| search | Yes | Name, email, or phone to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the search scope and basic input types, but without annotations, the description carries full burden. It does not mention pagination behavior, matching semantics, auth requirements, or that the schema also allows phone searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler or redundant qualifiers, front-loading the core purpose. It is appropriately concise for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes the core action and scope adequately for a simple search, but lacks mention of phone as a search criterion and pagination controls. There is no output schema or annotations to cover these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'search' has a description), and the description adds little: it omits the phone criterion already listed in the schema and provides no guidance for 'page' or 'limit'. The description needed to compensate for low schema coverage but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific action ('Search') on a specific resource ('contacts') with explicit scope ('across all cases') and criteria ('by name or email'). This distinguishes it from siblings like list-case-contacts, which are likely specific to a single case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Across all cases' implies this is the global contact-search tool rather than a case-scoped listing, giving some context for selection. However, it does not explicitly state when to avoid it or point to an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v1.0.1- First observed
auth-status - First observed
authenticate - First observed
create-note - First observed
create-task - First observed
discover-schema - First observed
get-case - First observed
get-collection - First observed
get-contact - First observed
list-case-contacts - First observed
list-cases - First observed
list-documents - First observed
list-notes - First observed
list-tasks - First observed
logout - First observed
search-contacts
TDQS
Each tool targets a distinct resource and action (cases, notes, contacts, documents, tasks, collections, auth). The few overlapping areas like list-case-contacts and search-contacts are clearly differentiated by scope, and descriptions leave no ambiguity.
Most tools follow a verb_noun pattern with hyphens (list-*, get-*, create-*), which is consistent and predictable. However, authenticate, logout, and auth-status deviate from this pattern, breaking the uniformity slightly.
With 15 tools, the server is well-scoped for its purpose. Each tool addresses a distinct need, and the count is within the ideal range, not feeling excessive or sparse.
The tool surface covers core read workflows for cases, contacts, documents, notes, tasks, and custom data, plus note and task creation. However, there are notable gaps: no update/delete for cases, notes, or tasks, no document content retrieval, and no contact creation/update. These omissions create dead ends for workflows requiring full CRUD.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Law firm management MCP: manage cases, clients, tasks, calendar and documents via Claude AI.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Clio Manage legal practice management software that enables Claude and other MCP clients to read and write Clio data including contacts, matters, and activities directly from chat.8MIT
- AlicenseCqualityAmaintenanceMCP server for Filevine that enables natural language interaction with legal case management, including projects, contacts, tasks, documents, billing, and more via Claude Desktop.1004MIT
- AlicenseAqualityCmaintenanceMCP server that connects Clio Manage to Claude via OAuth, enabling law firm management tasks like matter lookup, time tracking, billing, calendar, and document retrieval through natural language.41MIT
- FlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables Claude (or any MCP client) to read and write Clio Manage data—contacts, matters, activities—directly from chat, with flat-fee billing support in one call.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oktopeak/filevine-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server