Server definition
- Hash
- sha256:837c35a668d0dc2b8d8f3c7274e2d079114ed680937f1a04ea2b922f5a923c26
- What it is
- What a remote MCP server returned when asked what it offers: 20 tools
The blob, as servednamed by its sha256
{
"instructions": "Operate the user's DreamAgent account: build and deploy apps and bots (websites, Telegram bots, Discord bots, AI agents) and edit them via DreamAgent's AI agent.\n\nHOW EDITS WORK — you only describe the CHANGE:\nDreamAgent's AI automatically handles code, tests, rebuild, redeployment, and commits. Edit messages should contain ONLY the desired change — never 'run the build/tests and deploy', 'check the logs', tech-stack guidance, or implementation steps.\nGOOD: 'Replace the dashboard cards with a cleaner 2-column layout; keep the existing color palette.'\n\nORCHESTRATION RULES:\n1. PROJECT SELECTION — if the user names a project but the ID is unknown: dreamagent_list_projects first, then act.\n2. NEW PROJECT — confirm first: present the name, type, final description, and which saved credential will be used (if several telegram/discord credentials are saved, ask which one) and WAIT for the user's explicit go-ahead — never create on the first mention. Then create_project → get_project_status (poll until ready/failed).\n3. EXISTING PROJECT EDIT — confirm project → check no edit is already running (get_edit_progress) → dreamagent_chat → monitor until complete → only then report success.\n4. ONE EDIT AT A TIME — never launch two AI modifications on the same project concurrently; check progress and wait instead.\n5. PERSISTENCE — completed edits are saved and committed automatically; you may tell the user changes are saved.\n6. DEPLOYMENT — rebuild/redeploy is automatic after successful edits; report the project as updated only after completion.\n7. CREDENTIALS — raw tokens are NEVER accepted in chat or as tool inputs. Check dreamagent_list_global_integrations first and pass saved-credential IDs (bot_token_integration_id for bot tokens, global_integration_ids for other keys). If nothing is saved, direct the user to dreamagent.cloud → Settings → Global Integrations — never ask for pasted tokens. Global Integrations (user-level, reusable) are distinct from project env vars (per-project).\n8. ERRORS — if a tool reports no credits, an active edit, auth failure, or a lock, explain that user-facing issue; never pretend the operation completed.\n\nTOOL SELECTION EXAMPLES (intent → tool):\n- 'Show my DreamAgent projects' → list_projects\n- 'Create a Telegram customer support bot' → create_project (with saved-credential ID) → get_project_status until ready\n- 'Is my project ready?' → get_project_status\n- 'Add a /status command to Crypto Copilot' → list_projects (find ID) → get_edit_progress (no active edit) → dreamagent_chat → monitor until complete\n- 'Is that edit finished?' → get_edit_progress (or get_chat_status with the session key)\n- 'Stop the current edit' → cancel_chat (explicit request only)\n- 'Continue the previous development conversation' → list_sessions → dreamagent_chat with that session key\n- 'Start a separate development topic' → create_session\n- 'The project is locked but nothing is running' → release_project_lock, only after confirming the lock is stale\n",
"tools": [
{
"description": "WRITE ACTION — build & publish a DreamAgent project: rebuilds the\napp from the current source files and pushes the new version live.\nUse after finishing file edits (dreamagent_write_file) so the user's\nchanges go live. Pro/paid accounts only.\n\nCONFIRM BEFORE CALLING — tell the user the project will be rebuilt\nand redeployed, and call only with confirm=true after they agree.\n\nASYNCHRONOUS: kick-off returns immediately; check\ndreamagent_get_project_status until the project reports 'ready'.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirm": {
"default": false,
"type": "boolean"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_build_publish",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "DESTRUCTIVE — stops an AI edit that is currently running. Use ONLY\nwhen the user explicitly asks to stop/cancel the active edit.\nAfter cancellation, do NOT claim the requested change was\ncompleted — report that it was stopped.\n\nReturns 'Cancellation requested: <backend message>' — e.g. 'Query\ncancelled', 'Cancellation requested' (durable run), or 'No active\nquery found'. Afterwards poll dreamagent_get_chat_status /\ndreamagent_get_edit_progress until run_status reports 'cancelled'.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"session_key": {
"description": "the session key of the running edit.",
"type": "string"
}
},
"required": [
"session_key"
],
"type": "object"
},
"name": "dreamagent_cancel_chat",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "WRITE ACTION — builds, modifies, or fixes an EXISTING project with\na natural-language instruction. Use ONLY when the user clearly asks\nfor a change (\"add X\", \"fix Y\", \"change the theme\"). If the user is\nonly asking for advice, analysis, review, or suggestions (\"what\ncould be improved?\", \"review my bot\"), do NOT call this — answer\nfrom the project's info instead; a review request is not an edit.\n\nDescribe ONLY the desired change — DreamAgent's AI automatically\nhandles code, tests, rebuild, and redeployment. Completed changes\nare saved and committed automatically.\n\nASYNCHRONOUS: returns immediately with the session_key; monitor\nwith dreamagent_get_edit_progress (or dreamagent_get_chat_status\nwith the returned session key) until a terminal state. Report\nsuccess only after run_status reaches 'completed'. Edits consume\nthe user's AI credits.\n\nERRORS (actual returns): failures come back as text starting with\n'ERROR:'. If the edit was rejected before starting, the text says\n'the edit was NOT started' plus the reason — HTTP 402 insufficient\ncredits, 409 another edit already active, 423 session lock held by\nanother session, 404 wrong project id, 401 no account connected.\nTreat the edit as failed/cancelled only when a status tool says so.\n\nONE EDIT AT A TIME: never start another modification on the same\nproject while one is running — check progress first and wait.\n\nSUPERPOWERS: projects can use the account's enabled AI tools\n(song/video/image generation, voiceover, lip sync, voice clone,\ntranscription, media processing, PDF tools). If the user asks to\nadd or use one (\"add song generation\", \"generate an image feature\"),\nsimply include that in the message — DreamAgent's agent knows the\nenabled tools and wires the integration, UI and job handling\nautomatically. Check the catalog with dreamagent_list_superpowers;\nif a tool is disabled, direct the user to dreamagent.cloud ->\nSuperpowers to enable it first.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"message": {
"description": "the desired change (what + any behavioral constraints).",
"type": "string"
},
"new_session": {
"default": false,
"description": "optional — start a fresh session for a new topic.",
"type": "boolean"
},
"project_id": {
"description": "the project to modify.",
"type": "integer"
},
"session_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional — continue a specific development session."
}
},
"required": [
"project_id",
"message"
],
"type": "object"
},
"name": "dreamagent_chat",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "WRITE ACTION — creates a new DreamAgent project (website, Telegram\nbot, Discord bot, or AI agent). Use ONLY when the user clearly asks\nto create/build a new project; not for questions about what to build.\n\nCONFIRM BEFORE CALLING — never create on the first mention. In ONE\nmessage, present and get the user's explicit go-ahead for:\n1. The credential: run dreamagent_list_global_integrations first.\n If several telegram/discord credentials are saved, list them\n (id + title) and ask which to use. If exactly one is saved,\n state which one you will use. Never pick silently.\n2. The plan: name, type, and the final description exactly as you\n will submit it (this is the Prompt Assistant's recommendation\n summary). Call this tool only after the user confirms.\n\nCREATION IS ASYNCHRONOUS: after calling, check\ndreamagent_get_project_status repeatedly until the project is\n'ready' or 'failed' (bots ~2-5 min, websites longer).\n\nCREDENTIALS: raw bot tokens are never accepted in chat or as inputs.\nFor Telegram/Discord bots you MUST pass bot_token_integration_id —\nthe ID of a saved credential from dreamagent_list_global_integrations.\nIf none is saved, direct the user to dreamagent.cloud → Settings →\nGlobal Integrations. Other saved keys can be imported via\nglobal_integration_ids. Credentials are stored as project secrets\nand are never exposed back.\n\nDESCRIPTION = the refined creation brief. Act as a Creative\nDirector / Product Manager, not an architect.\n\nCreate a concise but complete description of WHAT should be built:\n- product vision and target audience\n- user experience and core functionality\n- design/tone direction\n- important features and behavior\n- final expected result\n\nDo not include implementation details such as:\n- technology stack\n- architecture\n- database/API implementation\n- authentication implementation\n- deployment\n- CI/CD\n- testing commands\n\nInfer reasonable defaults when missing details are non-critical.\nAsk for clarification only when missing information materially\naffects the requested functionality, scope, credentials, or\nexpected result.\n\nPrefer the following structure and constraints for each project\ntype, but do not override explicit user requirements:\n\nWebsite:\n- Project Vision\n- Design Style\n- Pages\n- Hero Experience\n- Core Features\n- UI Components\n- Mobile Experience\n- Final Expectation\n- Prefer up to 4 pages unless the user clearly requires more.\n\nTelegram bot:\n- Bot Purpose\n- Commands\n- User Flow\n- Optional AI Features\n- Integrations when required\n- Final Expectations\n- Prefer a compact command set; always include /start and /help\n unless the user's explicit requirements conflict.\n\nDiscord bot:\n- Bot Purpose\n- Slash Commands\n- Events\n- Permissions\n- Optional AI Features\n- Final Expectations\n- Prefer a compact command set; include /help where appropriate.\n\nAgent (recurring/scheduled automation with OAuth actions):\n- Purpose (what it monitors or automates)\n- Data Sources (which connected OAuth services: YouTube, GitHub,\n Discord, Notion, X, Google Sheets, Slack — or public APIs)\n- Schedule (e.g., every 5 minutes / hourly / daily at 9am) and/or\n Event Triggers (incoming webhook)\n- Conditions (when to act — thresholds, keywords, state changes)\n- Delivery Channels (Telegram, Discord, Slack, email — optional)\n- Final Expectation\n- Use concrete schedules; note that agents keep persistent state\n between runs and can call any connected OAuth integration.\n- Agents do NOT need a bot token unless they deliver via Telegram/\n Discord (then a saved credential is required as for bots).\n\nSUPERPOWERS: the account may have ready-made AI tools enabled\n(song/video/image generation, voiceover, lip sync, voice clone,\ntranscription, media processing, PDF tools). If the requested\nproduct clearly benefits from one (e.g. an AI song generator\nwebsite), reflect the FEATURE in the description — DreamAgent\nwires the tool integration automatically at build time. Check\nwhat is enabled with dreamagent_list_superpowers. Do NOT add\nimplementation details about how the tool is called.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bot_token_integration_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "REQUIRED for telegrambot & discordbot —\nsaved-credential ID (see dreamagent_list_global_integrations)."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "the build request (what + for whom + features/tone)."
},
"env_vars": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "optional non-secret environment variables."
},
"global_integration_ids": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "optional saved-key IDs to import as env vars."
},
"name": {
"description": "project name (max 30 chars; a public subdomain is auto-generated).",
"type": "string"
},
"project_type": {
"description": "website / telegrambot / discordbot / agent.",
"type": "string"
}
},
"required": [
"name",
"project_type"
],
"type": "object"
},
"name": "dreamagent_create_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Create a new development session for a project — a separate\nconversation with its own context. Use when the user wants to start\na distinct development topic. A new session does NOT replace or\naffect the existing project — earlier sessions remain available.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"label": {
"default": "ChatGPT",
"description": "optional name for the session.",
"type": "string"
},
"project_id": {
"description": "the project.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_create_session",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "WRITE ACTION — delete one source file from a DreamAgent project.\nHidden/credential files (.env, .git, keys) are rejected. Recoverable\nvia the project's git history.\n\nCONFIRM BEFORE CALLING — tell the user which file will be deleted and\ncall only with confirm=true after they agree.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirm": {
"default": false,
"type": "boolean"
},
"file_path": {
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"file_path"
],
"type": "object"
},
"name": "dreamagent_delete_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "WRITE ACTION — redesign a website project's UI to match a design image.\nWebsite projects only.\n\nThe user provides an image (screenshot, mockup, AI-generated design)\nand instructions. You generate the image (e.g. DALL-E), encode it as\nbase64, and send it here. DreamAgent's AI will read the image and\nredesign the project's frontend to match.\n\nCONFIRM BEFORE CALLING — show the user:\n1. The project being redesigned\n2. The design instructions\nThen call only with confirm=true after they agree.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirm": {
"default": false,
"description": "must be true to execute.",
"type": "boolean"
},
"image_base64": {
"description": "base64-encoded design reference image (PNG/JPG).",
"type": "string"
},
"instructions": {
"description": "what to change (e.g. \"match this dark theme with purple accents\",\n \"make the hero section look like this\", \"use this layout\").",
"type": "string"
},
"project_id": {
"description": "the website project to redesign.",
"type": "integer"
}
},
"required": [
"project_id",
"image_base64",
"instructions"
],
"type": "object"
},
"name": "dreamagent_design_mode",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Check the progress and final status of a specific AI development\nsession using its session key. Use this to monitor an asynchronous\nedit until it completes, fails, or is cancelled — keep checking\nuntil a terminal state. The session key comes from dreamagent_chat\nor dreamagent_list_sessions and is an identifier, not a secret.\n\nReturns (actual fields): 'active=', 'run_status=', 'next_after='\n(cursor for the next check), optional 'new_output:' (text produced\nsince the last check), then either \"Still working — poll again\" or\na terminal 'done=true' line: finished (with the final output tail),\n'the edit was NOT started: <reason>' (rejected early, e.g. HTTP 402\ninsufficient credits), or 'stream error' (the connection to the run\nbroke — the server-side run may still have finished; verify with\ndreamagent_get_edit_progress).\nrun_status values: queued | running | cancel_requested | completed |\nfailed | cancelled | interrupted | unknown.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"after": {
"default": 0,
"description": "cursor from the previous check (0 on the first check).",
"type": "integer"
},
"session_key": {
"description": "the session key returned by dreamagent_chat.",
"type": "string"
}
},
"required": [
"session_key"
],
"type": "object"
},
"name": "dreamagent_get_chat_status",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Check the latest AI edit progress for a project using its project\nidentifier — no session key needed: the project id retrieves the\nsession holding the latest edit. Use when the user asks whether\ntheir edit is finished, when the session key isn't available\n(e.g. a new conversation), and BEFORE starting any new edit.\n\nReturns (actual fields): 'session_key=' (the identifier of the\nsession this progress comes from), 'edit_active=', 'run_status=',\n'chunks=' (output size so far), optional 'recent_output (tail):',\nand a terminal 'result:' line: finished (with the final output\ntail), 'the edit was NOT started: <reason>' (rejected early,\ne.g. HTTP 402 insufficient credits), 'stream error', or 'no run is\ncurrently active'.\nrun_status values: queued | running | cancel_requested | completed |\nfailed | cancelled | interrupted | unknown.\n\nDistinct from dreamagent_get_project_status: project status =\ncreation/deployment state (creating/ready/failed); edit progress =\ncurrent AI modification state; chat status (dreamagent_get_chat_status)\nmonitors one specific session by its session key. If edit_active is\ntrue, do NOT launch another edit for the same project.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"description": "the project being edited.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_get_edit_progress",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Git diff of one project file against the last commit — shows the\npending (not yet live) changes. Free, read-only. Use after edits to\nreview exactly what changed before rebuilding.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"file_path": {
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"file_path"
],
"type": "object"
},
"name": "dreamagent_get_file_diff",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Check a project's creation/deployment state. Terminal states are\n'ready' (built and live) and 'failed'; while a project is being\ncreated it reports progressive phases such as 'creating',\n'building', 'deploying', or 'ai_provisioning' — treat any\nnon-terminal status as still building. Use after\ndreamagent_create_project (poll until ready or failed) and\nwhenever the user asks whether a project is ready or live.\n\nNOTE: this reports the PROJECT's build/deploy state — NOT AI edit\nprogress. For edits use dreamagent_get_edit_progress.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"description": "the project to check.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_get_project_status",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List the file tree of a DreamAgent project (source files only —\nhidden files like .env are excluded). Use before reading or editing\na file to find the correct path.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_list_files",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List the user's saved credentials (Global Integrations).\n\nALWAYS call this before creating any bot project or asking the user\nfor a token/API key. Saved credentials are referenced BY ID when\ncreating projects: bot_token_integration_id for bot tokens,\nglobal_integration_ids for other keys. Secret values are never\nreturned — only IDs and metadata (type, key name, verified, title).\n\nIf nothing suitable is saved: direct the user to dreamagent.cloud →\nSettings → Global Integrations to add it (one-time, verified,\nreusable). Never ask the user to paste tokens in chat.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "dreamagent_list_global_integrations",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List a project's environment variables with their details.\n\nShows each key's name, title, description, docs URL, and category —\nvalues are masked (secrets are never returned). Use to see which\nintegrations a project already has before adding more, or to answer\n\"what keys does my project have?\".\n\nThese are PROJECT-SPECIFIC variables — distinct from the user's\nGlobal Integrations — API-key credentials and connected OAuth services (dreamagent_list_global_integrations).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"description": "the project to inspect.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_list_project_env",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List the user's DreamAgent projects.\n\nReturns each project's name, ID, type, status, and live domain (when\navailable). Use when the user asks to see, find, select, or check their\nprojects — and ALWAYS before modifying a project when its ID is not\nalready known (resolve names to IDs here first).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional exact-match filter (e.g. 'ready', 'failed').\nDuring creation, projects report intermediate phases\n(creating/building/deploying/…), so filtering by 'creating'\ndoes not match every in-progress project."
}
},
"type": "object"
},
"name": "dreamagent_list_projects",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List a project's development sessions (conversation threads).\nReturns each session's identifier (session key) and context so you\ncan select, continue, or monitor a specific development session —\npass the session key to dreamagent_chat to continue that thread or\nto dreamagent_get_chat_status to monitor it. The session key is a\nreference used to address a session; it is not an authentication\ncredential or a secret.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"description": "the project.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_list_sessions",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List DreamAgent Superpowers — the account's ready-made AI tools\n(song/video/image generation, voiceover, lip sync, voice clone,\ntranscription, media processing, PDF tools) with their enabled\nstate and beta pricing. Read-only; no credits consumed.\n\nUse when the user asks what AI tools/superpowers are available,\nwhether a specific tool is enabled, or what they can add to a\nproject. Tools shown as enabled can be used from ANY of the\nuser's projects through dreamagent_chat (just ask in the message).",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "dreamagent_list_superpowers",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Read a source file from a DreamAgent project. file_path is the\nproject-relative path (from dreamagent_list_files), e.g.\n\"src/pages/Home.tsx\" or \"telegram/main.py\". Hidden files (.env) and\nbinaries are not readable.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"file_path": {
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"file_path"
],
"type": "object"
},
"name": "dreamagent_read_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "RECOVERY-ONLY — releases a project's editing lock when a stale or\nabandoned session blocks new modifications. NOT a normal editing\nstep, and NEVER a way to bypass an actively running edit.\n\nThe lock state is not machine-readable from here: to judge staleness,\ncheck dreamagent_get_edit_progress — if no edit is active but\ndreamagent_chat still fails with a lock error, the lock is stale.\nConfirm with the user before releasing if they may have the project\nopen elsewhere.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"description": "the project to unlock.",
"type": "integer"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "dreamagent_release_project_lock",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "WRITE ACTION — overwrite or create one source file in a DreamAgent\nproject with the exact content given. Changes go live after the\nproject is rebuilt (dreamagent_build_publish).\n\nCONFIRM BEFORE CALLING — in ONE message show the user: the target\npath and a summary of the change, then call only after they agree.\nNever write on the first mention.\n\nGUARDS (enforced server-side, the same as the in-app code editor):\npath stays inside the project, hidden/credential files (.env, .git,\nkeys) are rejected, content is scanned for malware/shell signatures\nand blocked, 2MB size cap. Failed scans return the reason.\n\nThe user can undo damage by editing in the DreamAgent editor, so a\nwrong write is recoverable — still, prefer precise minimal diffs.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirm": {
"default": false,
"type": "boolean"
},
"content": {
"type": "string"
},
"file_path": {
"type": "string"
},
"project_id": {
"type": "integer"
}
},
"required": [
"project_id",
"file_path",
"content"
],
"type": "object"
},
"name": "dreamagent_write_file",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:837c35a668d0dc2b8d8f3c7274e2d079114ed680937f1a04ea2b922f5a923c26 | sha256sum