diff --git a/README.org b/README.org
index cf50767..2cd5599 100644
--- a/README.org
+++ b/README.org
@@ -249,6 +249,7 @@ The rationale behind using ~list-buffers~ is the same as with dired. They both d
 Seems to be one of the most reliable tools in the basket... mostly because
 #+begin_src elisp
 (defun gptel-org-tool--list-buffers (&optional arg)
+  "Return list of buffers."
   (list-buffers-noselect)
   (with-current-buffer "*Buffer List*"
 		    (let ((content (buffer-string)))
@@ -277,6 +278,7 @@ Be sure to customize the function to point to your org directory, if you wish. I
 
 #+begin_src elisp
 (defun gptel-org-tools--dir (dir)
+  "Return directory listing."
   (with-temp-buffer
     (dired (or dir "~"))
     (let ((content (buffer-string)))
@@ -299,6 +301,7 @@ Be sure to customize the function to point to your org directory, if you wish. I
 Disabled for now, as it's causing some issues.
 #+begin_src elisp :tangle no :results none
 (defun gptel-org-tools--find-buffer-visiting (filename)
+  "Return the buffer visiting file FILENAME."
   (concat
    (bufferp
     (find-buffer-visiting
@@ -319,6 +322,7 @@ Disabled for now, as it's causing some issues.
 Continuation from above. Open a file into a buffer for processing, once it's found by dired-list.
 #+begin_src elisp
 (defun gptel-org-tools--open-file-inactive (file)
+  "Open FILE in a buffer."
   (with-current-buffer (get-buffer-create file)
 			    (insert-file-contents file)
 			    (concat
@@ -338,6 +342,7 @@ Continuation from above. Open a file into a buffer for processing, once it's fou
 This reads file contents,
 #+begin_src elisp :tangle no
 (defun gptel-org-tools--read-file-contents (file)
+  "Return contents of FILE."
   (with-temp-buffer
                             (insert-file-contents (expand-file-name filename))
                             (concat
@@ -358,6 +363,7 @@ This reads file contents,
 **** describe-variable
 #+begin_src elisp
 (defun gptel-org-tools--describe-variable (var)
+  "Return documentation for VAR."
   (let ((symbol (intern var)))
                             (if (boundp symbol)
 				(prin1-to-string (symbol-value symbol))
@@ -377,6 +383,7 @@ This reads file contents,
 **** describe-function
 #+begin_src elisp
 (defun gptel-org-tools--describe-function (fun)
+  "Return documentation for FUN."
   (let ((symbol (intern fun)))
                             (if (fboundp symbol)
 				(prin1-to-string (documentation symbol 'function))
@@ -425,6 +432,7 @@ Pretty simple, does what it says on the tin. It gets all the tags from the =buff
 This is not, by any means, sufficient, but I do tag people and specific events frequently enough that it helps save on the context window.
 #+begin_src elisp
 (defun gptel-org-tools--org-extract-tags (buffer)
+  "Return all tags from BUFFER."
   (with-current-buffer buffer
     (let ((tags '()))
       (org-map-entries
@@ -454,6 +462,7 @@ Then we need to pull /some/ information from the buffer, without dragging the en
 Therefore, headings. A reasonable amount of information, and still keeping the signal-to-noise ratio pretty decent.
 #+begin_src elisp
 (defun gptel-org-tools--org-extract-headings (buffer)
+  "Return all headings from BUFFER."
   (if (member buffer gptel-org-tools-skip-heading-extraction)
       (user-error "Buffer %s has too many headings, use org-extract-tags or org-ql-select-rifle." buffer)
     (with-current-buffer buffer
@@ -489,6 +498,9 @@ Currently *not* tangled, as I'm testing breaking out each type of query into its
 
 #+begin_src elisp :tangle no
 (defun gptel-org-tools--org-ql-select (buf query)
+  "Return entries matching QUERY from BUFFER.
+
+QUERY can be any valid org-ql-select query."
   (org-ql-select
     (get-buffer buf)
     (if (stringp query)
@@ -566,6 +578,11 @@ DATE is the date or date range to match."
 Original (works but not ideal).
 #+begin_src elisp :tangle no
 (defun gptel-org-tools--org-ql-select-by-date (buf date)
+  "Return headings from BUFFER matching DATE.
+
+DATE must be in the form of YYYY, YYYY-MM, or YYYY-MM-DD."
+
+
   (org-ql-select
     (get-buffer buf)
     `(heading ,date)
@@ -591,6 +608,7 @@ This is still work in progress, the idea is to have the LLM check my calendar an
 It works, in principle, but I haven't been able to find a use for it yet. The real challenge is in building a context where the tools integrate with each-other in a way that makes sense. For now, this exists.
 #+begin_src elisp
 (defun gptel-org-tools--org-agenda-seek (days)
+  "Return the results of org-agenda-list spanning now to DAYS."
   (with-temp-buffer
     (org-agenda-list (or days 14))
     (let ((content (buffer-string)))
@@ -616,6 +634,7 @@ The following tools are still very much WIP, and I think they're self-explanator
 Retrieve the headings where the heading matches query..
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-headings (buf query)
+  "Return headings matching QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(heading ,query)
@@ -640,6 +659,7 @@ Retrieve the headings where the heading matches query..
 Retrieve all the headings where either heading or content matches query.
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-headings-rifle (buf query)
+  "Return headings of entries (body included) that match keyword QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(rifle ,query)
@@ -664,6 +684,7 @@ Retrieve all the headings where either heading or content matches query.
 This pulls all the headings (and their contents) when they match tags (without inheritance.)
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-tags-local (buf query)
+  "Return entries whose tags match QUERY in BUFFER, without inheritance."
   (org-ql-select
     (get-buffer buf)
     `(tags-local ,query)
@@ -688,6 +709,7 @@ This pulls all the headings (and their contents) when they match tags (without i
 This pulls all the local tags (without inheritance) from buffer, and returns the number of these tagged headings.
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-tags-local-count (buf query)
+  "Return count of entries tagged QUERY in BUFFER."
   (length (org-ql-select
 	    (get-buffer buf)
 	    `(tags-local ,query)
@@ -712,6 +734,7 @@ This pulls all the local tags (without inheritance) from buffer, and returns the
 This pulls all the headings (and their contents) when they match tags (with inheritance; if a parent entry has the tag, descendant entries do, too.)
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-tags (buf query)
+      "Return every entry tagged QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(tags ,query)
@@ -735,6 +758,7 @@ This pulls all the headings (and their contents) when they match tags (with inhe
 And, the "grab everything that matches" tool.
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-rifle (buf query)
+    "Return every entry matching keyword QUERY from BUFFER."
   (let ((buffer (get-buffer buf)))
     (if buffer
         (org-ql-select
@@ -761,6 +785,8 @@ And, the "grab everything that matches" tool.
 This pulls all the headings (and their contents) when they match tags (without inheritance.)
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-all-tags-local (query)
+    "Return entries whose tags match QUERY in org-agenda-files.
+  QUERY is the tag to search for."
   (org-ql-select
     (org-agenda-files)
     `(tags-local ,query)
@@ -782,6 +808,9 @@ This pulls all the headings (and their contents) when they match tags (without i
 This pulls all the headings (and their contents) when they match tags (with inheritance; if a parent entry has the tag, descendant entries do, too.)
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-all-tags (query)
+    "Return entries whose tags match QUERY,
+with inheritance, in org-agenda-files.
+  QUERY is the tag to search for."
   (org-ql-select
     (org-agenda-files)
     `(tags ,query)
@@ -811,6 +840,8 @@ This means that /every org-mode file I have/ is part of this search.
 
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-all-rifle (query)
+  "Return entries containing QUERY from org-agenda-files.
+  QUERY is the keyword to search for."
   (org-ql-select
     (org-agenda-files)
     `(rifle ,query)
@@ -831,11 +862,12 @@ This means that /every org-mode file I have/ is part of this search.
 ***** org-ql-select-all-regexp
 #+begin_src elisp
 (defun gptel-org-tools--org-ql-select-all-regexp (query)
-  (let ((bound-query (format "\\b%s\\b" (regexp-quote query))))
+  "Return all entries matching regexp QUERY in org-agenda-files.
+  QUERY is a regular expression."
     (org-ql-select
       (org-agenda-files)
-      `(regexp ,bound-query)
-      :action #'gptel-org-tools--heading-body)))
+      `(regexp ,query)
+      :action #'gptel-org-tools--heading-body))
 
 (add-to-list 'gptel-org-tools
 	     (gptel-make-tool
@@ -848,7 +880,6 @@ This means that /every org-mode file I have/ is part of this search.
 	      :category "org-ql"))
 #+end_src
 
-
 ** End
 #+begin_src elisp
 (provide 'gptel-org-tools)
diff --git a/gptel-org-tools.el b/gptel-org-tools.el
index 6927152..dbb1f73 100644
--- a/gptel-org-tools.el
+++ b/gptel-org-tools.el
@@ -62,6 +62,7 @@
    "---\n"))
 
 (defun gptel-org-tool--list-buffers (&optional arg)
+  "Return list of buffers."
   (list-buffers-noselect)
   (with-current-buffer "*Buffer List*"
 		    (let ((content (buffer-string)))
@@ -79,6 +80,7 @@
 	      :category "emacs"))
 
 (defun gptel-org-tools--dir (dir)
+  "Return directory listing."
   (with-temp-buffer
     (dired (or dir "~"))
     (let ((content (buffer-string)))
@@ -97,6 +99,7 @@
 	      :category "filesystem"))
 
 (defun gptel-org-tools--open-file-inactive (file)
+  "Open FILE in a buffer."
   (with-current-buffer (get-buffer-create file)
 			    (insert-file-contents file)
 			    (concat
@@ -112,6 +115,7 @@
 	      :category "filesystem"))
 
 (defun gptel-org-tools--describe-variable (var)
+  "Return documentation for VAR."
   (let ((symbol (intern var)))
                             (if (boundp symbol)
 				(prin1-to-string (symbol-value symbol))
@@ -128,6 +132,7 @@
               :category "emacs"))
 
 (defun gptel-org-tools--describe-function (fun)
+  "Return documentation for FUN."
   (let ((symbol (intern fun)))
                             (if (fboundp symbol)
 				(prin1-to-string (documentation symbol 'function))
@@ -145,6 +150,7 @@
               :category "emacs"))
 
 (defun gptel-org-tools--org-extract-tags (buffer)
+  "Return all tags from BUFFER."
   (with-current-buffer buffer
     (let ((tags '()))
       (org-map-entries
@@ -167,6 +173,7 @@
 	      :category "org-mode"))
 
 (defun gptel-org-tools--org-extract-headings (buffer)
+  "Return all headings from BUFFER."
   (if (member buffer gptel-org-tools-skip-heading-extraction)
       (user-error "Buffer %s has too many headings, use org-extract-tags or org-ql-select-rifle." buffer)
     (with-current-buffer buffer
@@ -216,6 +223,7 @@ DATE is the date or date range to match."
               :category "org"))
 
 (defun gptel-org-tools--org-agenda-seek (days)
+  "Return the results of org-agenda-list spanning now to DAYS."
   (with-temp-buffer
     (org-agenda-list (or days 14))
     (let ((content (buffer-string)))
@@ -233,6 +241,7 @@ DATE is the date or date range to match."
 	      :category "org"))
 
 (defun gptel-org-tools--org-ql-select-headings (buf query)
+  "Return headings matching QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(heading ,query)
@@ -253,6 +262,7 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-headings-rifle (buf query)
+  "Return headings of entries (body included) that match keyword QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(rifle ,query)
@@ -273,6 +283,7 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-tags-local (buf query)
+  "Return entries whose tags match QUERY in BUFFER, without inheritance."
   (org-ql-select
     (get-buffer buf)
     `(tags-local ,query)
@@ -293,6 +304,7 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-tags-local-count (buf query)
+  "Return count of entries tagged QUERY in BUFFER."
   (length (org-ql-select
 	    (get-buffer buf)
 	    `(tags-local ,query)
@@ -313,6 +325,7 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-tags (buf query)
+      "Return every entry tagged QUERY from BUFFER."
   (org-ql-select
     (get-buffer buf)
     `(tags ,query)
@@ -332,6 +345,7 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-rifle (buf query)
+    "Return every entry matching keyword QUERY from BUFFER."
   (let ((buffer (get-buffer buf)))
     (if buffer
         (org-ql-select
@@ -354,6 +368,8 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-all-tags-local (query)
+    "Return entries whose tags match QUERY in org-agenda-files.
+  QUERY is the tag to search for."
   (org-ql-select
     (org-agenda-files)
     `(tags-local ,query)
@@ -371,6 +387,9 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-all-tags (query)
+    "Return entries whose tags match QUERY,
+with inheritance, in org-agenda-files.
+  QUERY is the tag to search for."
   (org-ql-select
     (org-agenda-files)
     `(tags ,query)
@@ -387,6 +406,8 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-all-rifle (query)
+  "Return entries containing QUERY from org-agenda-files.
+  QUERY is the keyword to search for."
   (org-ql-select
     (org-agenda-files)
     `(rifle ,query)
@@ -403,11 +424,12 @@ DATE is the date or date range to match."
 	      :category "org-ql"))
 
 (defun gptel-org-tools--org-ql-select-all-regexp (query)
-  (let ((bound-query (format "\\b%s\\b" (regexp-quote query))))
+  "Return all entries matching regexp QUERY in org-agenda-files.
+  QUERY is a regular expression."
     (org-ql-select
       (org-agenda-files)
-      `(regexp ,bound-query)
-      :action #'gptel-org-tools--heading-body)))
+      `(regexp ,query)
+      :action #'gptel-org-tools--heading-body))
 
 (add-to-list 'gptel-org-tools
 	     (gptel-make-tool