{"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"},{"path":"magic/modules/docs/playground","verb":"post","description":"Sandboxed Hyperlambda endpoint, generated by the Sandbox API generator.\r\n\r\nExecutes caller-supplied Hyperlambda passed in [hyperlambda].\r\n\r\nRoles:\r\n\r\n- *****: Can introspect every compiled slot of the system - its name, description and full signature - and transform the result with pure tree, string and math functions. Cannot touch files, databases, the network, configuration or any other part of the server.\r\n\r\nThe code is checked - every referenced function must exist on this server - then\r\nexecuted inside a whitelisted sandbox whose vocabulary and rate limit are chosen\r\nfrom the caller's roles. Always returns the code together with a [state] describing\r\nwhat happened, and a [reason] whenever the runtime refused the code or it failed.\r\n\r\nTo discover the exact capability surface available to you, call with [describe] set\r\nto true instead of [hyperlambda]/[instruction] - it returns your visible vocabulary,\r\nand the rate limit and timeout that apply to you, without executing anything or\r\ncounting against the rate limit.\r\n\r\nStates: described (a [describe] call), executed, rejected (a function or a pinned\r\nargument was not allowed), unknown-slot (a referenced function does not exist),\r\ninvalid-invocation (a declared argument is misspelled or a mandatory value is absent),\r\nerror (the code threw), timeout (execution exceeded the configured limit),\r\ngenerator-failed (no code came back from the Hyperlambda Generator)."},{"path":"magic/modules/docs/slots","verb":"get","description":"Every slot (function) of Hyperlambda, with its name, description and complete signature (value, arguments, constraints and what it returns), as one JSON array of roughly 400 objects. Answers a plain GET, no key needed.\n\nPublic and throttled per IP address, so fetch it once and keep it. A static copy without a throttle is published at https://docs.ainiro.io/reference/slots.json, a slim index of every slot, with the addresses of its reference page and its guide, at https://docs.ainiro.io/reference/slots-index.json, and one JSON file per slot at https://docs.ainiro.io/reference/slots/{namespace}/{slot}/slot.json."},{"path":"magic/modules/health/live","verb":"get","description":"Quality gate, SonarCloud measures and the latest CI run of the Magic Cloud codebase on master. Answers a plain GET, no key needed. Cached for 2 minutes. When the response has stale set to true, SonarCloud or GitHub did not answer, and the values are the last known copy - treat that as unknown, not as passing."},{"path":"magic/modules/health/repo","verb":"get","description":"The latest release of Magic Cloud, how many commits master is ahead of it, and the newest commits. Answers a plain GET, no key needed. Cached for 10 minutes."},{"path":"magic/modules/health/pulls","verb":"get","description":"The 100 most recently closed pull requests of the Magic Cloud repository, ordered by last update with the newest first, each with its number, title, the login, profile URL, avatar and type of its author (User for a person, Bot for a bot such as Dependabot), and merged, the date it was merged, which is null when it was closed without being merged. Count the entries whose merged is not null per author to see who is merging code. Answers a plain GET, no key needed. Cached for 10 minutes. When the response has stale set to true, GitHub did not answer and the values are the last known copy."},{"path":"magic/modules/health/history","verb":"get","description":"Quality history, weekly commits and code churn of the Magic Cloud codebase. Answers a plain GET, no key needed. Cached for 30 minutes."},{"path":"magic/modules/health/project","verb":"get","description":"GitHub stars and forks of Magic Cloud, plus the Link headers whose rel=\"last\" page number is the total number of commits and of releases. Answers a plain GET, no key needed. Cached for 1 hour."},{"path":"magic/modules/health/plugins","verb":"get","description":"Test coverage of every plugin of the Magic Cloud codebase, one object for each, with coverage in percent, lines to cover, uncovered lines and lines of code. A plugin without tests has null coverage. Answers a plain GET, no key needed. Cached for 30 minutes. When the response has stale set to true, SonarCloud did not answer and the values are the last known copy."},{"path":"magic/modules/health/scorecard","verb":"get","description":"The OpenSSF Scorecard of the Magic Cloud repository: an overall score from 0 to 10 and every check with its score and reason, such as code review, branch protection, pinned dependencies, token permissions, security policy, static analysis and vulnerabilities. A score of -1 means a check could not be evaluated. Calculated weekly and on every push to master by an independent tool, and read from api.securityscorecards.dev. Answers a plain GET, no key needed. Cached for 5 minutes. When the response has stale set to true, the source did not answer and the values are the last known copy."},{"path":"magic/modules/health/deps","verb":"get","description":"The dependency vulnerability status of the Magic Cloud codebase, with a state that is exactly one of clean, vulnerable, running, failed, stale and unknown, so no missing value has to be interpreted: how many advisories are open and how many are suppressed with a reason, per severity, every advisory with its package, version, severity and link, and how many Dependabot pull requests are open and how old the oldest is. Built from NuGet and npm audits that run every night and on every push to master. Answers a plain GET, no key needed. Cached for 5 minutes. When the response has stale set to true, a source did not answer and the values are the last known copy, and the state is stale."},{"path":"magic/modules/health/quality","verb":"get","description":"The quality gate conditions of the Magic Cloud codebase, each with its status, threshold and actual value, the ten files with the highest cognitive complexity, and the lines of code per language as a language=lines string separated by semicolons. Answers a plain GET, no key needed. Cached for 10 minutes. When the response has stale set to true, SonarCloud did not answer and the values are the last known copy."},{"path":"magic/modules/health/summary","verb":"get","description":"The shortest answer to whether master of the Magic Cloud codebase is passing: master is passing, failing or unknown, with the quality gate, coverage, the CI conclusion, the latest release and how many commits master is ahead of it. Unknown means SonarCloud or GitHub did not answer and the values are the last known copy. Answers a plain GET, no key needed."}],"docs":{"about":"Documentation of every slot of Hyperlambda. The reference is generated from the running system, and each slot has a guide with examples. The slim index tells you what exists and where its reference page and guide are, so choose from it before fetching any detail.","slots-index":"https://docs.ainiro.io/reference/slots-index.json","slots":"https://docs.ainiro.io/reference/slots.json","slots-live":"https://hyperlambda.dev/magic/modules/docs/slots","slot-json":"https://docs.ainiro.io/reference/slots/{namespace}/{slot}/slot.json","slot-page":"https://docs.ainiro.io/reference/slots/{namespace}/{slot}/","reference":"https://docs.ainiro.io/reference/slots/","llms-txt":"https://docs.ainiro.io/llms.txt","llms-full-txt":"https://docs.ainiro.io/llms-full.txt"},"mcp":{"about":"Every endpoint of a cloudlet is also an MCP tool, with OAuth 2.1 built in and the tool list filtered by role.","url":"https://hyperlambda.dev/magic/modules/mcp/mcp","oauth-protected-resource":"https://hyperlambda.dev/.well-known/oauth-protected-resource","oauth-authorization-server":"https://hyperlambda.dev/.well-known/oauth-authorization-server","guide":"https://docs.ainiro.io/tutorials/how-to-connect-the-mcp-server/"},"llms":{"llms-txt":"https://hyperlambda.dev/llms.txt","docs-llms-txt":"https://docs.ainiro.io/llms.txt"},"machine-readable":{"api-catalog":"https://hyperlambda.dev/.well-known/api-catalog","openapi":"https://hyperlambda.dev/openapi.json","sitemap":"https://hyperlambda.dev/sitemap.xml","page-as-markdown":"https://hyperlambda.dev/magic/modules/tools/url-to-markdown?url={page-url}","health-page":"https://hyperlambda.dev/health"},"security":{"about":"How to report a vulnerability privately. A good-faith report is rewarded with $100 for a confirmed vulnerability, and the author typically responds within 24 hours.","security-txt":"https://hyperlambda.dev/.well-known/security.txt","policy":"https://github.com/polterguy/magic/blob/master/SECURITY.md","contact":"mailto:thomas@ainiro.io"}}