{"name":"Ankiren STEM Studio MCP Server","version":"1.0.0","description":"MCP server cho stem.ankiren.com/studio — robot mẫu, project của bạn (mô hình 3D, mạch .brd, code Arduino .ino)","mcp_endpoint":"https://mcp-stem.ankiren.com/mcp","auth":"OAuth 2.1 (PKCE) qua iam.ankiren.com, hoặc Authorization: Bearer <Personal Access Token ank_…>","tools":[{"name":"list_projects","description":"Danh sách project Studio của bạn (mới sửa trước), mỗi project kèm file, dung lượng và link mở trong Studio. Trả về cả dung lượng đã dùng và hạn mức của tài khoản."},{"name":"get_project","description":"Chi tiết một project: tên, mô tả, danh sách file (loại, kích thước, sửa được qua MCP hay không), thiết lập mô hình, link Studio."},{"name":"create_project","description":"Tạo project mới (rỗng) trong Studio. Một project là một robot: một mô hình 3D, một mạch .brd và một code .ino — thêm file bằng add_file theo thứ tự mô hình 3D → mạch .brd → code .ino (Studio chỉ cho lập trình khi đã có mô hình và mạch). Trả về project kèm link mở trong Studio."},{"name":"update_project","description":"Đổi tên và/hoặc mô tả project. Truyền description rỗng \"\" để xoá mô tả."},{"name":"delete_project","description":"Xoá hẳn một project cùng mọi file của nó — không hoàn tác được. Phải truyền confirm = tên project y hệt."},{"name":"add_file","description":"Thêm file vào project (hoặc thay file cùng loại — mỗi project chỉ một mô hình 3D, một .brd, một .ino). Code .ino chỉ thêm được khi project đã có mô hình 3D và mạch .brd. File chữ (.ino code Arduino, .brd mạch Eagle/Tinkercad, .obj, .gltf) truyền `content`; file nhị phân (.glb, .stl, .step, .ply) truyền `contentBase64` (tối đa 10 MB — file lớn hơn tải lên trong Studio)."},{"name":"read_file","description":"Đọc nội dung một file chữ trong project (.ino, .brd, .obj, .gltf), có số dòng. File nhị phân chỉ trả thông tin (tên, kích thước)."},{"name":"edit_file","description":"Sửa một file chữ trong project (.ino, .brd, .obj, .gltf). Hai cách: `edits` — danh sách {oldText, newText}, mỗi oldText phải xuất hiện ĐÚNG MỘT LẦN trong file (thêm vài dòng xung quanh cho đủ riêng), áp theo thứ tự, sai một cái thì không ghi gì; hoặc `content` — ghi đè cả file. Đọc file bằng read_file trước khi sửa."},{"name":"delete_file","description":"Xoá một file khỏi project (xoá mô hình 3D thì ảnh thu nhỏ của project cũng bị xoá)."}]}