diff --git a/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php b/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
--- a/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
+++ b/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
@@ -49,8 +49,8 @@
         'done/' => 'LegalpadDocumentDoneController',
         'verify/(?P<code>[^/]+)/' =>
           'LegalpadDocumentSignatureVerificationController',
-        'signatures/(?P<id>\d+)/(?:query/(?P<queryKey>[^/]+)/)?'
-          => 'LegalpadDocumentSignatureListController',
+        'signatures/(?:(?P<id>\d+)/)?(?:query/(?P<queryKey>[^/]+)/)?' =>
+          'LegalpadDocumentSignatureListController',
         'document/' => array(
           'preview/' => 'PhabricatorMarkupPreviewController'),
       ));
diff --git a/src/applications/legalpad/controller/LegalpadController.php b/src/applications/legalpad/controller/LegalpadController.php
--- a/src/applications/legalpad/controller/LegalpadController.php
+++ b/src/applications/legalpad/controller/LegalpadController.php
@@ -19,6 +19,9 @@
       ->setViewer($user)
       ->addNavigationItems($nav->getMenu());
 
+    $nav->addLabel(pht('Signatures'));
+    $nav->addFilter('signatures/', pht('Find Signatures'));
+
     return $nav;
   }
 
diff --git a/src/applications/legalpad/controller/LegalpadDocumentSignatureListController.php b/src/applications/legalpad/controller/LegalpadDocumentSignatureListController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentSignatureListController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentSignatureListController.php
@@ -7,7 +7,7 @@
   private $document;
 
   public function willProcessRequest(array $data) {
-    $this->documentID = $data['id'];
+    $this->documentID = idx($data, 'id');
     $this->queryKey = idx($data, 'queryKey');
   }
 
@@ -15,23 +15,28 @@
     $request = $this->getRequest();
     $user = $request->getUser();
 
-    $document = id(new LegalpadDocumentQuery())
-      ->setViewer($user)
-      ->withIDs(array($this->documentID))
-      ->requireCapabilities(
-        array(
-          PhabricatorPolicyCapability::CAN_VIEW,
-          PhabricatorPolicyCapability::CAN_EDIT,
-        ))
-      ->executeOne();
-    if (!$document) {
-      return new Aphront404Response();
+    if ($this->documentID) {
+      $document = id(new LegalpadDocumentQuery())
+        ->setViewer($user)
+        ->withIDs(array($this->documentID))
+        ->requireCapabilities(
+          array(
+            PhabricatorPolicyCapability::CAN_VIEW,
+            PhabricatorPolicyCapability::CAN_EDIT,
+          ))
+        ->executeOne();
+      if (!$document) {
+        return new Aphront404Response();
+      }
+
+      $this->document = $document;
     }
 
-    $this->document = $document;
+    $engine = id(new LegalpadDocumentSignatureSearchEngine());
 
-    $engine = id(new LegalpadDocumentSignatureSearchEngine())
-      ->setDocument($document);
+    if ($this->document) {
+      $engine->setDocument($this->document);
+    }
 
     $controller = id(new PhabricatorApplicationSearchController($request))
       ->setQueryKey($this->queryKey)
@@ -47,10 +52,14 @@
     $nav = new AphrontSideNavFilterView();
     $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
 
-    id(new LegalpadDocumentSignatureSearchEngine())
-      ->setViewer($user)
-      ->setDocument($this->document)
-      ->addNavigationItems($nav->getMenu());
+    $engine = id(new LegalpadDocumentSignatureSearchEngine())
+      ->setViewer($user);
+
+    if ($this->document) {
+      $engine->setDocument($this->document);
+    }
+
+    $engine->addNavigationItems($nav->getMenu());
 
     return $nav;
   }
@@ -58,9 +67,15 @@
   public function buildApplicationCrumbs() {
     $crumbs = parent::buildApplicationCrumbs();
 
-    $crumbs->addTextCrumb(
-      $this->document->getMonogram(),
-      '/'.$this->document->getMonogram());
+    if ($this->document) {
+      $crumbs->addTextCrumb(
+        $this->document->getMonogram(),
+        '/'.$this->document->getMonogram());
+    } else {
+      $crumbs->addTextCrumb(
+        pht('Signatures'),
+        '/legalpad/signatures/');
+    }
 
     return $crumbs;
   }
diff --git a/src/applications/legalpad/phid/PhabricatorLegalpadPHIDTypeDocument.php b/src/applications/legalpad/phid/PhabricatorLegalpadPHIDTypeDocument.php
--- a/src/applications/legalpad/phid/PhabricatorLegalpadPHIDTypeDocument.php
+++ b/src/applications/legalpad/phid/PhabricatorLegalpadPHIDTypeDocument.php
@@ -37,8 +37,8 @@
       $document = $objects[$phid];
       $name = $document->getDocumentBody()->getTitle();
       $handle->setName($name);
-      $handle->setFullName($name);
-      $handle->setURI('/legalpad/view/'.$document->getID().'/');
+      $handle->setFullName($document->getMonogram().' '.$name);
+      $handle->setURI('/'.$document->getMonogram());
     }
   }
 
diff --git a/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php b/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php
--- a/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php
+++ b/src/applications/legalpad/query/LegalpadDocumentSignatureSearchEngine.php
@@ -25,6 +25,15 @@
       'signerPHIDs',
       $this->readUsersFromRequest($request, 'signers'));
 
+    $saved->setParameter(
+      'documentPHIDs',
+      $this->readPHIDsFromRequest(
+        $request,
+        'documents',
+        array(
+          PhabricatorLegalpadPHIDTypeDocument::TYPECONST,
+        )));
+
     return $saved;
   }
 
@@ -38,6 +47,11 @@
 
     if ($this->document) {
       $query->withDocumentPHIDs(array($this->document->getPHID()));
+    } else {
+      $document_phids = $saved->getParameter('documentPHIDs', array());
+      if ($document_phids) {
+        $query->withDocumentPHIDs($document_phids);
+      }
     }
 
     return $query;
@@ -47,14 +61,25 @@
     AphrontFormView $form,
     PhabricatorSavedQuery $saved_query) {
 
+    $document_phids = $saved_query->getParameter('documentPHIDs', array());
     $signer_phids = $saved_query->getParameter('signerPHIDs', array());
 
-    $phids = array_merge($signer_phids);
+    $phids = array_merge($document_phids, $signer_phids);
     $handles = id(new PhabricatorHandleQuery())
       ->setViewer($this->requireViewer())
       ->withPHIDs($phids)
       ->execute();
 
+    if (!$this->document) {
+      $form
+        ->appendChild(
+          id(new AphrontFormTokenizerControl())
+            ->setDatasource('/typeahead/common/legalpaddocuments/')
+            ->setName('documents')
+            ->setLabel(pht('Documents'))
+            ->setValue(array_select_keys($handles, $document_phids)));
+    }
+
     $form
       ->appendChild(
         id(new AphrontFormTokenizerControl())
@@ -68,10 +93,7 @@
     if ($this->document) {
       return '/legalpad/signatures/'.$this->document->getID().'/'.$path;
     } else {
-      throw new Exception(
-        pht(
-          'Searching for signatures outside of a document context is not '.
-          'currently supported.'));
+      return '/legalpad/signatures/'.$path;
     }
   }
 
@@ -97,9 +119,12 @@
   }
 
   protected function getRequiredHandlePHIDsForResultList(
-    array $documents,
+    array $signatures,
     PhabricatorSavedQuery $query) {
-    return mpull($documents, 'getSignerPHID');
+
+    return array_merge(
+      mpull($signatures, 'getSignerPHID'),
+      mpull($signatures, 'getDocumentPHID'));
   }
 
   protected function renderResultList(
@@ -150,6 +175,7 @@
 
       $rows[] = array(
         $sig_icon,
+        $handles[$document->getPHID()]->renderLink(),
         $handles[$signature->getSignerPHID()]->renderLink(),
         $name,
         phutil_tag(
@@ -166,16 +192,26 @@
       ->setHeaders(
         array(
           '',
+          pht('Document'),
           pht('Account'),
           pht('Name'),
           pht('Email'),
           pht('Signed'),
         ))
+      ->setColumnVisibility(
+        array(
+          true,
+
+          // Only show the "Document" column if we aren't scoped to a
+          // particular document.
+          !$this->document,
+        ))
       ->setColumnClasses(
         array(
           '',
           '',
           '',
+          '',
           'wide',
           'right',
         ));
@@ -184,6 +220,18 @@
       ->setHeaderText(pht('Signatures'))
       ->appendChild($table);
 
+    if (!$this->document) {
+      $policy_notice = id(new AphrontErrorView())
+        ->setSeverity(AphrontErrorView::SEVERITY_NOTICE)
+        ->setErrors(
+          array(
+            pht(
+              'NOTE: You can only see your own signatures and signatures on '.
+              'documents you have permission to edit.'),
+          ));
+      $box->setErrorView($policy_notice);
+    }
+
     return $box;
   }