# inference.sh

> run any ai model. compose agents, stack knowledge, connect tools. one api, pay per run.

- name: ac.inference.sh/mcp
- version: 2.0.1
- connection class: R0 (autonomous)
- trust: 77/100 flags: no-repository
- quality: 72/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ac.inference.sh%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/ac.inference.sh%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "sh": {
      "type": "http",
      "url": "https://api.inference.sh/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-99% ~updated-85d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 72/100 (needs work)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 300000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 46 of 46 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: app_get (idempotentHint, openWorldHint); app_list (idempotentHint, openWorldHint); app_run (idempotentHint); …
- warn `tools.token_cost`: about 8,153 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 74 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 46, about 8,153 tokens to load them all
- tool set hash: d018c98055fb2d2c8c4d9cfd72e1e5e7
- tools last changed: 2026-10-18T13:30:25.836Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ac.inference.sh/mcp.svg)](https://protogrid.dev/servers/ac.inference.sh/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-18 `task_list` changed (inputSchema)
- 2026-10-17 `artifact_data_update` changed (inputSchema)
- 2026-10-17 `artifact_data_set` changed (inputSchema)
- 2026-10-17 `artifact_data_list` changed (inputSchema)
- 2026-10-17 `artifact_data_get` changed (inputSchema)
- 2026-10-17 `artifact_data_delete` changed (inputSchema)
- 2026-10-16 `artifact_publish` changed (description, inputSchema)
  - before: Publish a self-contained HTML(+JS) or Markdown page as an artifact: a live page at a private URL that can be shared with a team, an org, or publicly, and that updates in place when published again. Pass artifact_id (or reuse the same name) to publish a new version. Returns the artifact id, url, and version. ## Before you write the page Load the skill for what you are about to build, with whichever skill tool this session has (`skill_get`, `skill_use`, or `belt skill use infsh/<name>`): - `belt-artifact-design` — always. Treatment, the injected design tokens, the three theme states, the traps that fail silently. - `belt-artifact-capabilities` — when the page takes input, remembers anything, knows who is viewing, or shows a file stored beside it. - `belt-artifact-diagrams` — when it has a flow, an architecture, a timeline or a chart. They are the current version at all times. This description is only the contract. ## When to use an artifact Use one when terminal text is the wrong medium: a dashboard from data you already pulled, a walkthrough of a change with annotated diffs, several options side by side, sliders to tune values, a checklist you keep updating while a long task runs, or anything a person will look at, interact with, or send to a teammate as a link. Don't use one for a short answer, a code snippet, or advice the user will act on immediately in the terminal. ## Page contract - Write the PAGE CONTENT only. It is wrapped at publish time in <!doctype html> + <head> (charset, viewport, <title>, favicon, a reset, and the inference.sh design tokens) + <body>. Put your own <style> and <script> at the top of the content. A full document (starting with <!doctype> or <html>) is accepted too and keeps its own <head>. - Everything must be self-contained: inline all CSS and JS, embed images as data: URIs, draw diagrams as mermaid, inline SVG or HTML/CSS. There is no backend, no routes, no relative links; use in-page anchors. - CSP allowlist (enforced, failures are silent): external scripts ONLY from https://cdnjs.cloudflare.com, https://cdn.jsdelivr.net/npm/, https://cdn.tailwindcss.com, https://code.jquery.com; external stylesheets ONLY from https://fonts.googleapis.com with the font files they pull from https://fonts.gstatic.com. Every other host is blocked, and so is fetch/XHR/WebSocket to anywhere. Load libraries as pinned UMD builds, e.g. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js"></script>, placed BEFORE the inline script that uses them. - A page may also be shown inside an MCP Apps host (Claude, the chat). Those hosts grant a narrower policy than the inference.sh viewer: no eval or new Function, no data: fonts, no blob: images or media. A page that needs any of them works in the viewer and breaks there, so inline fonts as files stored beside the page (the "assets" capability) and avoid libraries that compile code at runtime. - Size: the source must be under 16 MiB. Prefer SVG and CSS over embedded raster images; summarize large datasets instead of inlining them. - Markdown: set type "markdown" for a document-shaped page; it is rendered with GitHub-flavored markdown and a readable default typography. - Diagrams: a flow, sequence, state or class diagram can be written as mermaid — a ```mermaid fence in Markdown, or <pre class="mermaid">...</pre> in HTML. The renderer adds mermaid 11.15.0 and themes it from the design tokens, and only for a page that has one. Everything else is inline SVG or CSS. - Title: a short, distinctive noun phrase (2-4 words) that names the page, not a summary and not a category label. Favicon: one or two emoji. Keep both stable across updates. ## Runtime capabilities A page is static by default and cannot reach the network at all. Declare a capability at publish time and the page gets a window.inferencesh object. Declare only what the page actually calls; a page gets nothing it did not declare. Every call goes through the viewer's own session, s
  - after: Publish a self-contained HTML(+JS) or Markdown page as an artifact: a live page at a private URL that can be shared with a team, an org, or publicly, and that updates in place when published again. Pass artifact_id (or reuse the same name) to publish a new version. Returns the artifact id, url, and version. ## Before you write the page Load the skill for what you are about to build, with whichever skill tool this session has (`skill_get`, `skill_use`, or `belt skill use infsh/<name>`): - `belt-artifact-design` — always. Treatment, the injected design tokens, the three theme states, the traps that fail silently. - `belt-artifact-capabilities` — when the page takes input, remembers anything, knows who is viewing, or shows a file stored beside it. - `belt-artifact-diagrams` — when it has a flow, an architecture, a timeline or a chart. They are the current version at all times. This description is only the contract. ## When to use an artifact Use one when terminal text is the wrong medium: a dashboard from data you already pulled, a walkthrough of a change with annotated diffs, several options side by side, sliders to tune values, a checklist you keep updating while a long task runs, or anything a person will look at, interact with, or send to a teammate as a link. Don't use one for a short answer, a code snippet, or advice the user will act on immediately in the terminal. ## Page contract - Write the PAGE CONTENT only. It is wrapped at publish time in <!doctype html> + <head> (charset, viewport, <title>, favicon, a reset, and the inference.sh design tokens) + <body>. Put your own <style> and <script> at the top of the content. A full document (starting with <!doctype> or <html>) is accepted too and keeps its own <head>. - Everything must be self-contained: inline CSS and JS or ship them as files, embed images as data: URIs, draw diagrams as mermaid, inline SVG or HTML/CSS. A page may ship extra files (pages, css, js, json) via `files`: link between pages with relative links (`pricing` or `pricing.html`, served at the same origin) and fetch its own json with relative URLs. There is still no backend. - CSP allowlist (enforced, failures are silent): external scripts ONLY from https://cdnjs.cloudflare.com, https://cdn.jsdelivr.net/npm/, https://cdn.tailwindcss.com, https://code.jquery.com; external stylesheets ONLY from https://fonts.googleapis.com with the font files they pull from https://fonts.gstatic.com. Every other host is blocked, and so is fetch/XHR/WebSocket to anywhere but the page's own files. Load libraries as pinned UMD builds, e.g. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js"></script>, placed BEFORE the inline script that uses them. - A page may also be shown inside an MCP Apps host (Claude, the chat). Those hosts grant a narrower policy than the inference.sh viewer: no eval or new Function, no data: fonts, no blob: images or media. A page that needs any of them works in the viewer and breaks there, so inline fonts as files stored beside the page (the "assets" capability) and avoid libraries that compile code at runtime. - Size: the source must be under 16 MiB. Prefer SVG and CSS over embedded raster images; summarize large datasets instead of inlining them. - Markdown: set type "markdown" for a document-shaped page; it is rendered with GitHub-flavored markdown and a readable default typography. - Diagrams: a flow, sequence, state or class diagram can be written as mermaid — a ```mermaid fence in Markdown, or <pre class="mermaid">...</pre> in HTML. The renderer adds mermaid 11.15.0 and themes it from the design tokens, and only for a page that has one. Everything else is inline SVG or CSS. - Title: a short, distinctive noun phrase (2-4 words) that names the page, not a summary and not a category label. Favicon: one or two emoji. Keep both stable across updates. ## Runtime capabilities A page is static by default and cannot reach the network at all. Declare a capabil
- 2026-10-14 `artifact_publish` changed (description)
  - before: Publish a self-contained HTML(+JS) or Markdown page as an artifact: a live page at a private URL that can be shared with a team, an org, or publicly, and that updates in place when published again. Pass artifact_id (or reuse the same name) to publish a new version. Returns the artifact id, url, and version. ## Before you write the page Load the skill for what you are about to build, with whichever skill tool this session has (`skill_get`, `skill_use`, or `belt skill use infsh/<name>`): - `belt-artifact-design` — always. Treatment, the injected design tokens, the three theme states, the traps that fail silently. - `belt-artifact-capabilities` — when the page takes input, remembers anything, knows who is viewing, or shows a file stored beside it. - `belt-artifact-diagrams` — when it has a flow, an architecture, a timeline or a chart. They are the current version at all times. This description is only the contract. ## When to use an artifact Use one when terminal text is the wrong medium: a dashboard from data you already pulled, a walkthrough of a change with annotated diffs, several options side by side, sliders to tune values, a checklist you keep updating while a long task runs, or anything a person will look at, interact with, or send to a teammate as a link. Don't use one for a short answer, a code snippet, or advice the user will act on immediately in the terminal. ## Page contract - Write the PAGE CONTENT only. It is wrapped at publish time in <!doctype html> + <head> (charset, viewport, <title>, favicon, a reset, and the inference.sh design tokens) + <body>. Put your own <style> and <script> at the top of the content. A full document (starting with <!doctype> or <html>) is accepted too and keeps its own <head>. - Everything must be self-contained: inline all CSS and JS, embed images as data: URIs, draw diagrams as mermaid, inline SVG or HTML/CSS. There is no backend, no routes, no relative links; use in-page anchors. - CSP allowlist (enforced, failures are silent): external scripts ONLY from https://cdnjs.cloudflare.com, https://cdn.jsdelivr.net/npm/, https://cdn.tailwindcss.com, https://code.jquery.com; external stylesheets ONLY from https://fonts.googleapis.com with the font files they pull from https://fonts.gstatic.com. Every other host is blocked, and so is fetch/XHR/WebSocket to anywhere. Load libraries as pinned UMD builds, e.g. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js"></script>, placed BEFORE the inline script that uses them. - A page may also be shown inside an MCP Apps host (Claude, the chat). Those hosts grant a narrower policy than the inference.sh viewer: no eval or new Function, no data: fonts, no blob: images or media. A page that needs any of them works in the viewer and breaks there, so inline fonts as files stored beside the page (the "assets" capability) and avoid libraries that compile code at runtime. - Size: the source must be under 16 MiB. Prefer SVG and CSS over embedded raster images; summarize large datasets instead of inlining them. - Markdown: set type "markdown" for a document-shaped page; it is rendered with GitHub-flavored markdown and a readable default typography. - Diagrams: a flow, sequence, state or class diagram can be written as mermaid — a ```mermaid fence in Markdown, or <pre class="mermaid">...</pre> in HTML. The renderer adds mermaid 11.15.0 and themes it from the design tokens, and only for a page that has one. Everything else is inline SVG or CSS. - Title: a short, distinctive noun phrase (2-4 words) that names the page, not a summary and not a category label. Favicon: one or two emoji. Keep both stable across updates. ## Runtime capabilities A page is static by default and cannot reach the network at all. Declare a capability at publish time and the page gets a window.inferencesh object. Declare only what the page actually calls; a page gets nothing it did not declare. Every call goes through the viewer's own session, s
  - after: Publish a self-contained HTML(+JS) or Markdown page as an artifact: a live page at a private URL that can be shared with a team, an org, or publicly, and that updates in place when published again. Pass artifact_id (or reuse the same name) to publish a new version. Returns the artifact id, url, and version. ## Before you write the page Load the skill for what you are about to build, with whichever skill tool this session has (`skill_get`, `skill_use`, or `belt skill use infsh/<name>`): - `belt-artifact-design` — always. Treatment, the injected design tokens, the three theme states, the traps that fail silently. - `belt-artifact-capabilities` — when the page takes input, remembers anything, knows who is viewing, or shows a file stored beside it. - `belt-artifact-diagrams` — when it has a flow, an architecture, a timeline or a chart. They are the current version at all times. This description is only the contract. ## When to use an artifact Use one when terminal text is the wrong medium: a dashboard from data you already pulled, a walkthrough of a change with annotated diffs, several options side by side, sliders to tune values, a checklist you keep updating while a long task runs, or anything a person will look at, interact with, or send to a teammate as a link. Don't use one for a short answer, a code snippet, or advice the user will act on immediately in the terminal. ## Page contract - Write the PAGE CONTENT only. It is wrapped at publish time in <!doctype html> + <head> (charset, viewport, <title>, favicon, a reset, and the inference.sh design tokens) + <body>. Put your own <style> and <script> at the top of the content. A full document (starting with <!doctype> or <html>) is accepted too and keeps its own <head>. - Everything must be self-contained: inline all CSS and JS, embed images as data: URIs, draw diagrams as mermaid, inline SVG or HTML/CSS. There is no backend, no routes, no relative links; use in-page anchors. - CSP allowlist (enforced, failures are silent): external scripts ONLY from https://cdnjs.cloudflare.com, https://cdn.jsdelivr.net/npm/, https://cdn.tailwindcss.com, https://code.jquery.com; external stylesheets ONLY from https://fonts.googleapis.com with the font files they pull from https://fonts.gstatic.com. Every other host is blocked, and so is fetch/XHR/WebSocket to anywhere. Load libraries as pinned UMD builds, e.g. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js"></script>, placed BEFORE the inline script that uses them. - A page may also be shown inside an MCP Apps host (Claude, the chat). Those hosts grant a narrower policy than the inference.sh viewer: no eval or new Function, no data: fonts, no blob: images or media. A page that needs any of them works in the viewer and breaks there, so inline fonts as files stored beside the page (the "assets" capability) and avoid libraries that compile code at runtime. - Size: the source must be under 16 MiB. Prefer SVG and CSS over embedded raster images; summarize large datasets instead of inlining them. - Markdown: set type "markdown" for a document-shaped page; it is rendered with GitHub-flavored markdown and a readable default typography. - Diagrams: a flow, sequence, state or class diagram can be written as mermaid — a ```mermaid fence in Markdown, or <pre class="mermaid">...</pre> in HTML. The renderer adds mermaid 11.15.0 and themes it from the design tokens, and only for a page that has one. Everything else is inline SVG or CSS. - Title: a short, distinctive noun phrase (2-4 words) that names the page, not a summary and not a category label. Favicon: one or two emoji. Keep both stable across updates. ## Runtime capabilities A page is static by default and cannot reach the network at all. Declare a capability at publish time and the page gets a window.inferencesh object. Declare only what the page actually calls; a page gets nothing it did not declare. Every call goes through the viewer's own session, s
- 2026-10-13 `task_get` changed (inputSchema)
- 2026-10-13 `app_run` changed (description)
  - before: Run an app on inference.sh. Creates a task that executes the app with the given input. When the result's status is not final, the task is still running: call task_get with wait: true for its output.
  - after: Run an app on inference.sh. Creates a task that executes the app with the given input. When the result's status is not final, the task is still running: call task_get with wait: true when you need its output.

Full history: https://api.protogrid.dev/v1/servers/ac.inference.sh%2Fmcp/changes

## Remotes

- https://api.inference.sh/mcp (streamable-http, auth none, reachable true, uptime30d 0.9919355)

## Packages

_none_

## Tools (46)

- `app_get`: Get detailed app info including input/output schemas and version history
- `app_list`: Search and filter available apps on inference.sh
- `app_run`: Run an app on inference.sh. Creates a task that executes the app with the given input. When the result's status is not final, the task is still running: call task_get with wait: true when you need its output.
- `artifact_asset_delete`: Permanently delete one file stored beside an artifact. Anything on the page still pointing at it stops loading, so delete only a file nothing references.
- `artifact_asset_list`: List the files stored beside an artifact, with the URL each is referenced by and what the artifact is using against its budget.
- `artifact_asset_upload`: Store an image, video, audio file, font or PDF beside an artifact and get back the URL its page references it by. Use this instead of a data: URI for anything sizeable: a data URI costs a third more than the bytes it carries, and a page has a 16 MiB ceiling. The page must be published with the "assets" capability or its CSP will refuse to load the file. Uploading the same bytes twice returns the asset already there.
- `artifact_comments`: Read the comment threads people left on an artifact. Each thread says whether it was sent to you: you may reply to and resolve those, and only those. Threads not sent to you are other people's conversations — read them for context, mention them to the user if they need action, but do not answer them.
- `artifact_data_delete`: Removes one document from an artifact's store, as the page runtime's db.delete.
- `artifact_data_get`: Reads one document from an artifact's store, as the page runtime's db.get.
- `artifact_data_list`: Lists a collection in an artifact's store, as the page runtime's db.list.
- `artifact_data_set`: Replaces one document in an artifact's store, as the page runtime's db.set.
- `artifact_data_update`: Merges into one document in an artifact's store, as the page runtime's db.update.
- `artifact_get`: Get an artifact's metadata and page source by id, short id, or namespace/name[@version]
- `artifact_guidance`: Everything needed to write a good artifact page, assembled in one call: the page contract plus the skills that carry the detail, resolved from the registry so they are always the current version. Call this BEFORE writing a page. Narrow it with topics; omit topics for all of them.
- `artifact_list`: List artifacts you own or that were shared with you, newest first
- `artifact_publish`: Publish a self-contained HTML(+JS) or Markdown page as an artifact: a live page at a private URL that can be shared with a team, an org, or publicly, and that updates in place when published again. Pass artifact_id (or reuse the same name) to publish a new version. Returns the artifact id, url, and version.

## Before you write the page
Load the skill for what you are about to build, with whichever skill tool this session has (`skill_get`, `skill_use`, or `belt skill use infsh/<name>`):
- `belt-artifact-design` — always. Treatment, the injected design tokens, the three theme states, the traps that fail silently.
- `belt-artifact-capabilities` — when the page takes input, remembers anything, knows who is viewing, or shows a file stored beside it.
- `belt-artifact-diagrams` — when it has a flow, an architecture, a timeline or a chart.

They are the current version at all times. This description is only the contract.

## When to use an artifact
Use one when terminal text is the wrong medium: a dashboard from data you already pulled, a walkthrough of a change with annotated diffs, several options side by side, sliders to tune values, a checklist you keep updating while a long task runs, or anything a person will look at, interact with, or send to a teammate as a link. Don't use one for a short answer, a code snippet, or advice the user will act on immediately in the terminal.

## Page contract
- Write the PAGE CONTENT only. It is wrapped at publish time in <!doctype html> + <head> (charset, viewport, <title>, favicon, a reset, and the inference.sh design tokens) + <body>. Put your own <style> and <script> at the top of the content. A full document (starting with <!doctype> or <html>) is accepted too and keeps its own <head>.
- Everything must be self-contained: inline CSS and JS or ship them as files, embed images as data: URIs, draw diagrams as mermaid, inline SVG or HTML/CSS. A page may ship extra files (pages, css, js, json) via `files`: link between pages with relative links (`pricing` or `pricing.html`, served at the same origin) and fetch its own json with relative URLs. There is still no backend.
- CSP allowlist (enforced, failures are silent): external scripts ONLY from https://cdnjs.cloudflare.com, https://cdn.jsdelivr.net/npm/, https://cdn.tailwindcss.com, https://code.jquery.com; external stylesheets ONLY from https://fonts.googleapis.com with the font files they pull from https://fonts.gstatic.com. Every other host is blocked, and so is fetch/XHR/WebSocket to anywhere but the page's own files. Load libraries as pinned UMD builds, e.g. <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js"></script>, placed BEFORE the inline script that uses them.
- A page may also be shown inside an MCP Apps host (Claude, the chat). Those hosts grant a narrower policy than the inference.sh viewer: no eval or new Function, no data: fonts, no blob: images or media. A page that needs any of them works in the viewer and breaks there, so inline fonts as files stored beside the page (the "assets" capability) and avoid libraries that compile code at runtime.
- Size: the source must be under 16 MiB. Prefer SVG and CSS over embedded raster images; summarize large datasets instead of inlining them.
- Markdown: set type "markdown" for a document-shaped page; it is rendered with GitHub-flavored markdown and a readable default typography.
- Diagrams: a flow, sequence, state or class diagram can be written as mermaid — a ```mermaid fence in Markdown, or <pre class="mermaid">...</pre> in HTML. The renderer adds mermaid 11.15.0 and themes it from the design tokens, and only for a page that has one. Everything else is inline SVG or CSS.
- Title: a short, distinctive noun phrase (2-4 words) that names the page, not a summary and not a category label. Favicon: one or two emoji. Keep both stable across updates.

## Runtime capabilities
A page is static by default and cannot reach the network at all. Declare a capability at publish time and the page gets a window.inferencesh object. Declare only what the page actually calls; a page gets nothing it did not declare. Every call goes through the viewer's own session, so a page can only ever act as the person looking at it, and every call returns a promise that may reject.
- "db" gives the page its own small store, so it remembers what people do on it: a poll, a checklist, a sign-up sheet, notes people leave. Anyone who can view the page reads the shared data; only people who may interact with or edit the page write it: its team, people it is shared with, and members of its org when it is org-visible. A visitor who only has a public or unlisted link reads the shared data but cannot change it. Every signed-in viewer keeps their own documents under data/users/me/, private to them, even from the page author.
- "user" tells the page who is viewing: whether they are signed in, their name, their avatar, and whether they may edit. Never an email, never a credential.
- "assets" lets the page show files stored beside it — images, video, audio, fonts, PDFs — instead of inlining them. The page reads window.inferencesh.assets, an array baked into the document at render time, and must use each url exactly as given: the page is sandboxed and sends no credentials, so an address you construct yourself will not load.
Load `belt-artifact-capabilities` before calling any of them. The document shape, the privacy rules, the quotas and the failure modes are all there, and a page that guesses at them fails silently.

## Never publish
The sandbox stops a page reaching the platform. It does nothing about a page that lies to the person reading it, and a link on this domain carries the trust of this domain. Refuse, and say why in a sentence:
- a page that impersonates a real person, company or product: their name, branding, byline or domain used as if it were theirs
- fabricated records, receipts, invoices, transcripts, test results or reviews presented as genuine
- a form or flow that asks for a password, a card number, a recovery phrase or a one-time code
- a page built to pressure, mislead or target one named private individual
This holds whether you wrote the page or someone handed it to you, and regardless of the reason given for it, including that it is a mock-up, a test or a prop: a published page works exactly like the real thing. If a page is refused, do not offer another way to host it.

## Updating
To update a page in place, pass artifact_id (or the same name in the same namespace). Each publish creates a new version; identical content is a no-op. Viewers with the page open see the new version live.
- `artifact_reply`: Reply into one comment thread on an artifact. Only works on a thread that was sent to you. Your reply is shown as written by you on behalf of the person who sent the thread. Say what you changed, briefly; if you made the change, resolve the thread afterwards.
- `artifact_resolve`: Mark a comment thread resolved once you have acted on it: the change is made, or you established none was needed. Only works on a thread that was sent to you. Do not resolve feedback you did not act on, and leave a thread open while the person still needs an answer from you.
- `artifact_viewer_get`: Tells a page who is looking at it, as the page runtime's user.get: signed in or not, name, avatar, and whether they may edit. Never an email.
- `knowledge_create`: Create a new knowledge entry (concept, observation, preference, reference, etc.)
- `knowledge_delete`: Delete a knowledge entry by ID
- `knowledge_get`: Get detailed information about a knowledge entry by namespace/name or ID
- `knowledge_list`: List your knowledge entries, optionally filtered by type
- `knowledge_search`: Search your knowledge entries by query
- `mcp_connect`: Initiate a connection to an MCP server. For OAuth servers, returns an authorization URL to open in a browser.
- `mcp_disconnect`: Remove connection to an MCP server
- `mcp_get`: Get details about an MCP server including connection status
- `mcp_list`: Browse available MCP servers that can be connected to
- `mcp_run`: Call a tool on a connected MCP server. The server must be connected first via mcp_connect.
- `mcp_search`: Search available MCP servers by query
- `mcp_tools`: List available tools on a connected MCP server, or get details for a specific tool
- `open_thread_panel`: Open inference.sh beside this conversation: the flow, artifact or run being discussed stays in view while the conversation goes on. Pass no arguments.
- `open_workspace`: Open the inference.sh workspace: run apps, talk to agents, edit flows, publish artifacts and watch runs. Opens fullscreen; pass no arguments.
- `skill_files`: List supplementary files for a skill (references, scripts, etc.)
- `skill_search`: Search the public skill store
- `skill_store`: Browse approved skills in the public skill store
- `skill_upload`: Create or update a skill with SKILL.md content and optional supporting files
- `skill_use`: Fetch a skill's assembled SKILL.md content. Tries the inference.sh store first, falls back to GitHub. Returns the full skill content for the agent to consume.
- `skill_view`: View a specific supplementary file from a skill's manifest
- `task_cancel`: Cancel a running or queued task
- `task_get`: Get status and output of a task
- `task_list`: List your tasks on inference.sh
- `task_logs`: Get execution logs for a task
- `workspace_focus`: Record what the user is looking at in the workspace frame, so tools can default to it. Called by the workspace viewer on navigation and selection.
- `workspace_session`: Mint a short-lived session for the workspace frame, as the signed-in user and the connection's team. Replaces the previous one. Called by the workspace viewer, never by the model.
- `workspace_session_end`: Revoke the session minted for the workspace frame. Called by the workspace viewer when the panel closes, never by the model.
