FeaturesSecurityPricingCompareDevelopersBlogStart Free

Agent guide · 26 September 2026

Set up a data room with Claude Code, Cursor or Codex

A local coding agent is the easiest client for a data room, because the hard part of setting one up is moving a folder of files, and a local agent can see the folder. One command connects it; “upload this folder” then works as written.

  1. request_upload_urls
    25 files per call
  2. PUT bytes
    auth.sifrsys.com, ≤100 MB
  3. finalize_uploads
    starts processing
  4. Searchable
    about a minute later
The upload path a local agent uses. Every arrow except the PUT is an MCP tool call.

Before you connect: an API key

Step 1. Create a key

In Sifrsys, Settings → Agents & API → Create key. Scopes only narrow what a key can do; a key can never exceed the current role of the person who created it, and creating rooms needs an admin or owner. The key (sifr_live_…) is shown once. Put it in your shell environment rather than in a file you might commit:

export SIFRSYS_MCP_KEY="sifr_live_..."

The one-command install

Step 2. Connect your agent

Syntax below is from each tool's own documentation, checked 26 September 2026.

Claude Code (add --scope user before the name to use it in every project)
claude mcp add --transport http sifrsys https://sifrsys.com/mcp \
  --header "Authorization: Bearer $SIFRSYS_MCP_KEY"

Check it with claude mcp list, or /mcp inside a session. Avoid --scope project for this server: that writes .mcp.json, which is meant to be committed, and the key would go with it.

Cursor: .cursor/mcp.json in the project, or ~/.cursor/mcp.json for all projects
{
  "mcpServers": {
    "sifrsys": {
      "url": "https://sifrsys.com/mcp",
      "headers": { "Authorization": "Bearer ${env:SIFRSYS_MCP_KEY}" }
    }
  }
}
Codex CLI: ~/.codex/config.toml
[mcp_servers.sifrsys]
url = "https://sifrsys.com/mcp"
bearer_token_env_var = "SIFRSYS_MCP_KEY"

In Codex, codex mcp list or /mcp in the TUI confirms the server is loaded.

A seed-round setup, start to finish

Step 3. Point it at the folder

Run the agent from the directory that holds the documents and give it the whole job in one message. Below is what a Claude Code session looks like. It is abridged: identifiers are shortened and each result is cut to the fields that matter, but the tool names, arguments and field names are the ones the Sifrsys server uses.

Claude Code session (abridged)
> Set up a data room for our seed round from ./seed-docs. Call it
  "Acme — Seed Round". Upload everything, sort it into Corporate,
  Financials, Legal, Team and Product, then invite Jane Doe
  (jane@fund.example) and Mark Lee (mark@capital.example) as a
  "Lead investors" group: view-only, watermarked, no downloads.

● sifrsys - create_data_room (name: "Acme — Seed Round")
  ⎿ room.id: 7c1e…   upload_page_url: https://sifrsys.com/room/7c1e…

● Bash(ls -la ./seed-docs)
  ⎿ 14 files: deck, model (.xlsx), cap table, charter, SAFEs, …

● sifrsys - request_upload_urls (room_id: 7c1e…, files: [14 items])
  ⎿ uploads[]: { filename, upload_url (auth.sifrsys.com), document_id,
     version_id, expires_at }  next_step: "PUT each file's bytes…"

● Bash(for each file: curl -sf -X PUT -H "Content-Type: <mime>"
       --data-binary @"<file>" "<upload_url>")
  ⎿ 14 × HTTP 200

● sifrsys - finalize_uploads (room_id: 7c1e…, uploads: [14 pairs])
  ⎿ finalized[]: { document_id, version_id, status }

● sifrsys - organize_documents (create_folders: [5], apply: false)
  ⎿ 5 folders created; a suggested folder + confidence per document

  Here is where Smart Sort would put each file. Two are below 0.7
  (the board consent and the advisor agreement) and would stay put.
  Apply?

> Yes, and put those two in Legal.

● sifrsys - organize_documents (apply: true)
● sifrsys - invite_participants (new_group: "Lead investors",
     permission_level: view, watermark_enabled: true, can_download: false,
     invites: [2])
  ⎿ group created. pending_approval: { approval_id: 3f9a…,
     action_class: invite_external, summary: "Bulk-invite 2 participants
     to the room", expires_in_hours: 24 }

  The invitations are waiting for an admin to approve them in Sifrsys
  (Settings → Agents & API). Tell me when that's done.

> Approved.

● sifrsys - get_pending_approvals (approval_id: 3f9a…)   ⎿ status: approved
● sifrsys - invite_participants (group_id: …, invites: [2],
     approval_id: 3f9a…)
  ⎿ 2 invitations sent

> What does the model say our runway is? Cite the cells.

● sifrsys - ask_room_ai (question: "…runway…")
  ⎿ answer_wrapped (marked as untrusted document content), citations[]

Step 4. Organize

Smart Sort always runs as a preview first unless you ask otherwise. Documents at or above 0.7 confidence move when it is applied; the rest stay where they are for you (or the agent, on your instruction) to place.

Step 5. Invite and approve

The group is created immediately; the invitations wait for an admin. Approvals are single-use and bound to the exact request, so the agent must retry the identical call with the approval_id, which it does on its own once it sees the status change.

Step 6. Ask and monitor

ask_room_ai answers from the room's documents with page and cell citations, and get_engagement_report shows who has opened what. Both are just as useful weeks later, from the same terminal.

Prompts to copy

Whole setup
Set up a Sifrsys data room called "Acme — Seed Round" from ./seed-docs: upload every file, create folders Corporate, Financials, Legal, Team and Product, preview Smart Sort and show me before applying.
A data room index the agent writes
Read the files in ./seed-docs and write a data room index (one line per document: folder, filename, what it is). Upload it to the room as "00 Index.txt".
Invitations
Invite these investors from investors.csv into a new "First look" group: view-only, watermarked, no downloads, Q&A on. Tell me when it needs my approval.
Staged disclosure
Give the "Lead investors" group download access to the Financials folder.
Diligence questions
Ask the room AI to list every change-of-control clause in the Legal folder, with the page each one is on.
Follow-up
Which investors haven't opened anything in the last 7 days? Draft a short nudge for each, but don't send anything.

The four upload paths

A local agent can use all four, but it will normally pick the signed URL because it is the only one that takes 100 MB files straight from disk. The others exist for cloud agents whose sandbox cannot make outbound requests; the claude.ai and ChatGPT guides explain when those apply.

The four ways a document gets into a room. All four run the same validation, storage quota, duplicate detection and audit logging.
CriterionToolLimitNeeds outbound network from the agent?
Signed URLAgent PUTs the bytesrequest_upload_urls → HTTP PUT → finalize_uploads100 MB per file, 25 files per call, URL valid about 5 minutesYes, to auth.sifrsys.com
InlineContent inside the tool callupload_inline_document4 MB decodedNo
From a linkSifrsys fetches itupload_from_url20 MB, https only, no login or cookiesNo
Upload page hand-offYou upload, the agent waitsupload_page_url, then get_room_overview until document_count risesWhatever your plan's storage allowsNo
The four ways a document gets into a room. All four run the same validation, storage quota, duplicate detection and audit logging.

Which agent for which situation

Which agent fits which situation. Client behaviour checked against each vendor's documentation on 26 September 2026; Sifrsys limits from the MCP server source.
Criterionclaude.ai (web, desktop)ChatGPT (developer mode)Claude Code, Cursor, Codex CLI
Sign-in to SifrsysOAuth consent screen, no key to pasteOAuth consent screen, no key to pasteAPI key (sifr_live_…) in a header
Files on your own diskThe common case for a seed roundAttach them to the chat and allow auth.sifrsys.com in network settings, or use the upload pageUpload page: you drop the files in, the agent carries onWorks natively: the agent reads the folder and uploads it
Files at an https linkupload_from_url, up to 20 MBupload_from_url, up to 20 MBAny of the four paths
Documents the agent writes (index, FAQ, summary)upload_inline_document, up to 4 MBupload_inline_document, up to 4 MBupload_inline_document, or write the file and upload it
Large filesSigned URL (100 MB) only once egress to auth.sifrsys.com is allowedUpload pageSigned URL, up to 100 MB each
Client plans that can connectFree (one custom connector), Pro, Max, Team, EnterprisePlus, Pro, Business, Enterprise, Edu, on the webAny: the client runs on your machine
Best forFounders who live in Claude and have a handful of filesTeams already on ChatGPT; organizing, inviting and asking once files are inA folder of 30+ files, repeatable setups, anything scripted
Which agent fits which situation. Client behaviour checked against each vendor's documentation on 26 September 2026; Sifrsys limits from the MCP server source.

What an agent is never allowed to do by default

Every Sifrsys organization has a policy matrix that sets each class of agent action to allow, require approval, or deny. The defaults below are the ones in the server code. An owner or admin can change them under Settings → Agents & API; nothing an agent says in a chat can.

Default agent policy per action class (DEFAULT_POLICIES in the gateway). A Q&A draft is never visible to the person who asked until it is published, and publishing needs your approval by default.
CriterionDefaultWhat it covers
DeniedRefused with denied_by_policyDeleting or suspending: documents, folders (and merging duplicate folders), participants, groups, and the room itself. Also changing room branding (configure_branding) and publishing the room's participant portal
Needs your approvalReturns a pending_approval handleSending or resending invitations (invite_participants, resend_invite); widening access: a permission on a specific document or folder (set_permissions), a more permissive group, a later or removed access expiry, reactivating a suspended participant; publishing a Q&A answer to the person who asked, assigning a question, changing its status
AllowedRuns immediately, loggedReading, creating rooms, uploading (including new versions of a document), renaming and moving documents and folders, removing empty folders, Smart Sort, creating groups, narrowing access, asking the room AI, drafting Q&A answers, restoring a suspended room
Default agent policy per action class (DEFAULT_POLICIES in the gateway). A Q&A draft is never visible to the person who asked until it is published, and publishing needs your approval by default.

An approval goes to the organization's admins by email and appears under Settings → Agents & API. It is single-use, matched to the exact request the agent made, and expires after 24 hours, so an approval for inviting two people cannot be replayed to invite a third. Every agent action, allowed or not, lands in the room's hash-chained audit log as actor_type=agent with the human who connected it. A key or connection can never do more than the person who created it, and an org-wide switch turns all agent access off at once.

Document text that comes back through ask_room_ai or list_qa is wrapped and labelled as untrusted data, because it was written by the other side of the deal. The threat model explains why.

Agent access is on every Sifrsys plan, the free one included. An agent works inside your plan's limits (the free plan is one room, 100 MB of storage and five participants per room), and the only agent meter is a monthly budget of room-AI questions: 250 on Free, 10,000 on Teams, 50,000 on Pro. Creating, uploading, organizing and inviting are not metered. Bursts are capped at 60 requests a minute per connection. Plans are on the pricing page.

Sources

Checked on 26 September 2026: Claude Code MCP documentation (claude mcp add --transport http … --header, scopes, /mcp); Cursor MCP documentation (mcp.json locations, ${env:NAME} interpolation in headers); OpenAI Codex MCP documentation (url and bearer_token_env_var in config.toml). Sifrsys tool names, limits and defaults are from the MCP server source; the reference is on the developers page and the REST surface is in the OpenAPI spec.

The other agent guides: With Claude (claude.ai) · With ChatGPT · Developer reference · The walkthrough, with the real tool calls

FAQ

Local agents and data rooms, answered.

Yes. Claude Code runs on your machine, so it can read the folder and make the HTTP requests itself. With Sifrsys connected it calls request_upload_urls for up to 25 files at a time, PUTs each file (up to 100 MB) to its signed URL on auth.sifrsys.com, and calls finalize_uploads. Cursor's agent and the Codex CLI work the same way.
claude mcp add --transport http sifrsys https://sifrsys.com/mcp --header "Authorization: Bearer $SIFRSYS_MCP_KEY", with SIFRSYS_MCP_KEY set to a sifr_live_ API key from Settings → Agents & API. Add --scope user before the name to make it available in every project.
No. A project-scoped .mcp.json is meant to be committed. Use the default local scope or --scope user in Claude Code, reference an environment variable in Cursor (${env:SIFRSYS_MCP_KEY}), and use bearer_token_env_var in Codex so the key never lands in a file you share.
The tools are identical. The differences are authentication (an API key instead of an OAuth consent screen) and network: a local agent can reach your files and auth.sifrsys.com directly, so none of the upload workarounds a cloud sandbox needs apply.
Not under the default policy. Invitations and per-document permission changes return a pending approval that an org admin approves in Sifrsys. Deleting, branding and portal publishing are denied outright.

Free plan includes agent access

One key, one command, one folder.

Create a free Sifrsys account, make a key under Settings → Agents & API, and run the install line above.

Start Free