diff --git a/tools/makeent.py b/tools/makeent.py
new file mode 100644
index 00000000..84489234
--- /dev/null
+++ b/tools/makeent.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+import html
+import xml.etree.ElementTree as etree
+
+from xeplib import load_xepinfos
+
+
+def main():
+ import argparse
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "-l", "--xeplist",
+ type=argparse.FileType("r"),
+ default=None,
+ )
+ parser.add_argument(
+ "xeps",
+ metavar="NUM",
+ type=int,
+ nargs="+",
+ )
+
+ args = parser.parse_args()
+
+ if args.xeplist is None:
+ args.xeplist = open("build/xeplist.xml", "r")
+
+ with args.xeplist as f:
+ tree = etree.parse(f)
+
+ accepted, _ = load_xepinfos(tree)
+
+ for num in args.xeps:
+ info = accepted[num]
+ print(
+ """"""
+ """{title} (XEP-{number:04d}) """
+ """XEP-{number:04d}: {title} <"""
+ """{url}>." >""".format(
+ title=html.escape(info["title"]),
+ number=num,
+ url="https://xmpp.org/extensions/xep-{:04d}.html".format(
+ num,
+ )
+ )
+ )
+
+if __name__ == "__main__":
+ main()