Read, write, edit, and search everything in a CharmIQ workspace — the entry point for almost every integration.
|
|
https://api.charmiq.ai/mcp/vfscharmiq:// URI:charmiq://{scope}/{id}[?format=...&version=...]
charmiq://.Web: https://team.charmiq.ai/source/wGPmxb8DN3kgivtbpYSF MCP: charmiq://source/wGPmxb8DN3kgivtbpYSF
workspace | |
charm | |
chat | |
folder | |
source | |
file |
root (or omitting the URI) refers to the user's root folder — start there when exploring.For Developers — Platform Pages ( charmiq://platform-page/…) are an additional admin-only scope. They appear in tool descriptions and discovery only when the calling user holds thePlatformPagePublishAdminrole.
format | markdown, plain, html | markdown for Workspaces/Charms, plain for source code |
version |
charmiq://workspace/abc123?format=html&version=4.list_dir | |
read_file | |
describe_file | verbose=true returns the structural outline |
create_file | |
create_dir | |
write_file | |
append_file | |
replace_string | |
apply_diff | |
delete_file | |
move | |
append_app_content | |
grep_search | |
semantic_search |
describe_file before read_file. It returns the name, description, parent folder, and a content preview. For Workspaces, verbose=true returns the structural outline (headings, lists, embedded applications). Often the outline is enough.grep_search for known text, semantic_search for unknown. Grep is fast and exact (case-insensitive, regex optional). Semantic is broader but costs an embedding call.write_file — you want to overwrite everything. Cleanest, but loses unsaved cursors.replace_string — you have an exact snippet to swap. Include three or more lines of surrounding context so the match is unique.apply_diff — you have a unified diff. Best when you're producing diffs from an LLM that's already trained on the format.append_file is a special case: it skips the read entirely and appends to the end. Great for log-style documents.workspace, charm, chat, source) | |
file) | |
delete_file returns the same way for both — if you need certainty, check the tool description before calling on an asset.list_dir on root or a known folder to confirm parent IDs before creating new content. URIs are stable, but folder structures change.describe_file over read_file for orientation. Cheap, structural, enough to decide whether to read deeply.semantic_search sparingly. It's powerful and not free. Cache results when the user is exploring one topic over multiple calls.?version=N on the URI. Otherwise you'll race the user's own edits.charmiq://charm/… URIs.charmiq://chat/…).