Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Your server on HTTP: REST and WebSocket for sites, bots, and AI agents, with tokens, scopes, and an audit log.
WorldAPI tells your Discord, Telegram, or Slack what happens on the server, and an AI agent connects in one click. Webhooks and MCP connections are made in game, in the admin panel, or through the API, and anything made through the API to the world can be undone.
Webhooks
- 📣 Events to chat services. Discord, Slack (Mattermost and Rocket.Chat too), Telegram, Microsoft Teams, Google Chat, or any URL as JSON signed with HMAC-SHA256. Chat services get a short message in English, Russian, Spanish, Portuguese, or German; you can reword any message with placeholders such as
{player}. - 🎛️ The events you want. Ready sets (everything notable, players, the server, chat), single events,
player.*for a prefix, or*for everything notable. Pause, test, edit, or delete a webhook at any time. - 🎮 From the game. An operator runs
/worldapi webhookand clicks through: the service, the events, the language. Then a window asks for the webhook URL or the Telegram bot token, which goes straight to WorldAPI, never into chat, a command, or the log. WorldAPI finds the Telegram chat by itself. - 🖥️ In the panel and the API. Access → Webhooks in the admin panel;
/webhooksin the API with the newwebhooks:managepermission, which the defaultadminandownergroups have. Webhooks inconfig.yml(webhooks.hooks) keep working, andwebhooks.enabled: falseturns every webhook off. - 🔒 Safe by default. A webhook never gets a permission its maker lacks, and by default sees no coordinates and no chat. One made in game, in the panel, or through the API posts over HTTPS only, and never to the server's own machine or private network, unless
webhooks.allowPrivateAddressesallows it. Messages can't ping@everyoneor carry links from game text, and a test message goes out once per webhook every 10 seconds.
MCP connections
- 🤖 One click to an AI agent. A token of the new kind “MCP” comes with a ready setup for Claude Code, Codex, Cursor, OpenCode, or any MCP client: a command to paste or a file to save. In game,
/worldapi mcp <name> [group]gives a copy button per client; in the panel, Tokens → New token → AI agent (MCP). - 📁 For one project only. A switch sets the agent up for every project on your machine or for the one you're in, with a reminder to keep the token's file out of git.
- 🌐
http.publicUrlnames the address people reach the API at, for the setup to point there.
The world
- ↩️ Undo. Setting and filling blocks and editing containers through the API keeps what they replaced, until the server stops:
GET /changeslists the changes andPOST /changes/{id}/undoputs the blocks back, a chest's items included. It doesn't touch blocks players changed since unless you ask, and players' own actions aren't recorded.limits.undoBlockscaps the memory it takes. - 🧱 A whole area at once.
GET /worlds/{world}/blocks?from=x,y,z&to=x,y,zreads every block in a box, up tolimits.maxReadBlocks, and withspawns=trueshows where monsters could spawn. - 📚 The game's ids.
GET /registrieslists items, blocks, entities, effects, enchantments, biomes, structures, sounds, and more, mods' included, with search by words. - 🧑🌾 Villagers' homes. A villager shows the bed and the workstation it claimed.
- 🔎 Search the history.
GET /events?text=finds events by their text, chat included, in any language. It needsplayers:private.
What to do when you update
adminandownerin an olderconfig.ymlgetwebhooks:managewithout an edit, as long as they list what 4.2 shipped. If you changed either group, add"webhooks:manage"to it yourself.
Platforms
Paper
26.3