Manifests

Manifests describe when a model should select a Fable UI tool.

A manifest is the model-selection contract for a Fable UI surface. It explains when a tool should win, when it should lose to a neighboring tool, and the safety boundary around the resulting UI. It is product behavior, not a permission boundary.

Current catalog

The registry currently ships these model-facing contracts:

ToolRegistry itemInstalled manifest or contract
show_metricmetric-cardlib/fable-ui/manifests/show-metric.md
show_next_actionssuggested-actionslib/fable-ui/manifests/show-next-actions.md
request_confirmationconfirmation-cardlib/fable-ui/manifests/request-confirmation.md
collect_inputform-cardlib/fable-ui/manifests/collect-input.md
show_chartchartslib/fable-ui/manifests/show-chart.md
show_text_editortext-editor-cardlib/fable-ui/manifests/show-text-editor.md
show_email_composeremail-composer-cardlib/fable-ui/manifests/show-email-composer.md
show_code_blockcode-block-cardlib/fable-ui/manifests/show-code-block.md
show_tabledata-browserlib/fable-ui/manifests/show-table.md
show_data_browserdata-browserlib/fable-ui/manifests/show-data-browser.md
get_rendered_datadata-browserlib/fable-ui/manifests/get-rendered-data.md

get_rendered_data is installed with DataBrowser because the chat client must register it and provide its output. It reads only the current provider-owned rendered page and never fetches or refetches.

What a manifest should define

A useful manifest includes:

  • Tool and component names.
  • When to use and avoid the tool.
  • Neighboring tools to prefer in ambiguous cases.
  • Representative trigger and anti-trigger prompts.
  • Payload constraints and safety notes.

For example, show_metric is for one trusted primary number, not a list of records. show_table is for a bounded static snapshot, while show_data_browser is for a registered host-owned resource with browsing controls. request_confirmation precedes a host-owned side effect; it never authorizes one.

Keep contracts aligned

Three layers must agree:

  1. The tool definition constrains valid input and output.
  2. The manifest guides model selection.
  3. The host integration validates data, renders the trusted component, and performs any callback or side effect.

When one layer changes, update the other two and test routing with the installed tool set. Do not place secrets, raw endpoints, private collection paths, handler code, or authorization logic in a manifest.

Read Tool Definitions for the runtime contract and AI SDK Integration for registration, rendering, callback, and rendered-data-loop recipes.