[{"data":1,"prerenderedAt":171},["ShallowReactive",2],{"navigation_docs":3,"landing":52,"landing-host-views":73,"landing-host-answers":135},[4,28],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Defining Tools","\u002Fguide\u002Fdefining-tools","1.guide\u002F02.defining-tools",{"title":16,"path":17,"stem":18},"Validation and Errors","\u002Fguide\u002Fvalidation","1.guide\u002F03.validation",{"title":20,"path":21,"stem":22},"CLI","\u002Fguide\u002Fcli","1.guide\u002F04.cli",{"title":24,"path":25,"stem":26},"Moving a Package Over","\u002Fguide\u002Fmigrating","1.guide\u002F05.migrating","i-lucide-book-open",{"title":29,"path":30,"stem":31,"children":32,"icon":51},"Hosts","\u002Fhosts","2.hosts\u002F00.index",[33,35,39,43,47],{"title":34,"path":30,"stem":31},"Every host",{"title":36,"path":37,"stem":38},"MCP","\u002Fhosts\u002Fmcp","2.hosts\u002F01.mcp",{"title":40,"path":41,"stem":42},"Pi","\u002Fhosts\u002Fpi","2.hosts\u002F02.pi",{"title":44,"path":45,"stem":46},"OMP","\u002Fhosts\u002Fomp","2.hosts\u002F03.omp",{"title":48,"path":49,"stem":50},"AI SDK","\u002Fhosts\u002Fai-sdk","2.hosts\u002F04.ai-sdk","i-lucide-table",{"id":53,"title":54,"body":55,"description":54,"extension":64,"meta":65,"navigation":66,"path":67,"seo":68,"stem":71,"__hash__":72},"landing\u002Findex.md","",{"type":56,"value":57,"toc":61},"minimark",[58],[59,60],"landing-home",{},{"title":54,"searchDepth":62,"depth":62,"links":63},2,[],"md",{},true,"\u002F",{"title":69,"description":70},"Write the tool once","One tool definition for MCP and Pi and OMP and the AI SDK. One schema and one validator on every host","index","dYtectjpoqJSZQmSyNYg1eTGh2n1FB0VSgYPjr0KvfM",[74,94,110,123],{"key":75,"rows":76,"registration":89,"fields":90},"mcp",[77,80,83,86],{"label":78,"value":79},"title","Text Slug",{"label":81,"value":82,"accent":66},"hints","readOnly, idempotent",{"label":84,"value":85},"inputSchema","text, separator",{"label":87,"value":88},"failure","isError: true","{\n  \"name\": \"text_slug\",\n  \"title\": \"Text Slug\",\n  \"description\": \"Turn a title into a lowercase URL slug. Letters and digits stay, accents lose their marks, the rest becomes the separator.\",\n  \"inputSchema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"text\": {\n        \"type\": \"string\",\n        \"minLength\": 1,\n        \"maxLength\": 200,\n        \"pattern\": \"\\\\S\",\n        \"description\": \"Title to slug\"\n      },\n      \"separator\": {\n        \"enum\": [\n          \"-\",\n          \"_\",\n          \".\"\n        ],\n        \"description\": \"Joins the words. '-' when omitted\"\n      }\n    },\n    \"required\": [\n      \"text\"\n    ],\n    \"additionalProperties\": false\n  },\n  \"annotations\": {\n    \"title\": \"Text Slug\",\n    \"readOnlyHint\": true,\n    \"destructiveHint\": false,\n    \"idempotentHint\": true,\n    \"openWorldHint\": false\n  }\n}",{"name":91,"label":78,"schema":84,"effect":92,"prompt":93,"run":93},"name","annotations",null,{"key":95,"rows":96,"registration":106,"fields":107},"pi",[97,99,102,104],{"label":98,"value":79},"label",{"label":100,"value":101,"accent":66},"prompt","snippet, 1 rule",{"label":103,"value":85},"parameters",{"label":87,"value":105},"thrown","{\n  \"name\": \"text_slug\",\n  \"label\": \"Text Slug\",\n  \"description\": \"Turn a title into a lowercase URL slug. Letters and digits stay, accents lose their marks, the rest becomes the separator.\",\n  \"promptSnippet\": \"Use text_slug to turn a title into a URL slug.\",\n  \"promptGuidelines\": [\n    \"Pass separator '_' for identifiers. The default '-' is for URLs.\"\n  ],\n  \"parameters\": {\n    \"type\": \"object\",\n    \"required\": [\n      \"text\"\n    ],\n    \"properties\": {\n      \"text\": {\n        \"type\": \"string\",\n        \"minLength\": 1,\n        \"maxLength\": 200,\n        \"pattern\": \"\\\\S\",\n        \"description\": \"Title to slug\"\n      },\n      \"separator\": {\n        \"enum\": [\n          \"-\",\n          \"_\",\n          \".\"\n        ],\n        \"description\": \"Joins the words. '-' when omitted\"\n      }\n    },\n    \"additionalProperties\": false\n  },\n  \"execute\": \"[function]\"\n}",{"name":91,"label":98,"schema":103,"effect":93,"prompt":108,"run":109},"promptSnippet","execute",{"key":111,"rows":112,"registration":121,"fields":122},"omp",[113,114,117,119],{"label":98,"value":79},{"label":115,"value":116,"accent":66},"approval","read",{"label":103,"value":118},"Type.Unsafe(json)",{"label":87,"value":120},"isError or thrown","{\n  \"name\": \"text_slug\",\n  \"label\": \"Text Slug\",\n  \"description\": \"Turn a title into a lowercase URL slug. Letters and digits stay, accents lose their marks, the rest becomes the separator.\",\n  \"parameters\": {\n    \"unsafe\": {\n      \"type\": \"object\",\n      \"required\": [\n        \"text\"\n      ],\n      \"properties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"minLength\": 1,\n          \"maxLength\": 200,\n          \"pattern\": \"\\\\S\",\n          \"description\": \"Title to slug\"\n        },\n        \"separator\": {\n          \"enum\": [\n            \"-\",\n            \"_\",\n            \".\"\n          ],\n          \"description\": \"Joins the words. '-' when omitted\"\n        }\n      },\n      \"additionalProperties\": false\n    }\n  },\n  \"approval\": \"read\",\n  \"execute\": \"[function]\",\n  \"renderCall\": \"[function]\",\n  \"renderResult\": \"[function]\"\n}",{"name":91,"label":98,"schema":103,"effect":115,"prompt":93,"run":109},{"key":124,"rows":125,"registration":133,"fields":134},"ai",[126,127,129,132],{"label":78,"value":79},{"label":84,"value":128,"accent":66},"jsonSchema()",{"label":130,"value":131},"output","details + text",{"label":87,"value":105},"{\n  \"title\": \"Text Slug\",\n  \"description\": \"Turn a title into a lowercase URL slug. Letters and digits stay, accents lose their marks, the rest becomes the separator.\",\n  \"inputSchema\": {\n    \"type\": \"object\",\n    \"required\": [\n      \"text\"\n    ],\n    \"properties\": {\n      \"text\": {\n        \"type\": \"string\",\n        \"minLength\": 1,\n        \"maxLength\": 200,\n        \"pattern\": \"\\\\S\",\n        \"description\": \"Title to slug\"\n      },\n      \"separator\": {\n        \"enum\": [\n          \"-\",\n          \"_\",\n          \".\"\n        ],\n        \"description\": \"Joins the words. '-' when omitted\"\n      }\n    },\n    \"additionalProperties\": false\n  },\n  \"execute\": \"[function]\"\n}",{"name":93,"label":78,"schema":84,"effect":93,"prompt":93,"run":109},[136,145,153,159,165],{"mcp":137,"pi":141,"omp":142,"ai":143},{"failed":138,"channel":139,"text":140},false,"result","hello-world",{"failed":138,"channel":139,"text":140},{"failed":138,"channel":139,"text":140},{"failed":138,"channel":139,"text":144},"{\"slug\":\"hello-world\",\"words\":2,\"text\":\"hello-world\"}",{"mcp":146,"pi":149,"omp":150,"ai":151},{"failed":66,"channel":147,"text":148},"isError","Invalid arguments: unknown property \"seperator\"; takes text, separator",{"failed":66,"channel":105,"text":148},{"failed":66,"channel":105,"text":148},{"failed":66,"channel":152,"text":148},"refused",{"mcp":154,"pi":156,"omp":157,"ai":158},{"failed":66,"channel":147,"text":155},"Invalid arguments at \u002Fseparator: must be one of -, _, .",{"failed":66,"channel":105,"text":155},{"failed":66,"channel":105,"text":155},{"failed":66,"channel":152,"text":155},{"mcp":160,"pi":162,"omp":163,"ai":164},{"failed":66,"channel":147,"text":161},"Nothing to slug in \"¯\\\\_(ツ)_\u002F¯\": no letters or digits.",{"failed":66,"channel":105,"text":161},{"failed":66,"channel":147,"text":161},{"failed":66,"channel":105,"text":161},{"mcp":166,"pi":168,"omp":169,"ai":170},{"failed":66,"channel":147,"text":167},"Invalid arguments at \u002Ftext: must match pattern \"\\S\"",{"failed":66,"channel":105,"text":167},{"failed":66,"channel":105,"text":167},{"failed":66,"channel":152,"text":167},1791469405144]