Upload a file from any agent and get a private link back
Over MCP, A2A or a few REST calls: an agent saves a report, image or PDF to Tunc Art and hands you its private link.
Updated
Three ways in, one result: the file is on your Tunc account and the agent returns its link.
From an AI app, over MCP
Connect the app to https://mcp.tuncart.com/mcp; it signs in with your Tunc account in the browser. Then ask: "Save this report to Tunc Art and give me the link." The agent calls art_write. Files up to 8 MiB go inline; larger ones, up to 250 MiB, use a presigned upload.
| Client | Steps |
|---|---|
| claude.ai, Claude Desktop and Claude mobile | Settings → Connectors → Add custom connector → name Tunc Art, URL https://mcp.tuncart.com/mcp → Add → Connect. |
| Claude Code | Add the server, then run /mcp, choose tunc-art and Authenticate. |
| ChatGPT | Settings → Apps & Connectors → Advanced → turn on Developer mode → Create → name Tunc Art, URL https://mcp.tuncart.com/mcp, Authentication OAuth → Create → Connect. |
| Cursor | Add it to ~/.cursor/mcp.json, then Settings → MCP: it shows “Needs login” → Login. |
| VS Code (Copilot) | Command Palette → MCP: Add Server → HTTP → https://mcp.tuncart.com/mcp → name tunc-art → allow the sign-in prompt. |
| Gemini CLI | Add it to settings.json, then run /mcp auth tunc-art. |
| Copilot Studio | Tools → Add a tool → New tool → Model Context Protocol → URL https://mcp.tuncart.com/mcp → Authentication OAuth 2.0, Dynamic discovery. |
From your own code, over REST
Create an API key at https://tunchub.com/account/keys/new with "Upload Tunc Art files" ticked (keys made from tuncart.com start with it on), then call https://api.tuncart.com: start the upload, send the bytes to the upload URL, complete it.
# Files you can open (paged)
curl -s "https://api.tuncart.com/v1/files?limit=20" -H "Authorization: Bearer $TUNC_API_KEY"
# Upload: start, send the bytes to upload.url, then complete
curl -s https://api.tuncart.com/v1/files \
-H "Authorization: Bearer $TUNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"display_name":"q4-report.pdf","mime_type":"application/pdf","byte_count":482113}'
# → {"artifact":{"id":"…",…},"upload":{"method":"PUT","url":"…","headers":{…},…}}
curl -s https://api.tuncart.com/v1/files/<id>/complete \
-H "Authorization: Bearer $TUNC_API_KEY" \
-H "Content-Type: application/json" -d '{"byte_count":482113}'
# Download, and delete a file your key uploaded
curl -s https://api.tuncart.com/v1/files/<id>/content -H "Authorization: Bearer $TUNC_API_KEY" -o q4-report.pdf
curl -s -X DELETE https://api.tuncart.com/v1/files/<id> -H "Authorization: Bearer $TUNC_API_KEY"From another agent, over A2A
curl -s https://a2a.tuncart.com/v1 -H "Authorization: Bearer $TUNC_API_KEY" -H 'A2A-Version: 1.0' \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{
"messageId":"m-1","role":"ROLE_USER",
"parts":[{"data":{"skill":"art_read","arguments":{"operation":"list"}},"mediaType":"application/json"}]}}}'
# → {"jsonrpc":"2.0","id":1,"result":{"message":{"role":"ROLE_AGENT",
# "parts":[{"data":{…the tool's result…},"mediaType":"application/json"}],…}}}Keep the link next to the work
Agents connected to Tunc Orb can store a file's artifact_id in a record ({"artifact_id": "…"}) and open it later with art_read, so a report and its notes stay together.
