{"apiVersion":"v1","directorySlug":"gpiyo-mcp-285d64df59","title":"Nougat","description":null,"pageUrl":"https://www.mcpbundles.com/skills/gpiyo-mcp-285d64df59","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.gpiyo.cloud/mcp","hostedMcpUrl":null,"toolCount":7,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"cloud.gpiyo/gpiyo-mcp-285d64df59","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"snapshot","description":"Return a live GPU snapshot across all gpiyo-monitored nodes, optimized for quickly picking which GPU to run a job on. Each row is one physical GPU with its memory, utilization, running process count and a coarse state label (FREE / LIGHT / BUSY). Rows are sorted FREE → LIGHT → BUSY so the best candidates come first. Use the prefix argument to scope the query to one cluster or machine family — it matches the start of either hostname or nickname, case-insensitive. Call this whenever the user asks","inputSchema":{"type":"object","properties":{"prefix":{"type":"string"}},"additionalProperties":false},"logicalName":"snapshot","displayName":"snapshot","title":"snapshot","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"attach_hook","description":"Ask gpiyo to record what happens to a job or a machine, so you can find out later without polling snapshot in a loop. Give node and pid to watch one process and learn when it exits; give node alone to learn when that machine goes offline or comes back. Leave url empty and gpiyo keeps the events for you to read with poll_events — that is the right choice for an agent, which has no address a webhook could reach. Pass an https url only when the user wants the events delivered somewhere themselves,","inputSchema":{"type":"object","required":["node"],"properties":{"pid":{"type":"integer"},"url":{"type":"string"},"node":{"type":"string"},"label":{"type":"string"},"events":{"type":"array","items":{"enum":["process.terminated","process.overdue","node.offline","node.online","site.offline"],"type":"string"}}},"additionalProperties":false},"logicalName":"attach_hook","displayName":"attach_hook","title":"attach_hook","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_hooks","description":"List the hooks currently attached to a node and its processes. Use it to find a hook id you lost, or to check whether a job is already being watched before attaching a second hook to it.","inputSchema":{"type":"object","required":["node"],"properties":{"node":{"type":"string"}},"additionalProperties":false},"logicalName":"list_hooks","displayName":"list_hooks","title":"list_hooks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"detach_hook","description":"Remove a hook and discard anything it was holding. A hook on a process removes itself when that process exits, so this is for hooks on a node, or for one you attached by mistake.","inputSchema":{"type":"object","required":["hook_id"],"properties":{"hook_id":{"type":"string"}},"additionalProperties":false},"logicalName":"detach_hook","displayName":"detach_hook","title":"detach_hook","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"poll_events","description":"Read what has happened since you last asked, for a hook attached without a url. Reading clears them, so report what you get before moving on. An empty result means nothing has happened yet — the job is still running, the node is still up — not that the hook is gone.","inputSchema":{"type":"object","required":["hook_id"],"properties":{"hook_id":{"type":"string"}},"additionalProperties":false},"logicalName":"poll_events","displayName":"poll_events","title":"poll_events","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"annotate","description":"Say what a process you started is, so everyone who looks at its card afterwards -- people on the dashboard, other agents in snapshot, whoever polls its hook -- knows what it is, when it should be done and whether it may be stopped for someone else. Call it right after launching a run, before attach_hook. Call it again with only the fields that changed, such as progress; everything else is kept. The note is dropped when the process exits, and rides along on the process.terminated event. Giving ex","inputSchema":{"type":"object","required":["node"],"properties":{"pid":{"type":"integer"},"run":{"type":"string"},"node":{"type":"string"},"pids":{"type":"array","items":{"type":"integer"}},"tags":{"type":"array","items":{"type":"string"}},"agent":{"type":"string"},"links":{"type":"object","additionalProperties":{"type":"string"}},"detail":{"type":"string"},"expect":{"type":"string"},"progress":{"type":"number","maximum":1,"minimum":0},"preemptible":{"type":"boolean"}},"additionalProperties":false},"logicalName":"annotate","displayName":"annotate","title":"annotate","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"history","description":"Look up annotated runs that have finished, newest first: where each ran, how long against its estimate, how far it got, and the most memory it held on any one card. Reach for it before launching a job that has run before -- the peak tells you how big a card it needs -- or when the user asks what ran on a machine or how an earlier run ended. Only runs someone annotated are kept.","inputSchema":{"type":"object","properties":{"run":{"type":"string"},"node":{"type":"string"},"user":{"type":"string"},"limit":{"type":"integer"},"since":{"type":"string"}},"additionalProperties":false},"logicalName":"history","displayName":"history","title":"history","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Nougat&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ3BpeW8uY2xvdWQvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Nougat%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.gpiyo.cloud%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Nougat%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.gpiyo.cloud%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Nougat&connectorUrl=https%3A%2F%2Fapi.gpiyo.cloud%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Nougat\" --url \"https://api.gpiyo.cloud/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/gpiyo-mcp-285d64df59","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/gpiyo-mcp-285d64df59/tools/{tool}","mcpServerUrl":"https://api.gpiyo.cloud/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/gpiyo-mcp-285d64df59?live=1"}