{"about":"Public Magic Cloud guest surface on this server. No key or signup. The GET endpoints below answer a plain HTTP GET, and the sandbox endpoint lets you compose them in one call. Invoke the sandbox endpoint with describe set to true to learn which functions you may call, and the rate limit and timeout that apply to you.","base":"https://hyperlambda.dev","endpoints":[{"path":"magic/modules/chinook/Genre","verb":"get","description":"\nA sample SQL database, Chinook (artists, albums, tracks, customers, invoices), exposed as\nendpoints generated from its schema. Answers a plain GET, no key needed.\n\nTables: Album, Artist, Customer, Employee, Genre, Invoice, InvoiceLine, MediaType, Playlist,\nPlaylistTrack, Track. Every table has /magic/modules/chinook/{Table} to list rows, plus the\nvariants {Table}-count, {Table}-group, {Table}-aggregate, {Table}-distinct and\n{Table}-count-distinct. Most tables also have {Table}-search.\n\nFor instance, GET /magic/modules/chinook/Genre?limit=3 returns the first three genres, and\nGET /magic/modules/chinook/Genre-count returns {\"count\":25}.\n\nTo combine several of these in one call, for instance to rank customers by total spend, POST a\nscript to the sandbox endpoint below that uses execute-file with these files, for instance\n/modules/chinook/Genre.get.hl. Load a file with io.file.load to see the arguments it takes.\n"},{"path":"magic/modules/tools/url-to-markdown","verb":"get","description":"\nFetches the page at the [url] query parameter and returns it as Markdown, as JSON with the\nfields [markdown], [html_tokens] and [markdown_tokens], the last two being the token counts of\nthe page before and after conversion. Answers a plain GET, no key needed.\n\nFor instance, GET /magic/modules/tools/url-to-markdown?url=https://ainiro.io\n\nLimited to 10 requests per minute per IP address.\n"},{"path":"magic/modules/tools/sitemap","verb":"get","description":"\nTakes the full URL of a sitemap in the [url] query parameter, either a normal sitemap or an\nindex of linked sitemaps, and returns a JSON array of objects with the fields [url] and\n[lastmod] ([lastmod] is null when the sitemap has none). Answers a plain GET, no key needed.\n\nFor instance, GET /magic/modules/tools/sitemap?url=https://hyperlambda.dev/sitemap.xml\n\nVery large sitemap indexes, with hundreds of thousands of URLs, can exceed the time limit.\n"},{"path":"magic/modules/hl-test/run","verb":"post","description":"\nSandboxed Hyperlambda endpoint, generated by the Sandbox API generator.\n\nOptional. Use it to compose the endpoints above, and the files behind them, in a single call.\n\nExecutes caller-supplied Hyperlambda passed in as [hyperlambda].\n\nThe code is checked - every referenced function must exist on this server - then\nexecuted inside a whitelisted sandbox whose vocabulary and rate limit are chosen\nfrom the caller's roles. Always returns the result of the execution together with\na [state] describing what happened, and a [reason] whenever the runtime refused\nthe code or it failed.\n\nTo discover the exact capability surface available to you, call with [describe] set\nto true instead of passing in [hyperlambda] - and it returns your visible vocabulary,\nand the rate limit and timeout that apply to you, without executing anything or\ncounting against the rate limit.\n\nStates: described (a [describe] call), executed, rejected (a function or a pinned\nargument was not allowed), unknown-slot (a referenced function does not exist),\nerror (the code threw), timeout (execution exceeded the configured limit),\ngenerator-failed (no code came back from the Hyperlambda Generator).\n\nTo execute files and return the result, a calling agent might pass in for instance.\n\n```hyperlambda\nexecute-file:/whatever_module/whatever_file.get.hl\nreturn-nodes:x:-/*\n```\n\nTo pass in arguments to files, a calling agent might pass in for instance.\n\n```hyperlambda\nexecute-file:/whatever_module/whatever_file.get.hl\n   argument1:\"This is a string\"\n   argument2:int:57\n   argument3:decimal:0.5\nreturn-nodes:x:-/*\n```\n\nFiles that return an object or several values, such as the files above, need\n`return-nodes:x:-/*`. Using `return-value:x:-` on them returns null. If a file returns a\nsingle value, the agent can use `return-value:x:-` instead, to return the literal returned by\nthe invoked Hyperlambda file.\n\nTo understand what arguments an agent can pass in, the agent can use [io.file.load]\nas follows for instance.\n\n```hyperlambda\nio.file.load:/some_module/some_hyperlambda_file.post.hl\nreturn-value:x:-\n```\n"}]}