[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"navigation_docs":3,"landing":48,"landing-host-views":69,"landing-host-answers":131},[4,24],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19],{"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},"Moving a Package Over","\u002Fguide\u002Fmigrating","1.guide\u002F04.migrating","i-lucide-book-open",{"title":25,"path":26,"stem":27,"children":28,"icon":47},"Hosts","\u002Fhosts","2.hosts\u002F00.index",[29,31,35,39,43],{"title":30,"path":26,"stem":27},"Every host",{"title":32,"path":33,"stem":34},"MCP","\u002Fhosts\u002Fmcp","2.hosts\u002F01.mcp",{"title":36,"path":37,"stem":38},"Pi","\u002Fhosts\u002Fpi","2.hosts\u002F02.pi",{"title":40,"path":41,"stem":42},"OMP","\u002Fhosts\u002Fomp","2.hosts\u002F03.omp",{"title":44,"path":45,"stem":46},"AI SDK","\u002Fhosts\u002Fai-sdk","2.hosts\u002F04.ai-sdk","i-lucide-table",{"id":49,"title":50,"body":51,"description":50,"extension":60,"meta":61,"navigation":62,"path":63,"seo":64,"stem":67,"__hash__":68},"landing\u002Findex.md","",{"type":52,"value":53,"toc":57},"minimark",[54],[55,56],"landing-home",{},{"title":50,"searchDepth":58,"depth":58,"links":59},2,[],"md",{},true,"\u002F",{"title":65,"description":66},"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",[70,90,106,119],{"key":71,"rows":72,"registration":85,"fields":86},"mcp",[73,76,79,82],{"label":74,"value":75},"title","Text Slug",{"label":77,"value":78,"accent":62},"hints","readOnly, idempotent",{"label":80,"value":81},"inputSchema","text, separator",{"label":83,"value":84},"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    \"readOnlyHint\": true,\n    \"destructiveHint\": false,\n    \"idempotentHint\": true,\n    \"openWorldHint\": false\n  }\n}",{"name":87,"label":74,"schema":80,"effect":88,"prompt":89,"run":89},"name","annotations",null,{"key":91,"rows":92,"registration":102,"fields":103},"pi",[93,95,98,100],{"label":94,"value":75},"label",{"label":96,"value":97,"accent":62},"prompt","snippet, 1 rule",{"label":99,"value":81},"parameters",{"label":83,"value":101},"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":87,"label":94,"schema":99,"effect":89,"prompt":104,"run":105},"promptSnippet","execute",{"key":107,"rows":108,"registration":117,"fields":118},"omp",[109,110,113,115],{"label":94,"value":75},{"label":111,"value":112,"accent":62},"approval","read",{"label":99,"value":114},"Type.Unsafe(json)",{"label":83,"value":116},"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":87,"label":94,"schema":99,"effect":111,"prompt":89,"run":105},{"key":120,"rows":121,"registration":129,"fields":130},"ai",[122,123,125,128],{"label":74,"value":75},{"label":80,"value":124,"accent":62},"jsonSchema()",{"label":126,"value":127},"output","details + text",{"label":83,"value":101},"{\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":89,"label":74,"schema":80,"effect":89,"prompt":89,"run":105},[132,141,149,155,161],{"mcp":133,"pi":137,"omp":138,"ai":139},{"failed":134,"channel":135,"text":136},false,"result","hello-world",{"failed":134,"channel":135,"text":136},{"failed":134,"channel":135,"text":136},{"failed":134,"channel":135,"text":140},"{\"slug\":\"hello-world\",\"words\":2,\"text\":\"hello-world\"}",{"mcp":142,"pi":145,"omp":146,"ai":147},{"failed":62,"channel":143,"text":144},"isError","Invalid arguments: unknown property \"seperator\"; takes text, separator",{"failed":62,"channel":101,"text":144},{"failed":62,"channel":101,"text":144},{"failed":62,"channel":148,"text":144},"refused",{"mcp":150,"pi":152,"omp":153,"ai":154},{"failed":62,"channel":143,"text":151},"Invalid arguments at \u002Fseparator: must be one of -, _, .",{"failed":62,"channel":101,"text":151},{"failed":62,"channel":101,"text":151},{"failed":62,"channel":148,"text":151},{"mcp":156,"pi":158,"omp":159,"ai":160},{"failed":62,"channel":143,"text":157},"Nothing to slug in \"¯\\\\_(ツ)_\u002F¯\": no letters or digits.",{"failed":62,"channel":101,"text":157},{"failed":62,"channel":143,"text":157},{"failed":62,"channel":101,"text":157},{"mcp":162,"pi":164,"omp":165,"ai":166},{"failed":62,"channel":143,"text":163},"Invalid arguments at \u002Ftext: must match pattern \"\\S\"",{"failed":62,"channel":101,"text":163},{"failed":62,"channel":101,"text":163},{"failed":62,"channel":148,"text":163},1790784240145]