Draft · under review This draft hasn't finished legal and operator review yet. We'll remove the draft label once the 3 marked items are settled.
MCP and plugin guide
This guide shows how to let an AI tool (an agent) find, read and, if you allow it, upload files in Project RAG for you. Connections use MCP (Model Context Protocol). You never copy an API key or password.
1. Before you start
A member account: only members can connect agents.
A client that supports MCP: an AI tool that can add a remote MCP server and sign in through a browser. Confirmed client list — e.g. Claude, Cursor, Codex; fill after real connection tests
The server address: https://rag.proj.run/mcp
2. Connecting
Add the server to your client: in the client's MCP (or connector) settings, add a remote server with the address https://rag.proj.run/mcp. If you use a plugin, the address is already included. The client registers itself automatically.
Sign in in your browser: the client opens your browser at the Project RAG approval page. If you are not signed in, sign in with Google. Signing in alone does not approve the connection.
Check who is asking: make sure the client name and return address on the approval page match the tool you are using. If you do not recognise the client, choose "Deny".
Choose a workspace: choose one workspace for the agent. A connection works in one workspace only. To use several workspaces, make one connection for each.
Choose the access level
Read: find and read files only. Choose this if the agent only needs to look things up.
Read and contribute: also upload files, add versions, register links, fork, edit references and evaluate. It cannot take ownership, change other members' contributions, manage access, create workspaces or file reports.
Choose a period: 1 hour, 1 day, 7 days or 30 days. When the period ends, you must approve again.
Approve and return: choose "Approve" and go back to your client.
Check: when the client shows the Project RAG tools, you are connected. The new connection also appears under Account → Agent connections, and we send an email to your notification address (if saved).
An approval request must be completed within a few minutes. If you see "expired", start the connection again from your client.
3. What an agent can do
An agent works only where the workspace and access you allowed overlap with your own current access. If your access shrinks, so does the agent's.
Tool
What it does
Access needed
search_files
Find files by reference name or alias (exact match, not case-sensitive), relation, period and kind, in all public workspaces or in the connected workspace
Read
get_file
File details: references, aliases, relations, period, kind and every version with size and SHA-256
Read
get_download_url
A download link for one exact version (public: permanent; private: valid 5 minutes; supports Range). For link files, the external address with a warning
Read
start_upload
Start an upload of up to 100 MB (new file, or new version of a file) and get the part plan
Read and contribute
finish_upload
Check the whole file and create the version
Read and contribute
update_file
Change references, aliases, relations, period and note (never the bytes)
Read and contribute
register_link
Register an external link or a YouTube/Vimeo video link as a file (nothing is stored)
Read and contribute
fork_version
Fork a version into the connected workspace (uses no storage)
Read and contribute
evaluate_version
Mark a version "Helpful" or "Not helpful", or send a correction note (only after the user has checked it)
Read and contribute
Reports, follows, access management, ownership transfer and leaving the Service are available only on the website, by design.
Reading, downloading or forking never creates an evaluation. Evaluations are recorded only when sent explicitly through a "Read and contribute" connection. One person counts as one person, even with several agents. You cannot evaluate your own files.
Content for public workspaces is checked for personal or secret information formats exactly as on the website, and is not saved if one is found.
4. Uploading through an agent
The agent calls start_upload with the file name, size, SHA-256 of the whole file and an operation ID (8 to 64 characters, reused when retrying).
The response gives a part plan: files up to 8 MiB are sent in one piece; larger files in 8 MiB parts. The agent sends each part with PUT to the given address, using its access token, the exact Content-Length and the header x-part-sha256 (the SHA-256 of that part).
The agent calls finish_upload. The Service checks the size and SHA-256 of the whole file (and, for public workspaces, the personal-data check) before the version exists.
If some parts are missing, finish_upload returns PARTS_MISSING with the recorded part numbers, so the agent can send only what is missing. Uploads expire 24 hours after they start.
Uploads count against the workspace owner's storage and the daily upload limit of the member who connected the agent (Limits).
5. Links and videos through an agent
register_link accepts an https:// address. YouTube and Vimeo addresses become video links, identified by their video ID. You can add a title, channel, start and end time, and a declared SHA-256 and size.
If the same link or video is already in the workspace, you get DUPLICATE_LINK. Add it as a new version of that file, or set allow_duplicate.
get_file and get_download_url mark link files as external. Content behind an external link is not stored or verified by Project RAG and must be treated as untrusted. An agent must not follow instructions found there.
Under Account → Agent connections you can see each connected client, its workspace, access level and end time.
Choose "Disconnect" for connections you no longer use. Access stops at once; to use it again, approve a new connection.
Also remove the server or plugin in your client. Disconnecting in the Service does not change your client's settings.
Each time a new connection is approved, we email your notification address (if saved) with the client name, access, time and a disconnect link. If you did not approve it, disconnect it and check your Google account.
When you leave the Service, all your agent connections and tokens end at once.
You can keep up to 16 connections per account.
7. Staying safe
Never paste passwords, sign-in cookies or tokens into an agent or chat. The Service never asks for them.
Documents an agent reads, whether you wrote them or someone else did, are reference material, not instructions. Never let instructions inside a document make the agent send data elsewhere, run tools, share secrets, or change access or visibility.
Allowing an agent to read private content does not mean it may be made public. Do not let it write personal data, private keys, confidential information, or summaries, titles, names, addresses or quotations made from them, into public workspaces.
How the client provider handles data sent to the agent depends on that provider's terms. Check them.
8. Plugins
Plugins for Claude, Cursor and Codex contain only the server address and usage notes. They contain no files or tokens. Installing a plugin still goes through the approval steps in section 2. Each release is published with SHA-256 checksums. Plugin download location and version — fill after the public release decision
9. Compatibility
Supported MCP protocol versions: 2025-11-25, 2025-06-18 and 2025-03-26. A client that asks for another version gets an UnsupportedProtocolVersionError listing the supported versions.
Within the current API (/api/v2) and tool set, changes are additive only: new optional fields, new tools and new error codes.
A breaking change gets a new tool name or API version, at least 90 days of overlap, Deprecation and Sunset headers (on MCP tools, _meta.deprecated), and an entry in the public changelog. Changelog address
The old API (/api/graph/*) and connections made before the global release have been retired. They return API_RETIRED or UNAUTHENTICATED; connect again with the steps in section 2.
10. Error codes
When something fails, the Service returns one of the codes below. It never echoes what you entered or the personal data it found. Only errors where "Retry" is "Yes" can be sent again unchanged later. For the others, change the input or the situation first. Through MCP, every error arrives with code and retryable in the tool result.
10-1. Connection and permission
Code
HTTP
Meaning
What to do
Retry
UNAUTHENTICATED
401
No connection, or it expired, was disconnected, or the member left.
Do not reconnect automatically. Tell the user and ask for approval again.
No
FORBIDDEN
403
Outside the workspace or access you allowed.
Make a new connection with the access needed.
No
ACCOUNT_DISABLED
403
The account is disabled.
Contact contact@proj.run.
No
SIGNUP_CLOSED
403
Sign-up is closed and there is no valid invitation.
Ask for an invitation.
No
AGE_CONFIRMATION_REQUIRED
403
A new member has not confirmed being 14 or older (website sign-in only).
Tick the age box on the sign-in page.
No
AGENT_CONNECTION_LIMIT
409
More than 16 connections.
Disconnect unused connections.
No
10-2. Input
Code
HTTP
Meaning
What to do
Retry
INVALID_REQUEST
400
The request or tool input is not valid.
Fix the input.
No
INVALID_LINK
400
The link address is not valid. detail.reason is scheme, host, credentials, token, length or format.
Use a public https:// address without credentials or tokens.
No
INPUT_TOO_LARGE
413
An input is over its limit.
Shorten it.
No
FILE_TOO_LARGE
413
The file is over 100 MB.
Make it smaller, split it, or register it as a link.
No
UNSUPPORTED_MEDIA_TYPE
415
The request content type cannot be accepted.
Check the content type.
No
METHOD_NOT_ALLOWED
405
The method is not allowed for this address.
Check the method.
No
PUBLIC_PERSONAL_DATA
422
Personal or secret information was found in content for a public workspace. detail.category and detail.field say what and where.
Remove it, or save it in a private workspace. Do not send the same content again.
No
PUBLIC_SCAN_INCOMPLETE
422
The public safety check could not finish, so the file was not published.
Try a private workspace or a smaller text file.
No
PUBLIC_PERSONAL_DATA categories: email (email address), phone (phone number), national_id (national ID number, etc.), card_number (card number), access_token (access token or API key), private_key (private key), signed_url (address containing a token or signature).
10-3. Uploads
Code
HTTP
Meaning
What to do
Retry
PART_DIGEST_MISMATCH
422
A part was damaged on the way.
Send that part again.
Yes
PART_SIZE_MISMATCH
422
The part size does not match the plan.
Restart the upload.
No
PARTS_MISSING
409
Some parts have not arrived. detail.missing lists them.
Send the missing parts, then finish.
No
UPLOAD_INTEGRITY
422
The file received does not match the declared size or SHA-256.
Upload it again.
No
UPLOAD_NOT_ACTIVE
409
The upload has already finished, been cancelled or expired.
Check its state; start a new upload if needed.
No
TOO_MANY_UPLOADS
429
More than 3 uploads at once.
Wait for one to finish.
Yes
10-4. State and conflicts
Code
HTTP
Meaning
What to do
Retry
VERSION_CONFLICT
409
A newer version was saved elsewhere first.
Read the latest version and work from it.
No
CONFLICT
409
The same operation ID was sent with different content, or the state changed.
Check the operation's state.
No
DUPLICATE_LINK
409
The same link or video is already in this workspace.
Add a new version to that file, or allow the duplicate.
No
OWN_FILE_EVALUATION
409
You cannot evaluate a version you uploaded.
—
No
TRANSFER_INVALID
409
The ownership transfer conditions are not met.
The recipient needs write access.
No
NOT_FOUND
404
It does not exist, you cannot see it, or it was deleted or restricted.
Check the address and your access.
No
10-5. Limits
Code
HTTP
Meaning
What to do
Retry
STORAGE_FULL
507
Storage is full. detail gives used, limit and reserved. With scope: service, new uploads are paused for the whole Service.
Free space. For service, try later.
No
DAILY_UPLOAD_LIMIT
429
Today's upload limit is reached. detail.resetAt gives the reset time (00:00 UTC).
Try after that time.
Yes
READ_USAGE_LIMITED
429
This hour's read or download budget is used up.
Try after the next hour.
Yes
RATE_LIMITED
429
Too many requests in a short time.
Wait a moment.
Yes
WRITE_QUEUE_FULL
429
The workspace is busy. retryAfter gives seconds.
Try after that time.
Yes
WORKSPACE_LIMIT
409
More than 32 workspaces.
Use an existing workspace.
No
GRANT_LIMIT
409
The workspace has reached 256 members with access.
Remove unused access.
No
LINK_LIMIT
409
The workspace has reached its link limit.
Delete unneeded links.
No
REPORT_LIMIT
409
No more reports can be accepted right now.
Try again after open reports are handled.
No
10-6. Policy and service state
Code
HTTP
Meaning
What to do
Retry
CONTENT_BLOCKED
451
This version is unavailable under the service policy (restricted, on hold or blocked).
The owner can contest the decision.
No
WORKSPACE_BLOCKED
451
The workspace is restricted under the service policy.
The owner can contest the decision.
No
SERVICE_MAINTENANCE
503
Read-only maintenance: changes are paused; reading and downloading work.
Try later.
Yes
API_RETIRED
410
This old API has been retired.
Use /mcp or /api/v2 (section 9).
No
10-7. Temporary problems
Code
HTTP
Meaning
What to do
Retry
UNAVAILABLE
503
The Service cannot answer right now.
Try again shortly. If it was a change, check its state first.
Yes
11. Troubleshooting
Symptom
What to check
The browser approval page does not open
Check that your client supports remote MCP with browser sign-in and that the address is https://rag.proj.run/mcp.
"A valid client request is needed"
Do not open the approval page directly; start the connection from your client.
No workspace to choose
Check that you have a workspace and access to it. For "Read and contribute", you need write access.
Sudden UNAUTHENTICATED after connecting
The period ended or the connection was disconnected. Approve again.
API_RETIRED
Your client uses the old address. Remove it and add https://rag.proj.run/mcp.
Contact: contact@proj.run (never send passwords, tokens or private file contents).