diff --git a/obj/tools/mudlink.c b/obj/tools/mudlink.c
new file mode 100644
index 0000000..209d546
--- /dev/null
+++ b/obj/tools/mudlink.c
@@ -0,0 +1,84 @@
+/*
+ * mudlink tool, offers several commands as an interface to the
+ * MUDLINK system.
+ *
+ * Commands offered:
+ * rpeers
+ * rwho <remotemud>
+ * rtell <player>@<remotemud>
+ *
+ * Deepthought, 19-Jan-93
+ */
+
+#include <config.h>
+#include <properties.h>
+
+inherit "/std/thing";
+
+create() {
+  string name, foo;
+
+  if (sizeof(old_explode(object_name(this_object()),"#")) != 2) return;
+
+  thing::create();
+  SetProp (P_SHORT,"a MUDLINK tool");
+  SetProp (P_LONG,
+ "This tool is used for communicating with MUDLINK. Commands are:\n"
++"rpeers                          Get a list of muds connected to MUDLINK\n"
++"rwho <mud>                      Show a list of players on the remote mud\n"
++"rtell <player>@<mud> <message>  Tell something to a player on another mud\n"
+          );
+  AddId ("tool");
+  AddId ("mudlink");
+  AddAdjective("mudlink");
+  SetInfo ("Mudlink Tool V0.1 by Deepthought");
+}
+
+_query_read_msg() { return 0; }
+
+/*-------------------------------------------------------------------------
+** Add and decode our commands.
+*/
+
+init() {
+  thing::init();
+  add_action("rpeers","rpeers");
+  add_action("rwho","rwho");
+  add_action("rtell","rtell");
+}
+
+rpeers() {
+  string u;
+  u = geteuid(this_player());
+  if (stringp(u))
+    tell_object(find_player("mudlink"),"rpeers "+u+"\n");
+  return 1;
+}
+
+rwho(str) {
+  string u;
+  if (!str || str == "") {
+    write("Usage: rwho <mud>\n");
+    return 1;
+  }
+  if (stringp(u = geteuid(this_player())))
+    tell_object(find_player("mudlink"),"rwho "+u+"="+str+"\n");
+  return 1;
+}
+
+rtell(str) {
+  string u;
+  string a, b, c, d;
+
+  if (!str || str == "") {
+    write("Usage: rtell <player>@<mud> <message>\n");
+    return 1;
+  }
+  if (sscanf(str, "%s@%s %s", a, b, c) != 3) {
+    write("Usage: rtell <player>@<mud> <message>\n");
+    return 1;
+  }
+  if (stringp(u = geteuid(this_player())))
+    tell_object(find_player("mudlink"),"rpage "+u+"@"+a+"@"+b+"="+c+"\n");
+  return 1;
+}
