{"apiVersion":"v1","directorySlug":"uploop-mcp-07c781e132","title":"Design is everything","description":"Monitoring interface inspired by OpenStatus and Autosend","pageUrl":"https://www.mcpbundles.com/skills/uploop-mcp-07c781e132","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://uploop.space/api/mcp","hostedMcpUrl":null,"toolCount":26,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"space.uploop/uploop-mcp-07c781e132","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"save_context","description":"Writes a real, persistent record to the shared workspace database — not a note to yourself, a record any other AI model or agent (even one that has never seen this conversation) can read back via get_context or resources/read. This is how cross-session and cross-agent memory actually works here; without calling this, nothing about what you did survives past this conversation. CRITICAL FORMAT RULES for the summary field — write in plain language like this: 'The user asked me to [exact request]. I","inputSchema":{"type":"object","required":["workspace_id","agent_id","summary","progress"],"properties":{"files":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"user_id":{"type":"string"},"agent_id":{"type":"string"},"progress":{"type":"string"},"decisions":{"type":"array","items":{"type":"string"}},"workspace_id":{"type":"string"}}},"logicalName":"save_context","displayName":"save_context","title":"save_context","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_context","description":"Retrieves the full context of a workspace. Call this at the start of a new chat to instantly know everything that was done before without re-explaining anything.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"workspace_id":{"type":"string"}}},"logicalName":"get_context","displayName":"get_context","title":"get_context","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"register_agent","description":"Writes your presence into a real shared registry for this workspace — a persistent record, not just something you say in chat. Once written, any other agent (different platform, different machine) calling list_agents or reading resources will genuinely see you listed, in real time. Call this once at the start of working in a multi-agent workspace; you don't strictly need it for solo/single-instance use, since other tools below (save_checkpoint, remember_preference) work without it.","inputSchema":{"type":"object","required":["workspace_id","agent_id","status"],"properties":{"status":{"type":"string"},"agent_id":{"type":"string"},"platform":{"type":"string"},"current_task":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"register_agent","displayName":"register_agent","title":"register_agent","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_agents","description":"Lists all Claude instances currently active on a workspace. Use this before starting a task to check if another agent is already working on it.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"workspace_id":{"type":"string"}}},"logicalName":"list_agents","displayName":"list_agents","title":"list_agents","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"claim_task","description":"Claims a task so other agents know not to touch it. Use a clear human-readable task_id like 'build-login-page' or 'write-api-docs'. The description must explain in plain English what you will do and the expected result.","inputSchema":{"type":"object","required":["workspace_id","agent_id","task_id","description"],"properties":{"task_id":{"type":"string"},"agent_id":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"claim_task","displayName":"claim_task","title":"claim_task","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"release_task","description":"Releases a task you previously claimed, so other agents can work on it. Agents currently in listen_workspace will be notified immediately that this task is free.","inputSchema":{"type":"object","required":["workspace_id","agent_id","task_id"],"properties":{"result":{"type":"string"},"task_id":{"type":"string"},"agent_id":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"release_task","displayName":"release_task","title":"release_task","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_tasks","description":"Lists all currently claimed tasks in a workspace and who owns them.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"workspace_id":{"type":"string"}}},"logicalName":"list_tasks","displayName":"list_tasks","title":"list_tasks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"set_workspace_vision","description":"Writes the global vision/objective of the workspace to the shared database — a real, persistent field, not a summary you keep in your own head. All agents will see this vision in every get_context call, including agents that join later and have no other context. Use this to define what the project is trying to achieve at a high level. When updated, all listening agents are notified immediately via listen_workspace.","inputSchema":{"type":"object","required":["workspace_id","agent_id","vision"],"properties":{"vision":{"type":"string"},"agent_id":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"set_workspace_vision","displayName":"set_workspace_vision","title":"set_workspace_vision","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wait_for_event","description":"Blocks and waits until another agent triggers a specific named event. Low-level primitive — in most cases prefer listen_workspace instead, which watches everything (claims, releases, context, broadcasts, reviews) and auto-chains across multiple rounds for you. Use wait_for_event only when you need to wait for one precise event name and nothing else. Max wait is 25 seconds. If timeout, call again to keep waiting.","inputSchema":{"type":"object","required":["workspace_id","event"],"properties":{"event":{"type":"string"},"timeout":{"type":"number"},"workspace_id":{"type":"string"}}},"logicalName":"wait_for_event","displayName":"wait_for_event","title":"wait_for_event","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"broadcast_message","description":"Sends a message visible to ALL agents in the workspace. Use this to announce progress, ask a question to everyone, or share important info. Right after broadcasting, if you expect a reply, call listen_workspace to wait for it instead of stopping or guessing — other agents will see your message and may reply via broadcast_message themselves.","inputSchema":{"type":"object","required":["workspace_id","agent_id","message"],"properties":{"message":{"type":"string"},"agent_id":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"broadcast_message","displayName":"broadcast_message","title":"broadcast_message","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"request_review","description":"Asks a specific agent to review your work before you continue. The target agent will see a pending review when they call list_agents or get_history. Use approve_review or reject_review to respond.","inputSchema":{"type":"object","required":["workspace_id","from_agent","to_agent","task_id","description"],"properties":{"task_id":{"type":"string"},"to_agent":{"type":"string"},"from_agent":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"request_review","displayName":"request_review","title":"request_review","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"respond_review","description":"Approves or rejects a review request from another agent. The requesting agent will receive the feedback when they call wait_for_event or get_history.","inputSchema":{"type":"object","required":["workspace_id","agent_id","review_id","decision"],"properties":{"agent_id":{"type":"string"},"decision":{"enum":["approved","rejected"],"type":"string"},"feedback":{"type":"string"},"review_id":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"respond_review","displayName":"respond_review","title":"respond_review","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_history","description":"Returns the full action history of a workspace — who did what and when. Includes saves, claims, releases, broadcasts, reviews. Useful for onboarding a new agent.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"limit":{"type":"number"},"workspace_id":{"type":"string"}}},"logicalName":"get_history","displayName":"get_history","title":"get_history","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"listen_workspace","description":"Watches the workspace for real-time changes from other agents — task claims, releases, context updates, broadcasts, reviews. Returns instantly when something happens, or gives a full workspace snapshot after 23s. Automatically chains up to 10 rounds (~230s total). IMPORTANT: if the response ends with 'Calling listen_workspace again (round N/10)...', you MUST immediately call listen_workspace again with round=N to keep watching.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"round":{"type":"number"},"workspace_id":{"type":"string"}}},"logicalName":"listen_workspace","displayName":"listen_workspace","title":"listen_workspace","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"use_workflow_template","description":"Applies a predefined team workflow to a workspace. Sets up the agent roles and task list automatically. Available templates: landing-page, content-team, bug-fix, travel-planning.","inputSchema":{"type":"object","required":["workspace_id","agent_id","template"],"properties":{"agent_id":{"type":"string"},"template":{"enum":["landing-page","content-team","bug-fix","travel-planning"],"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"use_workflow_template","displayName":"use_workflow_template","title":"use_workflow_template","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"push_file","description":"Writes the file's content to a real shared store other agents can actually read from — this is a genuine data transfer, not a status update. CRITICAL: agents on different machines, IDEs, or platforms (Claude Code on one laptop, Codex on another) NEVER see each other's local disk. If you create or edit a file that another agent in this workspace might need, you MUST call push_file right after writing it — saying 'I created the file' is not enough, nothing is shared until you push it. Keep it to o","inputSchema":{"type":"object","required":["workspace_id","agent_id","path","content"],"properties":{"path":{"type":"string"},"content":{"type":"string"},"agent_id":{"type":"string"},"language":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"push_file","displayName":"push_file","title":"push_file","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_files","description":"Lists every file other agents have shared in this workspace (path, size, who pushed it, when). Call this at the start of a session alongside resources/list — do NOT assume a project is empty just because you don't see files on your own disk; another agent may have already pushed work here.","inputSchema":{"type":"object","required":["workspace_id"],"properties":{"workspace_id":{"type":"string"}}},"logicalName":"list_files","displayName":"list_files","title":"list_files","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"pull_file","description":"Retrieves the content of a file another agent pushed to this workspace. Call this whenever a broadcast, history entry, or workspace context mentions a file you don't have locally — never assume you already have it just because another agent said they made it. You must then write the returned content to disk yourself; this tool only relays data, it does not touch any filesystem.","inputSchema":{"type":"object","required":["workspace_id","path"],"properties":{"path":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"pull_file","displayName":"pull_file","title":"pull_file","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_file","description":"Removes a file from the shared workspace once it's no longer needed by other agents.","inputSchema":{"type":"object","required":["workspace_id","path"],"properties":{"path":{"type":"string"},"workspace_id":{"type":"string"}}},"logicalName":"delete_file","displayName":"delete_file","title":"delete_file","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"save_checkpoint","description":"Writes a real, durable snapshot to an external database tied to this user's account — it persists across this conversation ending, across new sessions, and across switching to a different AI platform entirely, because it lives in the user's own database, not in your context window. This is NOT limited by your own lack of memory between conversations — calling this tool is precisely how content survives when your own memory wouldn't. Do not tell the user you have 'no way' to keep a version for th","inputSchema":{"type":"object","required":["label","content"],"properties":{"note":{"type":"string"},"label":{"type":"string"},"content":{"type":"string"},"project_id":{"type":"string"}}},"logicalName":"save_checkpoint","displayName":"save_checkpoint","title":"save_checkpoint","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_checkpoints","description":"Lists saved checkpoints so you can find the one the user is referring to when they say 'go back to the version where...' or 'remember when we had...'. Call this before recall_checkpoint.","inputSchema":{"type":"object","required":[],"properties":{"project_id":{"type":"string"}}},"logicalName":"list_checkpoints","displayName":"list_checkpoints","title":"list_checkpoints","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"recall_checkpoint","description":"Retrieves the full content and note of a specific checkpoint by id. You must then re-apply that content yourself (e.g. rewrite the file) — this tool only returns the saved data, it cannot directly modify files on the user's machine.","inputSchema":{"type":"object","required":["checkpoint_id"],"properties":{"checkpoint_id":{"type":"string"}}},"logicalName":"recall_checkpoint","displayName":"recall_checkpoint","title":"recall_checkpoint","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_checkpoint","description":"Deletes a saved checkpoint the user no longer needs.","inputSchema":{"type":"object","required":["checkpoint_id"],"properties":{"checkpoint_id":{"type":"string"}}},"logicalName":"delete_checkpoint","displayName":"delete_checkpoint","title":"delete_checkpoint","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remember_preference","description":"Writes a durable preference to the user's own database record — it will genuinely be there next session, independent of your own memory, even in a brand new conversation with no prior context. Use for lasting taste/style/workflow preferences, not one-off content (use save_checkpoint for that). Ex: key='styling', value='Always Tailwind, dark theme, no emojis in copy'. Call this whenever the user states a preference that should apply going forward, not just this session — don't wait for them to ex","inputSchema":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}},"logicalName":"remember_preference","displayName":"remember_preference","title":"remember_preference","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_preferences","description":"Lists all remembered preferences for this user. Call this at the start of a session if resources/list did not already surface them, so you work the way the user expects without asking again.","inputSchema":{"type":"object","required":[],"properties":{}},"logicalName":"list_preferences","displayName":"list_preferences","title":"list_preferences","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"forget_preference","description":"Removes a previously remembered preference.","inputSchema":{"type":"object","required":["key"],"properties":{"key":{"type":"string"}}},"logicalName":"forget_preference","displayName":"forget_preference","title":"forget_preference","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Design-is-everything&config=eyJ1cmwiOiAiaHR0cHM6Ly91cGxvb3Auc3BhY2UvYXBpL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Design-is-everything%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fuploop.space%2Fapi%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Design-is-everything%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fuploop.space%2Fapi%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Design+is+everything&connectorUrl=https%3A%2F%2Fuploop.space%2Fapi%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Design-is-everything\" --url \"https://uploop.space/api/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/uploop-mcp-07c781e132","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/uploop-mcp-07c781e132/tools/{tool}","mcpServerUrl":"https://uploop.space/api/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/uploop-mcp-07c781e132?live=1"}