MCP Server

Fify

io.github.renfei-design/fify
Productivity Public & reachable MCP 2025-11-25

What this MCP does

Renders grounded answers as interactive views for comparisons, plans, timelines, profiles, and other decision-oriented presentations.

read_information_ui_run
Read an information UI run
App-only unseen-frame reader for the mounted Fify widget.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['runId', 'afterSequence'], 'properties': {'runId': {'type': 'string'}, 'afterSequence': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['runId', 'state', 'lastSequence', 'frames'], 'properties': {'runId': {'type': 'string'}, 'state': {'enum': ['running', 'complete', 'failed'], 'type': 'string'}, 'frames': {'type': 'array', 'items': {}}, 'lastSequence': {'type': 'number'}}, 'additionalProperties': False}
render_information_ui
Render information as an interactive view
Render a fully grounded answer as a non-consequential interactive information view when structure or interaction materially improves it. Complete factual reasoning first and always pass the authoritative plain answer. If the user supplied sufficient facts, use them directly and invoke immediately without extra retrieval. For a named real-person profile, set profileSubject to the canonical name unless the user requests no image; Fify will perform a bounded trusted Wikimedia portrait lookup. Pre-resolved attributed Wikimedia or Openverse media may also be supplied, but never invent or guess media URLs.
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['version', 'originalRequest', 'groundedAnswer', 'locale', 'sections', 'sources', 'suggestedRefinements'], 'properties': {'media': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'url', 'alt', 'caption', 'role', 'sourceId'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9]+(?:[-_.:][a-z0-9]+)*$', 'maxLength': 48, 'minLength': 1}, 'alt': {'type': 'string', 'maxLength': 180, 'minLength': 1}, 'url': {'type': 'string', 'maxLength': 2048}, 'role': {'enum': ['identity', 'evidence', 'illustration'], 'type': 'string'}, 'caption': {'type': 'string', 'maxLength': 400}, 'sourceId': {'$ref': '#/properties/sections/items/properties/id'}}, 'description': 'Optional pre-resolved attributed visual evidence from an allowed Wikimedia or Openverse image URL and an existing source page.', 'additionalProperties': False}, 'maxItems': 4}, 'locale': {'type': 'string', 'maxLength': 35, 'minLength': 2}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'$ref': '#/properties/sections/items/properties/id'}, 'url': {'type': 'string', 'maxLength': 2048}, 'title': {'type': 'string', 'maxLength': 180, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 32}, 'version': {'type': 'string', 'const': '1.0'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'body', 'items', 'sourceIds'], 'properties': {'id': {'type': 'string', 'pattern': '^[a-z0-9]+(?:[-_.:][a-z0-9]+)*$', 'maxLength': 64, 'minLength': 1}, 'body': {'type': 'string', 'maxLength': 4000}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'value', 'detail', 'sourceIds'], 'properties': {'id': {'$ref': '#/properties/sections/items/properties/id'}, 'label': {'type': 'string', 'maxLength': 90, 'minLength': 1}, 'value': {'type': 'string', 'maxLength': 120}, 'detail': {'type': 'string', 'maxLength': 2048}, 'sourceIds': {'type': 'array', 'items': {'$ref': '#/properties/sections/items/properties/id'}, 'maxItems': 8}}, 'additionalProperties': False}, 'maxItems': 12}, 'title': {'type': 'string', 'maxLength': 110, 'minLength': 1}, 'sourceIds': {'type': 'array', 'items': {'$ref': '#/properties/sections/items/properties/id'}, 'maxItems': 8}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}, 'groundedAnswer': {'type': 'string', 'maxLength': 16000, 'minLength': 1}, 'profileSubject': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Canonical person name for a real-person profile. Omit when the user requests no image or the subject is not a person.'}, 'originalRequest': {'type': 'string'}, 'continuationState': {'type': 'object', 'required': ['priorRunId', 'checkedIds', 'selectedIds', 'inputs'], 'properties': {'inputs': {'type': 'object', 'propertyNames': {'pattern': '^[a-z0-9]+(?:[-_.:][a-z0-9]+)*$', 'maxLength': 64, 'minLength': 1}, 'additionalProperties': {'type': 'string', 'maxLength': 500}}, 'checkedIds': {'type': 'array', 'items': {'$ref': '#/properties/sections/items/properties/id'}, 'maxItems': 96}, 'priorRunId': {'type': 'string', 'maxLength': 96, 'minLength': 1}, 'selectedIds': {'type': 'array', 'items': {'$ref': '#/properties/sections/items/properties/id'}, 'maxItems': 24}}, 'additionalProperties': False}, 'suggestedRefinements': {'type': 'array', 'items': {'type': 'string', 'maxLength': 140, 'minLength': 1}, 'maxItems': 2}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['runId', 'state', 'lastSequence', 'fallbackText', 'frames'], 'properties': {'runId': {'type': 'string'}, 'state': {'enum': ['running', 'complete', 'failed'], 'type': 'string'}, 'frames': {'type': 'array', 'items': {}}, 'fallbackText': {'type': 'string'}, 'lastSequence': {'type': 'number'}}, 'additionalProperties': False}
Added
read_information_ui_run
Sept. 17, 2026, 12:49 p.m.
Added
render_information_ui
Sept. 17, 2026, 12:49 p.m.