A shared workspace that is still just markdown
Members, roles and per-workspace permissions over plain markdown files — with your team's own share links and domain, and scoped tokens so the team's agents read exactly what the team decided.
“Working together meant leaving markdown behind.”
The moment a second person needs the document, the usual answer is a workspace tool with its own block format, its own export that loses half the structure, and a permission model that either shows everyone everything or takes an afternoon to configure. The files you could have kept in a folder become rows in someone else's database.
A Team account keeps the files. Same markdown, same folders, same editor, same .md download — with members, roles, and per-workspace access on top, and a tokened API and MCP server so the automations and agents you already run can reach the shared content without anyone sharing a password.
Three steps to a shared workspace
- 01
Create the Team
A Team account gets its own workspaces, folders and documents, opened from the Teams entry in the source rail. It never changes who owns your personal notes.
- 02
Invite with the access already set
Invite by email as an admin or a member, and choose each workspace permission before the invitation goes out. It stays editable while it is pending, and it also waits for them inside MDflow if the mail goes astray.
- 03
Write, share, automate
The same editor as everywhere else — plus Team share links, a Team custom domain, and scoped tokens for the team's agents.
Two tiers that never blur
A Team account sits beside your personal workspaces rather than absorbing them. The separation is deliberate, and it holds everywhere it matters.
- Team content has its own section. Team workspaces open from a Teams entry in the source rail, not mixed into your personal tree. On Teams routes the workspace switcher lists Team accounts and their workspaces; everywhere else it lists yours.
- Links and quick open never cross tiers.
⌘Kinside a Team workspace lists that workspace's documents, and typing@in a Team document suggests only its own workspace — so a link is always one every reader of that document can actually open. - Take a copy into your own workspace. Any Team document can be imported into one of your personal workspaces from its row menu. It is a snapshot: editing the copy changes nothing in the Team account, and read-only members can take one too, because the copy is written to their workspace rather than the Team's.
- Two subscriptions, neither implies the other. A Team seat grants Pro-equivalent entitlement for Team content — autosave and version history for every active member — without granting personal Pro. Personal Pro does not grant Team access either. Billing, grace and read-only states are tracked separately on both sides.
Permissions people actually use
Two roles and three per-workspace levels — enough to model a real team, few enough to hold in your head.
- Owner, admin, member. Owners and admins reach every Team workspace and can create, rename, describe, download or delete whole workspaces. Regular members get the workspaces they were given, and nothing else.
- Three levels, per workspace. No access hides a workspace completely. Read only keeps reading, search, copy, download, export, import and presentation while every Team-content change is off. Read, write & delete adds creating, organizing, editing, sharing, encrypting, restoring versions and deleting.
- Set before the invitation is answered. Workspace access on a pending invitation stays editable — including for workspaces created after it was sent — so the grants you chose apply the moment it is accepted. Failed deliveries are listed and can be retried.
- An invitation that does not need its email. Every invitation still waiting for someone is listed at the top of their Teams page, addressed to the email they signed in with, with accept and decline right there. A mail lost to a spam folder is no longer a dead end — and nobody has to forward a link that was only ever meant for one person.
- Promotion is a decision, not a slip. Promoting a member to admin clears their per-workspace access, because admins do not need it — and demoting them does not restore it. So the promotion asks for confirmation first.
- A 365-day audit feed. Every account, membership, invitation, workspace, folder, document, restore and export change is recorded in a Team-only feed, including writes made by an agent holding a Team token.
Everything the editor already does
A Team document is an MDflow document. The capabilities do not thin out because it is shared.
- The same editor, not a lesser one. Monaco with split preview, GitHub Flavored Markdown, source-scoped local drafts and conflict-aware saves — a stale save cannot silently overwrite a newer edit. Team documents rename inline from their row, and workspaces and folders take a description explaining what belongs in them.
- Images in Team documents. Drag, drop or paste JPEG, PNG or WebP up to 20 MB. Images are private to the people who can read that workspace, follow the document through duplication and public sharing, and a Team account can hold up to 10,000.
- Encryption the server cannot undo. The same password-based client-side encryption as personal documents. Anyone who knows the password can unlock the document on their own device — the password is shared between people directly, and MDflow never holds a key.
- Versions, decks and a way out. Bounded version history that active members can compare and restore, any document presentable as a slide deck, and a ZIP export of any workspace you are authorized for — the folder hierarchy and the markdown files, exactly as you would expect to get them back.
Know who is in the room
Shared documents get edited at awkward moments. MDflow shows you the people, so you can decide what to do about it.
- See who else has it open. Open a Team document and the people who currently have it open appear as a stack of faces in the header, each marked viewing, editing or idle. Several tabs of one person collapse into one face, and someone who closes the document drops out of the stack within seconds.
- The sidebar keeps itself current. When a teammate creates, renames, moves or deletes a document or folder, your tree updates on its own a moment later — no manual refresh, and no reload that would cost you an unsaved draft. A body-only save sends nothing, so nobody's typing refreshes everybody else's screen.
- Presence carries no document text. What travels between tabs is who is here, not what anyone is writing. Each reader re-reads the tree under their own permissions, so the notice that something changed can never show a workspace that person is not allowed to see.
- A face has to prove it belongs there. Nobody is identified by what their browser claims. Identity travels as a sealed ticket bound to one document, workspace and session, re-issued every minute — so a member whose access is withdrawn disappears from the room in seconds rather than lingering until they leave.
Publish outside the team
The same public link, the same reader — on your Team's own domain if you connect one.
- The same switch as a personal document. A writer flips public sharing on and anyone with the unguessable link can read the document, download it, fetch the raw
.mdtwin, present it, or clone it into their own MDflow account. No sign-in, no install. - Your Team’s own domain. The owner can connect one custom domain for the whole Team from Team settings. MDflow shows the DNS records to add and reports the connection status while DNS propagates, and the mdflow.cz link keeps working as the permanent backup so nothing already sent breaks.
- Internal links never leak. If a shared document links to another Team document, the link resolves to that document's own public share when it has one, and is stripped to plain text otherwise. A share never exposes an internal address.
- Links follow the subscription, not the mood. Team share links keep working through grace and read-only states and go dark only if the account is deleted. Turning sharing off invalidates a link permanently, and every toggle is recorded in the audit feed.
Tokens your agents can hold
Agent access is the reason most teams end up sharing a personal API key. A Team token means nobody has to.
- Tokens scoped to workspaces, not to everything. Any member can mint a named
mdt_token from the Team's API Access page, bound to that one Team account, granted only the workspaces they pick, and capped at read-only or read-and-write. It never gains access to workspaces created later. - Checked live, on every request. Effective access is the token grant ∩ the creator's current membership and role ∩ their current per-workspace permission ∩ the Team account's state. Removing a member deletes their tokens instantly; only a SHA-256 hash is stored and the plaintext is shown exactly once.
- A content-only REST API.
/api/team/v1lists accessible workspaces with their effective access level, and creates, reads, updates, moves and deletes folders and documents — with the same 60/min rate limits as the personal API. Membership, invitations and billing are deliberately not exposed. - A hosted Team MCP server.
/api/team/mcpexposes 16mdflow_team_*tools, including aget_contextretrieval that ranks folder descriptions first. Writes are attributed to the token's creator in the audit feed, so the log names a person, not “the API”.
Connect an MCP client
{
"mcpServers": {
"mdflow-team": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mdflow.cz/api/team/mcp",
"--header", "Authorization: Bearer mdt_YOUR_TEAM_TOKEN"]
}
}
}Or call it directly
# List the Team workspaces this token can reach
curl https://mdflow.cz/api/team/v1/workspaces \
-H "Authorization: Bearer mdt_YOUR_TEAM_TOKEN"
# Write a document into one of them
curl -X POST https://mdflow.cz/api/team/v1/documents \
-H "Authorization: Bearer mdt_YOUR_TEAM_TOKEN" \
-H "Content-Type: application/json" \
-d '{"folderId":"<folder-id>","title":"Release notes","body":"# 0.20.0\n"}'What it doesn't do
A Team account is shared markdown with real permissions — not a whole collaboration suite. What it deliberately does not do:
- No real-time co-editing of the text. You can see who else has the document open, but not their cursor or their keystrokes. Concurrent edits are still handled by conflict-aware saves and version history rather than by merging.
- No comments, collections or favorites on Team documents. Those personal features are held back until they have Team-specific persistence and authorization designs.
- The Team API is content only. Workspaces, folders and documents. Membership, invitations and billing are administered by people, in the app.
- Team MCP wants a bearer header. Claude Code, Cursor, Codex and mcp-remote work today; per-user OAuth for the hosted Claude.ai and ChatGPT connectors is a later phase.
- One domain per account, one account per domain. A Team connects a single custom domain, and a hostname can belong to only one MDflow account — personal or Team — at a time.
Questions
How much does a Team account cost?
Does a Team account change who owns my personal notes?
Can I give someone access to one workspace only?
Can two people edit the same Team document at once?
What if the invitation email never arrives?
Does the Team sidebar show what my colleagues are doing?
Can our AI agents read the Team workspace?
What happens if the Team subscription lapses?
Can we get our documents out?
Shared documents, without leaving markdown
Create a Team account, invite the people who need it with the access already chosen, and hand your agents a token scoped to exactly the workspaces they should see.
Team accounts are €9.99 per active member each month with a 7-day free trial, billed separately from personal Pro.