diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for futhark-server
 
+## 1.2.1.0 -- 2022-07-01
+
+* Added `cmdFields`, `cmdNew`, `cmdProject`, `cmdTypes`, and `cmdEntryPoints`.
+
 ## 1.2.0.0 -- 2022-05-14
 
 * `ServerCfg` no longer has any type class instances.
diff --git a/futhark-server.cabal b/futhark-server.cabal
--- a/futhark-server.cabal
+++ b/futhark-server.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               futhark-server
-version:            1.2.0.0
+version:            1.2.1.0
 synopsis: Client implementation of the Futhark server protocol.
 
 description: Provides an easy way to interact with a running Futhark
diff --git a/src/Futhark/Server.hs b/src/Futhark/Server.hs
--- a/src/Futhark/Server.hs
+++ b/src/Futhark/Server.hs
@@ -31,6 +31,8 @@
     EntryName,
     InputType (..),
     OutputType (..),
+
+    -- ** Main commands
     cmdRestore,
     cmdStore,
     cmdCall,
@@ -39,6 +41,17 @@
     cmdInputs,
     cmdOutputs,
     cmdClear,
+
+    -- ** Interrogation
+    cmdTypes,
+    cmdEntryPoints,
+
+    -- ** Records
+    cmdNew,
+    cmdProject,
+    cmdFields,
+
+    -- ** Auxiliary
     cmdReport,
     cmdPauseProfiling,
     cmdUnpauseProfiling,
@@ -150,7 +163,9 @@
       stderr_s <- readFile $ serverErrLog s
       removeFile $ serverErrLog s
       error $
-        "Command failed with " ++ show code ++ ":\n"
+        "Command failed with "
+          ++ show code
+          ++ ":\n"
           ++ unwords (prog : options)
           ++ "\nStderr:\n"
           ++ stderr_s
@@ -191,7 +206,8 @@
 responseLines cmd s = do
   l <- T.hGetLine $ serverStdout s
   when (serverDebug s) $
-    T.hPutStrLn stderr $ "<<< " <> l
+    T.hPutStrLn stderr $
+      "<<< " <> l
   case l of
     "%%% OK" -> pure []
     _ -> do
@@ -230,7 +246,8 @@
   let cmd_and_args' = T.unwords $ map quoteWord $ cmd : args
 
   when (serverDebug s) $
-    T.hPutStrLn stderr $ ">>> " <> cmd_and_args'
+    T.hPutStrLn stderr $
+      ">>> " <> cmd_and_args'
 
   T.hPutStrLn (serverStdin s) cmd_and_args'
   hFlush $ serverStdin s
@@ -246,7 +263,9 @@
               _ -> mempty
       stderr_s <- readFile $ serverErrLog s
       error $
-        "After sending command " ++ show cmd ++ " to server process:"
+        "After sending command "
+          ++ show cmd
+          ++ " to server process:"
           ++ show e
           ++ code_msg
           ++ "\nServer stderr:\n"
@@ -341,6 +360,26 @@
 -- | @set_tuning_param param value@
 cmdSetTuningParam :: Server -> Text -> Text -> IO (Either CmdFailure [Text])
 cmdSetTuningParam s param value = sendCommand s "set_tuning_param" [param, value]
+
+-- | @types@
+cmdTypes :: Server -> IO (Either CmdFailure [Text])
+cmdTypes s = sendCommand s "types" []
+
+-- | @entry_points@
+cmdEntryPoints :: Server -> IO (Maybe CmdFailure)
+cmdEntryPoints s = helpCmd s "entry_points" []
+
+-- | @fields type@
+cmdFields :: Server -> Text -> IO (Either CmdFailure [Text])
+cmdFields s t = sendCommand s "fields" [t]
+
+-- | @new var0 type var1...@
+cmdNew :: Server -> Text -> Text -> [Text] -> IO (Maybe CmdFailure)
+cmdNew s var0 t vars = helpCmd s "new" $ var0 : t : vars
+
+-- | @project to from field@
+cmdProject :: Server -> Text -> Text -> Text -> IO (Maybe CmdFailure)
+cmdProject s to from field = helpCmd s "project" [to, from, field]
 
 -- | Turn a 'Maybe'-producing command into a monadic action.
 cmdMaybe :: (MonadError Text m, MonadIO m) => IO (Maybe CmdFailure) -> m ()
