mu*index
reading
plain text
theme

protocol

TTYPE and MTTS

How a client tells a server what it is and what it can do — including, if the client chooses to say so, that a screen reader is in use.

https://www.mudhalla.net/tintin/protocols/mtts/

Measured adoption

0 of 886 listed games — 0.0%

The games not counted here are not games without the protocol. A game is counted when we observed its server offering the option in a handshake; the rest are servers that did not offer it to us and servers whose handshake we have not read, and we cannot tell you which.

Games observed offering TTYPE and MTTS in a handshake, by the codebase we identified them as running.
codebase offered it identified
AresMUSH 0 18
CircleMUD 0 47
CobraMUSH 0 2
CoffeeMUD 0 32
DikuMUD 0 35
Evennia 0 11
FluffOS 0 28
MUCK 0 24
PennMUSH 0 34
RhostMUSH 0 40
ROM 0 55
SMAUG 0 20
tbaMUD 0 5
TinyMUSH 0 9

TTYPE is telnet option 24, from RFC 1091: the server asks the client what terminal it is, and the client answers. Historically the answer was VT100 or ANSI.

MTTS — the Mud Terminal Type Standard — layers a convention on top. A client answers three times: its name, its terminal type, and then MTTS <bitmask>, where the bits declare capabilities. 256 colours, true colour, UTF-8, MNES, MSP over out-of-band — and, notably, MTTS_SCREEN_READER.

The screen-reader bit

That last one is worth pausing on, because it is the only place in this hobby's protocol stack where accessibility is a first-class concept.

A client that sets it is telling the server that a screen reader is in use, and a server that notices can adapt: suppress ASCII art, drop the decorative box-drawing around a room description, change how a table is laid out. Both TinTin++ and Blightmud advertise it, and Mudlet has a setting for it.

Whether any given game acts on it is a different question, and not one this site can measure — we cannot ask a server what it would do differently.

What a crawler owes here

A crawler identifies itself through TTYPE, and it should. Ours does, with an information URL, so an administrator reading their logs can find out who has been connecting to their game and how to ask us to stop. A crawler that answers ANSI and nothing else is anonymous by design, and there is no good reason for that.

What we measure

Servers that negotiated TTYPE with us. Note that this is one of the few options where we are the side being asked, so a figure here is a count of servers that cared to ask.

See also

  • CHARSET RFC 2066's telnet option for agreeing an encoding. The reason a game's accented names survive the trip, and the source of some subtle failures when it is absent.
  • TinTin++ A terminal client with its own scripting language, on every platform including phones, and a documented screen-reader mode.
  • Blightmud A modern terminal client in Rust, with Lua scripting, built-in text-to-speech and a screen-reader mode that announces itself to the server.