Blackfire sends structured game data over GMCP (telnet option 201) beside the text of the game, for client scripts and panels such as Mudlet's. Every message is Package.Name followed by JSON.

Packages

PackageWhat it carries
Char.VitalsHealth, mana and movement (as strings), with every prompt
Char.StatusName, level, class, race, alignment and position
Char.AffectsThe spells and skills affecting you, with their durations
Room.InfoThe room's number, name, area, exits and features
Room.AddPlayer, Room.RemovePlayerPlayers arriving and leaving
Comm.Channel.TextChannel messages: says, tells, gossip and the rest
Char.QuestsYour quests and their objectives (ask for it, below)
Char.AchievementsYour achievements and progress towards them (ask for it, below)

Quests and achievements

The quest packages are sent only to clients that ask for them. Send this once GMCP is on (in Mudlet, from a script):

Core.Supports.Add ["Char.Quests 1", "Char.Achievements 1"]

In Mudlet: sendGMCP([[Core.Supports.Add ["Char.Quests 1", "Char.Achievements 1"] ]]). Core.Supports.Remove ["Char.Quests"] stops them again.

You are then sent Char.Quests.List with every quest you have started, and again each time you enter the game:

{"quests": [
  {"id": 1, "title": "First Steps", "status": "completed",
   "completed": "2026-10-17T12:00:00Z"},
  {"id": 2, "title": "Finding Your Way", "status": "active",
   "objective": "Type GUIDE to ask the way to the bank.",
   "goals": [{"text": "Use the guide command", "done": 0, "needed": 1}]}
]}

After that, Char.Quests.Update sends one quest, in the same form, whenever it changes: when it starts, when a goal counts, when a step is done and when it is completed. A quest you no longer have is sent as {"id": 2, "status": "removed"}. Keep the list by id and replace entries as updates arrive.

Char.Achievements.List and Char.Achievements.Update work the same way, with the list under achievements. They cover every achievement you can earn: active ones carry their goals, and earned ones are completed.

The web client shows both in its side panel.