haoku.app
Haoku
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 7 · Act 13 · Transact 0 · Score: Not yet scored
Tool inspector
add_block
Adds a block and shows it at once. Either give "type" and "content" — heading: { text, level?: 1|2|3 (default 2) }; paragraph: { text } — markdown; write [1], [2]… in the text to mark where each citation applies (they become footnotes); callout: { title?, body (markdown), tone?: "idea"|"example"|"warning"|"why" (default "idea") }; diagram: { title?, nodes: [{ label, citation? }], edges?: [{ from, to, label? }] } — any graph: from/to by 1-based node position or label, branches and cycles allowed, laid out automatically; without edges the nodes form a chain; comparison: { title?, columns: [string], rows: [{ label, cells: [string] }] }; image: { source: an image source (id or name), caption? } — or give raw "markdown" for one block. The passages the user gathered in the context and has not used yet are cited by default (use_collected: false to leave them). Block markdown: `## heading`, free markdown paragraphs, a GFM table (first column = row labels, optional **title** line above), ``, or an element: body , {"nodes":[{"label"}],"edges":[{"from":0,"to":1}]} , Cite with [^k] marks (keys from get_workspace) or list citations and use [1], [2]….
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
type |
string | no | — |
content |
object | no | Shape depends on type; see the tool description. |
markdown |
string | no | Raw markdown for exactly one block, instead of type + content. |
position |
— | no | Where the block goes: "end" (default), "start", { "after": block_id }, { "before": block_id } or { "in_section": heading_block_id } for the end of that section. |
citations |
array | no | Passages this block draws on, in the order the [n] marks refer to. A passage another block already cites is refused: each one backs a single block. |
use_collected |
boolean | no | Defaults to true: the block cites the passages the user gathered in the context and has not used yet (get_selection → gathered, the ones with free: true), before any listed here, and the basket is emptied. Pass false when the block has nothing to do with them. |
Raw JSON schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"heading",
"paragraph",
"callout",
"diagram",
"comparison",
"image"
]
},
"content": {
"type": "object",
"description": "Shape depends on type; see the tool description."
},
"markdown": {
"type": "string",
"description": "Raw markdown for exactly one block, instead of type + content."
},
"position": {
"description": "Where the block goes: \"end\" (default), \"start\", { \"after\": block_id }, { \"before\": block_id } or { \"in_section\": heading_block_id } for the end of that section.",
"oneOf": [
{
"type": "string",
"enum": [
"end",
"start"
]
},
{
"type": "object",
"properties": {
"after": {
"type": "string"
}
},
"required": [
"after"
]
},
{
"type": "object",
"properties": {
"before": {
"type": "string"
}
},
"required": [
"before"
]
},
{
"type": "object",
"properties": {
"in_section": {
"type": "string"
}
},
"required": [
"in_section"
]
}
]
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "A source by id (from list_sources) or by file name."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number as printed, starting at 1. Text sources are a single page."
},
"quote": {
"type": "string",
"description": "A passage of the source, quoted from read_source or search_sources. Spacing, line breaks and hyphenation do not matter."
},
"occurrence": {
"type": "integer",
"minimum": 1,
"description": "Which occurrence when the quote repeats on the page. Defaults to 1."
}
},
"required": [
"source"
],
"description": "Where a piece of content comes from. Give page and quote for PDFs and text; an image is cited by source alone."
},
"description": "Passages this block draws on, in the order the [n] marks refer to. A passage another block already cites is refused: each one backs a single block."
},
"use_collected": {
"type": "boolean",
"description": "Defaults to true: the block cites the passages the user gathered in the context and has not used yet (get_selection → gathered, the ones with free: true), before any listed here, and the basket is emptied. Pass false when the block has nothing to do with them."
}
}
}
Similar websites
pocketgull.app
Pocket Gull is a real-time clinical AI consult engine powered by Google Gemini. Features 10D multi-paradigm strategy, FHIR R4 export & 3D spatial anatomy.
webmcp-six-lac.vercel.app
AI Navigation Layer: Model Context Protocol (MCP) Semantic DOM integration for intelligent, safe, and observable web navigation.
ghqsandbox.net
Interactive math and physics tools an AI agent can drive directly through WebMCP.
app.formative.com
Formative classroom assessment and learning platform