Skip to main content

Documentation Index

Fetch the complete documentation index at: https://vaquill.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

A Manifest V3 Chrome extension that puts Vaquill’s legal research in any browser tab. The popup calls api.vaquill.ai directly using the user’s own API key - no proxy server, no backend to run, no infrastructure to maintain. Works in any Chromium-based browser (Chrome, Edge, Brave, Arc, Opera). Source: github.com/Vaquill-AI/integrations/chrome-extension.

What you get

  • Manifest V3, service-worker based
  • Direct calls to api.vaquill.ai - no middleware
  • BYOK (bring your own key): each user configures their own API key in the Options page
  • Structured legal source cards: case name, citation, court, year, excerpt, relevance score, PDF link
  • Conversation context preserved across messages within the popup session
  • standard and deep RAG modes selectable in Options
  • Vanilla JavaScript, no build step - edit and reload

Prerequisites

Quickstart

1

Clone the repo

git clone https://github.com/Vaquill-AI/integrations.git
cd integrations/chrome-extension
2

Load the extension

  1. Open chrome://extensions/
  2. Toggle Developer mode on (top right)
  3. Click Load unpacked
  4. Select the extension/ folder
3

Configure your API key

  1. Right-click the Vaquill icon in the toolbar and choose Options (or click the gear icon inside the popup)
  2. Paste your API key (vq_key_...)
  3. Choose defaults: Mode (standard or deep) and Jurisdiction
  4. Click Save
4

Test

Click the extension icon and try a question like “What is qualified immunity under 42 USC 1983?” or “What does FRCP Rule 12(b)(6) require?” Expand a source card to see citation, court, excerpt, and the PDF link.

Configuration

Extension defaults

Edit extension/js/config.js:
SettingDescription
API_URLVaquill API base URL (default: https://api.vaquill.ai)
DEFAULT_MODEDefault RAG mode: standard or deep
MAX_SOURCESMaximum number of sources returned per query
SUGGESTED_QUESTIONSArray of starter questions shown on the welcome screen

Per-user settings (stored in chrome.storage.local)

SettingDescription
API KeyThe user’s Vaquill API key, entered via the Options page
Modestandard or deep
JurisdictionPreferred jurisdiction for search context
API keys live in chrome.storage.local on the user’s device. The extension never transmits them anywhere except to api.vaquill.ai.

API contract

The extension calls a single endpoint:
POST https://api.vaquill.ai/api/v1/ask
Authorization: Bearer vq_key_...
Content-Type: application/json
Request body:
{
  "question": "What is qualified immunity under 42 USC 1983?",
  "mode": "standard",
  "sources": true,
  "maxSources": 5,
  "chatHistory": [
    { "role": "user", "content": "previous question" },
    { "role": "assistant", "content": "previous answer" }
  ]
}
Full schema in the Ask API reference.

Project layout

extension/
  manifest.json          Chrome extension manifest (v3)
  popup.html             Main chat popup
  options.html           Settings page (API key, mode, jurisdiction)
  css/popup.css          All styles (CSS custom properties for theming)
  icons/                 16, 48, 128 px icons
  js/
    config.js            API URL, defaults, suggested questions
    session.js           Storage manager (API key, chat history)
    background.js        Service worker - calls POST /api/v1/ask
    popup.js             Chat UI logic, source rendering
    markdown.js          Lightweight markdown-to-HTML renderer
    options.js           Settings page logic

Branding and theming

Name and description

Edit extension/manifest.json:
{
  "name": "Vaquill Legal Assistant",
  "description": "AI-powered legal research assistant with case citations and source documents",
  "version": "1.0.0"
}

Icons

Place PNGs in extension/icons/:
  • icon16.png (16x16) - toolbar
  • icon48.png (48x48) - extensions page
  • icon128.png (128x128) - Chrome Web Store listing

Colors

Edit CSS custom properties at the top of extension/css/popup.css:
:root {
  --primary-color: #8b5cf6;
  --primary-hover: #7c3aed;
  /* ... */
}

Host permissions

host_permissions in manifest.json must match the API domain the extension calls. Default (Vaquill production API):
"host_permissions": [
  "https://api.vaquill.ai/*"
]
Custom API domain:
"host_permissions": [
  "https://api.yourdomain.com/*"
]
Multiple domains (dev + production):
"host_permissions": [
  "http://localhost:8000/*",
  "https://api.vaquill.ai/*"
]
Always use specific domains rather than wildcards (https://*/*). The Chrome Web Store reviews extensions with broad host permissions more aggressively and may reject them.

Publishing to the Chrome Web Store

Prerequisites

  1. A Google Developer account ($5 USD one-time fee)
  2. Register at chrome.google.com/webstore/devconsole

Preparation checklist

  • Set the production API_URL in config.js
  • Update manifest.json with name, description, version, and host_permissions
  • Add extension icons (16, 48, 128 px)
  • Prepare at least one screenshot (1280x800 px)
  • Prepare a privacy policy URL (required by Google)

Package the extension

cd extension/
zip -r vaquill-extension.zip . -x "*.DS_Store" "*.git*"

Upload

1

Open the dashboard

2

Create a new item

Click New Item and upload vaquill-extension.zip.
3

Fill out the listing

  • Name: Vaquill Legal Assistant
  • Summary: AI legal research assistant with case citations (132 chars max)
  • Description: Full feature description
  • Category: Productivity
  • Language: English
  • Screenshots: At least 1 (1280x800 px)
  • Privacy Policy: URL to your privacy policy
  • Permissions Justification: Explain why storage and activeTab are needed
4

Submit for review

Typical review time: 1-3 business days.

Development

The extension uses vanilla JavaScript with no build step. Edit files directly, then reload the extension at chrome://extensions/ (click the refresh icon on the extension card).

Troubleshooting

“Failed to fetch” errors
  • host_permissions in manifest.json does not match the API URL in config.js. Make both point to the same domain (e.g., https://api.vaquill.ai).
API key not working Extension not loading
  • Validate JSON syntax in manifest.json.
  • Ensure all required Manifest V3 fields are present (manifest_version: 3, name, version, action, background.service_worker).
No sources in responses
  • Try a more specific legal query (cite a statute or doctrine by name).
  • Verify MAX_SOURCES is greater than 0 in config.js.
Content Security Policy errors
  • Do not add inline scripts or external script sources.
  • Restore the default CSP in manifest.json:
    "content_security_policy": {
      "extension_pages": "script-src 'self'; object-src 'self'"
    }
    

Ask API

The endpoint this extension calls.

Authentication

How to generate and rotate API keys.

Embedded Chat Widget

Drop the same chat into any website via iframe.

GitHub

Source code and issue tracker.