DaubertDaubertRequest access
Model Context Protocol

Bring your own agent
to the case file.

Daubert speaks MCP. Connect the agent you already use, Claude or ChatGPT, and it reads the case, pulls chain data, and writes productions back. Same roles, same audit trail, same case file.

tools
19tools
workflow prompts
7workflow prompts
chains live
7chains live
daubert · connected
list_cases
3 cases · Ronin bridge, Doe v. Roe, estate recovery
blockchain_fetch_history { address: "0x9f2c…41ab", chain: "ethereum" }
1,284 transfers · 2023-04-11 to 2024-02-08
import_transactions { traceId: "b17e…", transactions: [ … ] }
added 1,284 · 96 new nodes · logged to the case
create_production { type: "declaration", formatId: "federal-1746" }
declaration skeleton created
What it unlocks

Three jobs, start to finish, without leaving your agent.

The tools are small on purpose. Chained, they cover the work an analyst actually does on a matter.

01 · Trace

Pull a wallet and put it on the graph.

Your agent finds the case, fetches history from the chain with Daubert's API keys, and writes the transactions into a trace. Unknown addresses become nodes automatically.

  1. 01list_cases
  2. 02get_investigation
  3. 03blockchain_fetch_history
  4. 04import_transactions
02 · Declare

Draft a declaration on the record.

It reads the declarant profile and your boilerplate library, then builds the declaration section by section. Five jurisdiction formats, with the oath and caption rendered for you.

  1. 01get_declarants
  2. 02get_declaration_library
  3. 03create_production
  4. 04update_production
03 · Redline

Review a draft against the evidence.

Point it at a draft in the data room. It snapshots the text, checks each claim against the graph and the case record, and proposes tracked changes with anchors quoted verbatim.

  1. 01list_data_room_files
  2. 02read_data_room_file
  3. 03create_production
  4. 04update_production
Reference

Everything it does, and everything it refuses.

Everything above, in detail. How a session is bound, how every call is authorized, what each of the nineteen tools takes and returns, and where the limits sit.

01How it works

Daubert exposes one Model Context Protocol endpoint over Streamable HTTP: a single POST /mcp. It is stateless. There is no session id to hold, no socket to keep open, and no server side conversation to resume. Each request authenticates, builds the tool surface for that session, answers, and tears down.

The intelligence is your agent. Daubert runs no model of its own on this path. It holds the case file, the graph, the chain access, and the roles. Your agent decides what to call, and Daubert decides whether it may.

Any client that speaks remote MCP over HTTP can connect: the Claude apps, Claude Code, and ChatGPT in developer mode. Nothing in the tool surface is client specific.

A connected agent is a session, not an account. It sees what you can see and changes what you can change. Connecting one does not widen the door.

02Connect an agent

Paste one address, sign in, choose the organization. Dynamic client registration is supported, so there is no client id to generate and no secret to store, and nothing runs locally.

MCP server URL
https://api.dauberts.ai/mcp

One thing to check first: you need a Daubert account holding admin or member on at least one organization. A guest cannot connect an agent. The same address is shown inside Daubert under Account · Connected Agents.

Your agentDaubertPOST /mcpno credentials yet401 · WWW-Authenticatecarries the resource metadata addressGET /.well-known/oauth-protected-resourcethen the authorization server documentPOST /oauth/registerdynamic client registration · no secret issuedGET /oauth/authorizebrowser opens · you sign in and pick an organizationredirect with an authorization codethe code expires in 60 secondsPOST /oauth/tokenwith the PKCE verifieraccess token · refresh token1 hour · 30 days, slidingPOST /mcp with the bearer token19 tools and 7 prompts come back
The whole exchange is automatic except one step: the browser tab where you sign in and choose which organization the session is for.

Claude

  1. 1Open Settings · Customize · Connectors.
  2. 2Scroll past the partner directory and click +, then Add custom connector.
  3. 3Name it "Daubert" and paste the address above.
  4. 4Leave Advanced settings empty. No client id is needed.
  5. 5Click Add. A browser tab opens where you sign in, choose the organization, and approve access.

One connector covers every Claude surface. Claude Desktop, claude.ai, Cowork, and Claude Code all read the same catalog once it is added to your account.

On a Team or Enterprise plan, your workspace admin registers Daubert once under Organization settings · Connectors. Everyone else then sees a Connect button on that entry.

ChatGPT

  1. 1Turn on developer mode first, under Settings · Plugins · Advanced. Custom MCP connectors do not appear until it is on. This is the step people miss.
  2. 2Click Create, name it "Daubert", and paste the address above. Keep the /mcp path on the end.
  3. 3Sign in when the browser opens, choose the organization, and approve access.

Two differences worth knowing. ChatGPT has no installable skill files, so ask your agent to call get_skill for the procedure it needs, or paste the daubert-overview text into Settings · Personalization · Custom instructions once. And without a way to pre-approve tools it may ask before each call. Approve once and it settles down.

What you are approving

The consent screen names the client asking for access, shows the address it will be redirected back to, and asks which organization the session is for. That choice is the whole scope of the session, and it cannot be changed afterwards. Connect a second agent, or a second organization, and you get a second session.

  • Only admins and members can grant a session. A guest is refused at consent.
  • The organization list is built from your own memberships on the server. A client cannot supply one.
  • PKCE with S256 is the only accepted method. Clients are public, so no secret is ever issued.
  • Codes, tokens, and sessions have the lifetimes in Limits and lifetimes.

On the first call after connecting, the session label is enriched with the client's own name and version and the operating system it reported, so Claude Desktop becomes something like Claude Desktop 1.4.2 · macOS in your account. That is cosmetic. It is how you tell two sessions apart when you go to revoke one.

03How a call is authorized

Every request to POST /mcp runs the same chain of checks before a tool handler sees it. Nothing here is cached for the life of the token, and nothing is decided once at connection time.

Address limit20 per minute, before anything else runsREFUSED WITH429 · Retry-AfterBearer tokenpresent and well formedREFUSED WITH401 · invalid_tokenToken still validnot expired, not revokedREFUSED WITH401 · invalid_tokenStill a memberre-read from the database on every callREFUSED WITH401 · membership_revokedSession limit60 calls per minute for this sessionREFUSED WITH401 · rate_limitedCase in this organizationchecked before any case data is readREFUSED WITHcross_org_accessRole high enoughviewer to read, editor to writeREFUSED WITHRequires role 'editor' or higherThe tool runswrites also record an audit row
Eight checks stand between a prompt and your case file. Six of them run before any case data is touched, and the last two run again on every single call rather than once at connection time.
  • The organization is fixed at consent. A case id belonging to a different organization is refused, whatever the prompt says. This is checked before any case data is read, so it is not possible to confirm a case exists elsewhere by watching how the error changes.
  • Membership is re-read on every call. Remove someone from the organization, or downgrade them to guest, and their agent stops on the next request, mid session. It does not wait for the token to expire.
  • The role is checked per call, not per connection. Losing editor on a case takes writes away immediately while reads keep working.
  • The principal is fixed in the handler. A tool cannot substitute a different user, organization, or session for itself.

The refusals, in the words they use

ResponseWhat happenedWhat to do
429 Too Many RequestsThe address limit, hit before authentication runs.Back off. The Retry-After header says how long.
401 invalid_tokenNo bearer token, or one that is expired or revoked.Nothing. The client walks the discovery flow and reconnects.
401 membership_revokedYou were removed from the organization or downgraded to guest.An admin restores membership, or you connect against another organization.
401 rate_limitedThis session passed 60 calls in a minute.Wait a minute. The bucket slides, so it clears as calls age out.
cross_org_accessThe case exists but belongs to another organization.Use a case from this session's organization.
case_not_foundNo case with that id.Call list_cases and use an id from the result.
You do not have access to this caseRight organization, but you hold no role on that case.Ask the case owner to add you.
Requires role 'editor' or higherA write was attempted with viewer access.Ask for editor on the case, or have the agent stop at reading.

The first four are HTTP level and end the request. The last four come back inside the tool result as errors, so the conversation continues and the agent can correct itself.

04Roles, and what they gate

There are two role systems, and MCP uses both. Your organization role decides whether you can connect an agent at all. Your case role decides what that agent can do on a given matter.

Organization roleCan connect an agentImplicit case role
adminYesowner on every case in the organization
memberYeseditor on every case in the organization
guestNoNone. A guest reaches a case only through an explicit membership on it

Case roles are ranked viewer below editor below owner. A tool gated at viewer accepts all three. A tool gated at editor accepts editor and owner. An explicit case membership always wins over the implicit one, so a case can grant access more narrowly than the organization does.

The four gates on the tool catalog

GateMeaning
viewer on the caseThe case must belong to this session's organization, and you must hold viewer or higher on it.
editor on the caseThe same organization gate, plus editor or higher. Every one of these writes an audit row.
organizationNo case id involved. Scoped to the one organization the session is bound to.
any connected agentNo case scope. Bounded by the session gate and the per-session rate limit only. Chain lookups and skill reads sit here.

Guests are refused at consent rather than at the tool. There is no version of this where a guest connects an agent and finds out later that nothing works.

05The words the tools use

These are the same words the app uses. When your agent reports what it did, this is what it means.

Organizationone per session, fixed when you approve the connectionCaseORGANIZATION WIDEDeclarantsDeclaration libraryLabeled entitiesInvestigationsProductionsData roomTracesNodesand edgesreport · chartchronology · declarationredlinedocx · pdf · xlsxcsv · txt · imagesgroups and bundles ride with the graph
A session is bound to one organization. Everything a case-scoped tool can reach hangs below that binding. Declarants, boilerplate blocks, and the labeled entity catalog sit beside it, shared across the organization rather than owned by a case.
organization
The tenant. Every case, production, and connected session belongs to exactly one.
case
The matter. It carries members, investigations, productions, and a data room.
investigation
One line of inquiry inside a case. A case can run several.
trace
The graph itself, stored under an investigation. An investigation can hold more than one.
node / edge
An address on the graph, and a transfer between two of them. Tools hand edges to the agent denormalized, carrying the from and to addresses rather than internal ids.
group / bundle
Collapsed sets of nodes and of edges. They travel with the graph on reads.
production
Work product on the record: a report, a chart, a chronology, a declaration, or a redline.
declaration
A production in one of five jurisdiction formats. The server renders the oath, the caption chrome, and the numbering. The agent supplies the content.
redline
A review of a draft someone else wrote. Creating one snapshots the draft's text into an immutable baseline, so the edits stay anchored to what was actually reviewed.
data room
The case's documents. Agents read them by id, and get extracted text back rather than raw bytes.
declarant
A saved expert witness profile: title, firm, qualifications, prior testimony, CV exhibit, rate, and disclosures.
declaration library
Reusable boilerplate blocks held across the organization, such as chain primers and authentication language.
labeled entity
A known address in the shared catalog: an exchange, a contract, a mixer, a service wallet.
session
One connected agent, bound to one user and one organization, revocable on its own.
agent action
One audit row. A write a session performed, with its target and its outcome.
skill
A workflow document. Seven are registered as prompts on connect, and any of them can be pulled mid task with get_skill.

06Tool reference

Nineteen tools in four groups. You never call these yourself. Your agent does, in the course of working the matter, and the names are here so that when it tells you what it did, the sentence means something.

viewer on the caseeditor on the caseorganizationany connected agent
Navigate

Find the matter

Where an agent starts. Nothing here reaches outside the organization the session is bound to.

list_casesorganization

List the cases you can see inside this session's organization.

Arguments

None. The user and organization come from the session.

Returns

An array of { id, name, role }. The role is your effective role on that case.

  • Takes no input. The user and organization come from the session, so a prompt cannot point it at a different organization.
get_caseviewer on the case

Read one case by id, including its investigations.

Arguments
  • caseId uuidrequired
Returns

The case record with its investigations.

  • The member list is hidden from viewers, the same way it is hidden in the app.
list_investigationsviewer on the case

List the investigations under a case.

Arguments
  • caseId uuidrequired
Returns

The investigation rows for that case.

Read

Read the case

The graph, the productions, the entity catalog, the declaration library, and the data room.

get_case_dataviewer on the case

One aggregated overview of a case: investigations, productions, and the data room manifest.

Arguments
  • caseId uuidrequired
Returns

{ investigations: [{ id, name, traceCount, totalNodes, totalEdges }], productions: [{ id, name, type }], dataRoom: { available, fileCount, truncated, files } }

  • Production payloads are omitted. Use read_production for the contents of one.
  • The embedded manifest stops at 25 files. Use list_data_room_files for the rest.
get_investigationviewer on the case

Read an investigation's graph, or a summary of every investigation in the case.

Arguments
  • caseId uuidrequired
  • investigationId uuidoptional · omit for summaries across the whole case
  • address stringoptional · narrow to nodes and edges touching this address
  • token stringoptional · narrow to edges carrying this token symbol
Returns

Without investigationId: [{ id, name, notes, traces: [{ id, name, nodeCount, edgeCount }] }]. With it: the graph per trace, with nodes, edges denormalized to carry from and to addresses, groups, and bundles.

  • Visual metadata such as node positions is stripped before the graph is handed to the agent.
  • Exempt from the 8 KB result cap. A slimmed graph routinely exceeds it.
  • An investigation id that does not belong to the case comes back as a normal result carrying { error }, not as a tool error.
read_productionviewer on the case

Read one production in full, or list every production on a case.

Arguments
  • caseId uuidrequired
  • productionId uuidoptional · omit to list instead of read
  • type report | chart | chronology | declaration | redlineoptional · filters the list form
Returns

With productionId: the production including its data payload. Without: the summaries for the case.

query_labeled_entitiesorganization

Look up exchanges, contracts, and known wallets by address, or search the catalog by name and category.

Arguments
  • address stringoptional · exact lookup, takes precedence
  • search stringoptional
  • category entity categoryoptional
Returns

The matching entity for an address lookup, or the filtered list for a search.

  • No case scope. The catalog is shared across the organization.
list_data_room_filesviewer on the case

The data room manifest: id, name, mimeType, size, and folder path.

Arguments
  • caseId uuidrequired
Returns

{ files, total, truncated } for up to 500 files. Check truncated before assuming the list is complete.

  • Exempt from the 8 KB result cap.
read_data_room_fileviewer on the case

Read one data room file's contents.

Arguments
  • caseId uuidrequired
  • fileId uuidrequired · from list_data_room_files or the get_case_data manifest
Returns

docx, pdf, xlsx, csv, and txt come back as extracted text. Images come back as an image block. A file over the limit comes back as a note stating its size.

  • PDFs are read up to 32 MB. Every other type stops at 5 MB.
  • Exempt from the 8 KB result cap.
get_declarantsorganization

The organization's saved expert witness profiles, for filling a declaration's qualifications.

Arguments

None. The user and organization come from the session.

Returns

{ declarants: [{ id, displayName, title, firm, qualifications, cvExhibit, priorTestimony, hourlyRate, nonContingencyDisclosure, dateOfBirth, address, userId }] }

get_declaration_libraryorganization

The organization's reusable boilerplate blocks: technical chain primers and authentication language.

Arguments
  • kind "boilerplate"optional
Returns

{ blocks: [{ id, kind, name, category, content }] }

get_skillany connected agent

Pull a workflow document by name when the agent needs the procedure mid-task.

Arguments
  • name stringrequired · the tool description lists every valid name
Returns

The skill's markdown, frontmatter stripped. An unknown name returns { error } listing the valid names.

Blockchain

Pull from the chain

Seven chains on Daubert's server side API keys. There are no keys of your own to manage and no case scope on these calls.

blockchain_fetch_historyany connected agent

Transaction history for an address: native transactions and token transfers, merged and sorted newest first.

Arguments
  • address stringrequired
  • chain ethereum | polygon | arbitrum | base | tron | bitcoin | solanarequired
  • startDate YYYY-MM-DDoptional
  • endDate YYYY-MM-DDoptional
  • maxTotal integeroptional · caps how many rows the server fetches
Returns

{ transactions, chain, address } and, when the payload had to be cut, truncated: true with totalCount so the agent knows how many rows exist.

  • Bitcoin input and output arrays are collapsed to counts before the result is sized, so a large consolidation does not consume the whole budget.
  • The array is trimmed to fit 8 KB rather than sliced mid object, so the agent always receives well formed JSON.
blockchain_get_transactionany connected agent

One transaction by hash.

Arguments
  • txHash stringrequired
  • chain chain idrequired
Returns

From, to, amount, token transfers, and error status. Bitcoin rows carry the full input and output detail.

  • Past 100 combined inputs and outputs the utxo block is collapsed to counts, the same way history rows are.
blockchain_get_address_infoany connected agent

Balance, wallet or contract, and a known label if there is one.

Arguments
  • address stringrequired
  • chain chain idrequired
Returns

{ address, addressType, balance, label? }

Write

Put work back in the case

Editor on the case is required. Every call, successful or refused, writes an audit row naming the session.

create_investigationeditor on the case

Open a new investigation under a case.

Arguments
  • caseId uuidrequired
  • name stringrequired
  • notes stringoptional
Returns

The created investigation.

  • Audited as create_investigation against case:<caseId>.
import_transactionseditor on the case

Write transactions into a trace.

Arguments
  • traceId uuidrequired
  • transactions arrayrequired · from, to, txHash, chain, timestamp, amount, token, and optional blockNumber, fromLabel, toLabel, utxo, solana
Returns

A count of what was added, plus the nodes that were created.

  • Addresses that are not yet on the graph become nodes automatically.
  • Rows are deduplicated by transaction hash, sender, and recipient.
  • The utxo and solana provenance blocks are strict. An invented or misspelled field inside them is refused rather than dropped, because a silently missing field there is a silently wrong exhibit.
  • Audited as import_transactions against trace:<traceId>.
create_productioneditor on the case

Start a report, chart, chronology, declaration, or redline on a case.

Arguments
  • caseId uuidrequired
  • name stringrequired
  • type report | chart | chronology | declaration | redlinerequired
  • data objectrequired · declarations take formatId and caption. redlines take sourceFileId
Returns

The created production.

  • Declaration formats: ca-declaration, ny-affirmation, federal-1746, tx-declaration, fl-declaration. The server seeds the section skeleton and renders the oath, caption, and numbering.
  • tx-declaration additionally requires declarantDateOfBirth and declarantAddress.
  • A redline snapshots the text of the source file into an immutable baseline at creation, so the review cannot drift from the draft it reviewed.
  • Audited as create_production against case:<caseId>.
update_productioneditor on the case

Rename a production, replace its payload, or apply atomic operations to it.

Arguments
  • productionId uuidrequired
  • name stringoptional
  • data objectoptional · mutually exclusive with ops
  • ops arrayoptional · mutually exclusive with data
Returns

The updated production.

  • Chronology and chart operations are documented in the productions skill. Declaration operations are in the declarations skill. Redline operations are in the redlining skill.
  • Redline anchors must be quoted verbatim, at least eight characters, and contained in one paragraph.
  • Audited as update_production against production:<productionId>, recording which fields were touched.

07Prompts and skills

Tool names alone do not teach an agent how a declaration is structured or what a valid redline anchor looks like. Daubert registers seven workflow documents as MCP prompts, so the method arrives with the connection rather than having to be pasted into a system prompt.

PromptWhat it covers
daubert-overviewOrientation. How Daubert is organized, the tool surface, the fetch to import workflow, the access model, and the execution constraints. The one an agent reads first.
graph-mutationsAdding, editing, and deleting nodes, edges, and groups inside a trace.
etherscan-apisEtherscan V2 reference for EVM chain queries.
tronscan-apisTronscan and TronGrid reference for TRON queries.
productionsBuilding reports, charts, and chronologies for a case.
declarationsDrafting court ready declarations across the five jurisdiction formats, with the structured operations and exhibit conventions.
redliningReviewing a draft against the case record and proposing tracked changes anchored to the text.

get_skill reads more than the seven registered prompts. Three further documents are available by name and are worth pulling when the work calls for them: bitcoin-apis for Esplora UTXO queries, solana-apis for the Helius parsed transaction API, and product-knowledge for answering questions about Daubert itself.

A missing skill file is skipped rather than fatal. A session with a document unavailable still connects, minus that prompt.

08Results, truncation, and errors

Tool results come back as JSON text. Most are capped at 8192 bytes. Past that the payload is cut and a suffix is appended saying how many bytes were dropped, so the agent is told explicitly that it is looking at part of something rather than treating a fragment as the whole.

What is exempt from the cap

  • get_investigation returns the full graph. A slimmed trace routinely exceeds 8 KB and cutting it would produce a graph missing edges without saying so.
  • list_data_room_files returns the manifest up to 500 entries, with a truncated flag of its own.
  • read_data_room_file returns the document. Text extraction is the point of the call.

blockchain_fetch_history handles the cap differently again. Rather than slicing raw bytes and handing back broken JSON, it trims the transaction array to the number of rows that fit and sets truncated: true with totalCount, so the agent knows how much history exists beyond what it received. Bitcoin input and output arrays are collapsed to counts first, so one large consolidation cannot consume the entire budget.

Errors do not end the conversation

A refused or failed tool call comes back as a normal result marked isError, carrying the message. It does not throw through the transport and it does not close the session. The agent reads the message, corrects itself, and carries on. That is why an agent that asks for a case in the wrong organization can recover in the same turn instead of dropping the connection.

09Limits and lifetimes

LimitValueWhere it applies
Requests per address20 per minuteBefore authentication runs. Refused with 429 and a Retry-After header.
Calls per session60 per minuteAfter the membership check, so a revoked session does not consume a bucket it no longer owns.
Tool result payload8192 bytesEvery tool except the three graph and document reads listed above.
Data room manifest25 filesInside get_case_data. Use list_data_room_files for the full list.
Data room listing500 fileslist_data_room_files. Check the truncated flag.
File read5 MB · 32 MBMost types stop at 5 MB. PDFs are read up to 32 MB.
Access token1 hourRefreshed automatically by the client, without a new consent screen.
Refresh token30 daysSliding. Every exchange resets it, so an agent in regular use stays connected.
Authorization code60 secondsSingle use, between the consent screen and the token exchange.
Agent actions in the app50 rowsThe most recent 50 agent writes shown under your account.

Token lifetimes are the deployment defaults and can be tightened per environment. The rate limits are enforced per server instance.

10Chains

Chain access runs on Daubert's server side API keys. There is nothing for you to provision and no key to rotate.

ChainIdNativeAddress shape
EthereumethereumETH0x followed by 40 hex characters
PolygonpolygonMATIC0x followed by 40 hex characters
ArbitrumarbitrumETH0x followed by 40 hex characters
BasebaseETH0x followed by 40 hex characters
TRONtronTRXT followed by 33 base58 characters
BitcoinbitcoinBTCbc1…, or a legacy 1… or 3…
SolanasolanaSOLbare base58, 32 to 44 characters

A legacy Bitcoin address starting 1 or 3 is also a valid base58 string, which makes it shape-ambiguous with Solana. Daubert resolves that in Bitcoin's favor, and the tool descriptions say so, so an agent picking a chain from an address alone does not silently query the wrong network.

Bitcoin transfers carry their UTXO provenance: inputs, outputs, fee, change evidence, and confirmation state. Solana transfers carry a transfer index, fee payer, and mint detail. Both survive import_transactions intact, and both are validated strictly on the way in, because a dropped field there is a wrong exhibit rather than a cosmetic loss.

11Audit and revocation

The case file records what the agent did the same way it records what you did.

  • Every write is audited. The session, the user, the organization, the action, the target, and the outcome. Successes and refusals both.
  • Failures are audited too. A write the role gate refused leaves a row saying so. An agent cannot probe for access quietly.
  • Reads are not audited. They are bounded by role, not by paperwork.
  • Audit rows outlive sessions. Revoke a session and its history stays, still labeled with the agent that did the work.
ActionTarget
create_investigationcase:<caseId>
import_transactionstrace:<traceId>
create_productioncase:<caseId>
update_productionproduction:<productionId>

Under Account · Connected Agents you see every session you have granted, with its label, when it was created, and when it was last used, alongside the most recent agent actions. Revoking one is immediate and affects only that session. Your other agents keep working.

Revocation is not the only kill switch. Removing someone from the organization stops all of their agents on the next call, without anyone having to find the sessions first.

12When something is wrong

The sign-in loop repeats
The client did not keep the token. Remove the connector and add it again. Registration is dynamic, so re-adding costs nothing and issues a fresh session.
Everything stopped mid conversation
Usually membership_revoked. Your organization membership was removed or downgraded to guest. That check runs per call, so it takes effect immediately rather than when the token expires.
The agent says a case does not exist
The id is not in this session's organization. Have it call list_cases and work from those ids. A session is bound to one organization and cannot reach another.
Writes fail but reads work
You hold viewer on that case. Reads are gated at viewer and writes at editor.
Results arrive incomplete
The 8 KB cap. Narrow the call: pass an address or token filter to get_investigation, a date range to blockchain_fetch_history, or read one production instead of listing them all.
Calls start failing in bursts
A rate limit. Sixty calls a minute per session, twenty a minute per address before authentication. Both windows slide, so they clear on their own.
The agent invents a workflow
It has not read the procedure. Ask it to pull the relevant skill first, or invoke the matching prompt. declarations and redlining in particular carry rules that cannot be guessed from tool names.

Still stuck? Request access or get in touch and a person will read it. Tell us what the agent was doing and what came back instead.

Get early access

Point your agent at a real case.

We’re onboarding a small group of design partners through the preview. Tell us the matter you’d run through it.

  • Free during preview. No card, no quota.
  • Works with the agent you already use.
  • You keep ownership of your data.

Already have an account? Paste https://api.dauberts.ai/mcp into your agent and follow the setup steps.

We read every one. Replies come from a real person, not a sequence.