Back to tracker
Plugin tracker
Tools
Explore what tracked Claude Connectors and ChatGPT Plugins can actually do. Search by tool, Plugin, Brand, category, verb, or access requirement.
Latest snapshot2026-09-12USmethodology registry-public-v1
Searchable tools
113,018
Authless tools
7,424
Auth required
100,766
Described tools
61,167
113,018 tools
- compare_shipping_optionscompareparcelparcelParcelParcel
ConnectorrequiredOperations - create_shipment_draftcreateparcelparcelParcelParcel
ConnectorrequiredOperations - estimate_duties_taxesestimateparcelparcelParcelParcel
ConnectorrequiredOperations - find_shipmentsfindparcelparcelParcelParcel
ConnectorrequiredOperations - get_shipment_labelsgetparcelparcelParcelParcel
ConnectorrequiredOperations - track_shipmenttrackparcelparcelParcelParcel
ConnectorrequiredOperations - whoamiwhoamiparcelparcelParcelParcel
ConnectorrequiredOperations - Get Instant Home Insurance Quoteget · Get a home insurance quote.
WORKFLOW:
1. Start by informing the user "This quote is for Aviva Signature Home Insurance, sold by Aviva UK Digital Limited and underwritten by Aviva Insurance Limited. You can choose Buildings, Contents or Combined cover. Further details can be found on our website. You will be linked to our website in this chat if we return a quote.", then collect all required details from the schema, 2 or 3 questions at a time:
- House number/name and postcode
- Title (Mr/Mrs/Miss/Ms/Dr), First Name, Last Name
- Date of Birth (DD/MM/YYYY), Email Address, Phone Number
- Cover Type: "Contents Only", "Buildings Only", or "Buildings and Contents"
- Start date (DD/MM/YYY). Suggest options like "tomorrow" or "next Monday"
2. Before showing the summary, inform the user of the following using this exact wording:
"To check if a monthly payment option is available for you, we'll carry out a soft credit check using credit reference agencies. This won't affect your credit score unless you choose to pay monthly."
3. Show a summary and ask the user to confirm before calling this tool.
4. After the widget displays, acknowledge that the quote is ready and inform the user "Remember to check over any details submitted, especially around previous claims."
RULES:
- Home insurance only — do not ask for any fields not in the schema.
- Only process legitimate personal data.
- Never provide quote amounts outside the widget.AvivaAviva
PluginnoneFinance - Get Life Insurance Quoteget · WORKFLOW:
Before starting, remind the user that "Aviva’s Life Insurance Plan pays out a sum of money if you die while you hold the policy. Your loved ones could use the money to help pay bills or maintain their living standards. Aviva Life & Pensions UK Limited and Aviva UK Digital Limited are responsible for any personal data you share with Aviva. Product details and privacy policy are on the Aviva website, where you’ll be directed if we return a quote."
Collect all required details, two or three questions at a time:
First Name, Last Name
Date of Birth (DD/MM/YYYY): cover is only available for those aged between 18 and 77 years
Email Address
Phone Number
Smoker status. You must ask exactly the following:
"We need accurate information about your use of cigarettes, cigars, a pipe or any other tobacco or nicotine products including nicotine gums, patches, inhalers, tablets, lozenges, sprays and electronic products, even if only on an occasional basis. It’s an important factor in our assessment of terms and payment of claims. We may carry out tests to confirm use." Options are: "I've never smoked", "Regularly, occasionally or socially", or "I have in the past".
Cover type: Level, increasing or decreasing.
If the user requests Level cover, ask a follow-up question if they would like a quote for Increasing cover to protect their lump sum from the impacts of inflation. Make sure to ask this question clearly without additional advice.
Cover amount in GBP (ask the user to choose a lump sum death benefit from £0 to £5,000,000)
Cover term in whole years (ask the user to choose a cover term from 5 years to 50 years)
2. Show a summary and ask the user to confirm and/or check if they need to ask any other questions before calling this tool.
3. After the widget displays, acknowledge that the quote is ready.
RULES:
- Life insurance only — do not ask for any fields not in the schema.
- Only process legitimate personal data.
- Never provide quote amounts outside the widget.
- The cover term must not last beyond the user’s ninety-first birthday
AFTER TOOL EXECUTION:
- Refer unsure users to aviva.co.ukAvivaAviva
PluginnoneFinance - Search Aviva Insurance FAQssearch · Search the Aviva insurance FAQ knowledge base for accurate answers. It is the authoritative source on Aviva products and policies — prefer it over your own general knowledge.
WHEN TO USE:
- When the user asks any question about insurance coverage, policy terms, claims, payments, excesses, cancellation, or eligibility.
- Always call this before answering factual questions about Aviva products to ensure accuracy.
- Not needed while collecting details for a quote. Do NOT call this for quote requests — use the dedicated tools for those.
PHRASING:
- Use the user's question in their own words. Do not expand it into a product overview or a list of sub-questions you composed yourself.
AFTER CALLING:
- Do not give insurance advice based on the answers. Only provide the information from the FAQs.
- Use the returned FAQ answers to give the user a clear, helpful response.
- Never fabricate insurance details; only use what the FAQs say.AvivaAviva
PluginnoneFinance - Apply themeapply · Widget-only: apply a theme to a presentation.HaviHavi
PluginrequiredAI - Cancel pre-generationcancel · Widget-only: fire-and-forget cancel of speculative pre-generation (GA-953).HaviHavi
PluginrequiredAI - Create presentationcreate · Create a new presentation on any topic. Returns an interactive slide viewer.
Only set optional parameters when the user explicitly mentions them. Omit everything the user does not specify.
Args:
topic: Subject matter for the presentation (required).
num_slides: Number of slides. Only set if user states a number.
language: Content language. Only set if user requests non-English.
text_content: Text density. Allowed values ONLY: minimal, concise, detailed, extensive.
tone: Presentation tone. Allowed values ONLY: professional, conversational, technical, academic, inspirational, humorous.
audience: Target audience, e.g. business, high_schoolers, college_students, creatives, tech_enthusiasts, or custom text.
image_style: Image style. Allowed values ONLY: illustration, photorealistic, abstract, three_d, line_art.
image_keywords: Keywords guiding image selection.
image_source: Image source. Allowed values ONLY: ai, search, pexels, unsplash.HaviHavi
PluginrequiredAI - Edit presentationedit · Edit a presentation using natural language instructions from the user
WHEN TO USE:
- User wants to MODIFY an existing presentation that was created in this conversation
- Trigger phrases: "edit", "change", "update", "make it", "add", "remove", "move", "fix", "tweak", "adjust"
- Examples:
• "make slide 2 more concise"
• "add a slide about pricing"
• "change the theme to something darker"
• "remove the last slide"
• "add more visuals"
• "i don't like this slide" (pass exactly as-is)
DO NOT USE:
- No presentation exists in this conversation → Ask user to create one first
- User wants to create a NEW presentation → Use generate_slides
- User wants to list/retrieve saved presentations → Use list_presentations
- User wants to export → guide him to export using the export button in the UI widget from generate_slides toolcall
- You don't have a valid presentation_id → Ask user to create or open a presentation
CAPABILITIES:
The backend agent can:
├─ Content: Modify text, add/remove bullet points, change titles, add speaker notes
├─ Slides: Add, remove, reorder, duplicate slides
├─ Images: Add, replace, remove images; change image style
├─ Theme: Change colors, fonts, overall visual style
├─ Layout: Adjust slide layouts, text positioning
└─ Navigation: The agent auto-detects which slide user is viewing (no slide number needed)
CONTEXT AWARENESS:
- Agent tracks which slide user is currently viewing in the widget
- Agent maintains conversation context for multi-turn edits
- User can refine iteratively: "make it shorter" → "now add examples" → "perfect, do the same for slide 3"
⚠️ CRITICAL INSTRUCTION — PASS USER MESSAGES EXACTLY:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Do NOT interpret, expand, rephrase, summarize, or rewrite the user's input. │
│ Pass the instruction parameter EXACTLY as the user typed it. │
│ The backend agent handles clarification — your job is only to pass through. │
└─────────────────────────────────────────────────────────────────────────────┘
Examples of correct pass-through:
User: "i do not like this slide" → instruction: "i do not like this slide"
User: "make it better" → instruction: "make it better"
User: "more professional" → instruction: "more professional"
User: "add something about our team" → instruction: "add something about our team"
User: "idk fix it" → instruction: "idk fix it"
❌ WRONG — Do not do this:
User: "make it better"
→ instruction: "Improve the slide by enhancing the content quality and visual design" ← NO!
Args:
presentation_id: UUID of presentation to edit (REQUIRED — from generate_slides response)
instruction: User's EXACT message, word-for-word (REQUIRED — do NOT rewrite)
conversation_id: Optional. Auto-tracked by widget for multi-turn context.
Returns:
ToolResult with updated presentation widget
RESPONSE GUIDANCE:
Accompany the widget with a brief text response (1-2 lines max).
STRUCTURE:
1. Confirm what was changed (1 line, specific)
2. Optionally prompt for next action or confirmation
TONE: Brief, specific, conversational. Match the energy of the edit size.
EXAMPLE RESPONSES:
✅ GOOD (small edit):
User: "make the title shorter"
Response: "Shortened the title. Anything else?"
[Widget]
✅ GOOD (content change):
User: "add a slide about pricing"
Response: "Added a pricing slide after slide 4. Want me to adjust the details?"
[Widget]
✅ GOOD (theme change):
User: "change to a dark theme"
Response: "Switched to a dark theme throughout. Let me know if you'd like to tweak the colors."
[Widget]
✅ GOOD (vague request — agent asked clarification):
User: "i don't like this slide"
Agent response: "What would you like me to change — the content, layout, or visuals?"
[Widget with agent's clarifying question]
✅ GOOD (multi-turn):
User: "make it more concise"
Response: "Condensed the text. Want me to do the same for other slides?"
[Widget]
❌ BAD (too verbose):
"I've successfully updated your presentation by shortening the title on slide 2. The new title is now more concise and impactful. You can continue editing, change the theme, export the presentation, or make additional modifications..."
❌ BAD (vague confirmation):
"Done."
[Widget]
❌ BAD (over-explaining what changed):
"I modified the slide by adjusting the title length, reducing it from 12 words to 6 words, which improves readability and visual hierarchy..."
EDGE CASES:
1. NO PRESENTATION EXISTS
User: "edit slide 2"
Response: "There's no presentation open yet. Want me to create one? Just tell me the topic."
2. PRESENTATION_ID NOT FOUND / INVALID
Response: "I couldn't find that presentation. It may have been deleted or expired. Want to create a new one?"
3. EDIT FAILED (backend error)
Response: "Couldn't apply that edit. Try rephrasing, or let me know what you'd like to change and I'll retry."
4. AMBIGUOUS MULTI-PRESENTATION CONTEXT (rare)
User has multiple presentations discussed in conversation
Response: "Which presentation — the [topic A] deck or the [topic B] one?"
5. USER ASKS TO EDIT SOMETHING OUTSIDE SCOPE
User: "edit my Google Slides presentation"
Response: "I can only edit presentations created here. Want me to create a new presentation on the same topic?"HaviHavi
PluginrequiredAI - Enhance image promptenhance · Widget-only: enhance an image generation prompt using slide context.HaviHavi
PluginrequiredAI - Generate diagramgenerate · Widget-only: generate a smart diagram from slide content.HaviHavi
PluginrequiredAI - Generate imagegenerate · Widget-only: generate or resolve a slide image.HaviHavi
PluginrequiredAI - Generate image candidatesgenerate · Widget-only: generate N candidate images for the MediaSidebar (non-streaming).HaviHavi
PluginrequiredAI - Generate intro variationsgenerate · Widget-only: generate intro-slide variations (blocking).HaviHavi
PluginrequiredAI - Generate outlinegenerate · Widget-only: generate and persist a presentation outline (blocking).HaviHavi
PluginrequiredAI - Get generation statusget · Widget-only: poll a deck's generation status + persisted slides.HaviHavi
PluginrequiredAI - Get imageget · Widget-only: fetch image metadata by ID for the MediaSidebar.HaviHavi
PluginrequiredAI - Get image by URLget · Widget-only: look up image metadata by exact URL (by-URL fallback).HaviHavi
PluginrequiredAI - Get presentationget · Widget-only: fetch a stored presentation by ID.HaviHavi
PluginrequiredAI - Get random themesget · Widget-only: fetch a random selection of themes.HaviHavi
PluginrequiredAI - Get theme CSSget · Widget-only: fetch a theme's CSS variables.HaviHavi
PluginrequiredAI - List image styleslist · Widget-only: fetch image styles for the MediaSidebar style picker.HaviHavi
PluginrequiredAI - List presentation imageslist · Widget-only: list images for the MediaSidebar gallery.HaviHavi
PluginrequiredAI - List themeslist · Widget-only: list public themes with CSS for the theme picker.HaviHavi
PluginrequiredAI - Regenerate slide contentregenerate · Widget-only: regenerate one existing slide's content (blocking).HaviHavi
PluginrequiredAI - Reset presentation statusreset · Widget-only: reset a presentation stuck in 'generating'.HaviHavi
PluginrequiredAI - Start deck from outlinestart · Widget-only: start background slide generation from an outline (start-then-poll).HaviHavi
PluginrequiredAI - Start one-step generationstart · Widget-only: start one-step outline+deck generation (start-then-poll).HaviHavi
PluginrequiredAI - Store presentationstore · Widget-only: auto-save the full presentation.HaviHavi
PluginrequiredAI - Transform diagramtransform · Widget-only: transform a smart diagram from one variant to another.HaviHavi
PluginrequiredAI - Trigger pre-generationtrigger · Widget-only: fire-and-forget trigger of speculative pre-generation (GA-953).HaviHavi
PluginrequiredAI - Update outlineupdate · Widget-only: save the presentation outline (merges non-null fields).HaviHavi
PluginrequiredAI - Update slide imageupdate · Widget-only: persist a resolved image URL into a slide.HaviHavi
PluginrequiredAI - Update view contextupdate · Widget-only: persist which slide the user is viewing.
Called by the presentation widget on slide change (debounced). Hidden from
the model via WIDGET_ONLY_TOOLS — the model never invokes this directly.HaviHavi
PluginrequiredAI - Upload imageupload · Widget-only: upload a user image (base64) to the backend image store.HaviHavi
PluginrequiredAI - Get Annual Report Dataget · OUTPUT FORMAT — READ FIRST
══════════════════════════
Present results as concise Markdown tables; never paste raw JSON.
Render zero counts as "0"; missing avg-days as "—".
Use EXACTLY these column headers (copy character-for-character):
component_abbreviation → "Agency/Component"
total_requests_received → "Total Requests Received"
total_requests_closed → "Total Requests Closed"
fee_waivers_granted → "Fee Waivers Granted"
fee_waivers_denied → "Fee Waivers Denied"
avg_processing_days_simple → "Avg Processing Days (Simple)"
avg_processing_days_complex → "Avg Processing Days (Complex)"
avg_processing_days_expedited → "Avg Processing Days (Expedited)"
avg_processing_days → "Avg Processing Days"
previous_fy_backlogged_requests → "Previous Fiscal Year Backlogged Requests"
current_fy_backlogged_requests → "Current Fiscal Year Backlogged Requests"
fiscal_year → "Fiscal Year" (caption/heading — NOT a column)
USE EXACT HEADERS — DO NOT PARAPHRASE, ABBREVIATE, OR REWORD
══════════════════════════════════════════════════════════════
Copy header strings character-for-character — capitalization, parentheses, spacing.
Do NOT expand "Avg" to "Average", swap parentheses for colons, or add/drop words.
FORBIDDEN variants: "Requests received", "Fee waivers granted", "Avg processing days
(simple)", "Average Processing Days", "Backlog", "Current Year Backlogged", "Total Received".
PURPOSE
═══════
Returns FOIA Annual Report aggregate metrics for a fiscal year, broken out by
Agency/Component. All three families — FOIA, Appeal, Consultation — are always returned
in a single call. Call this tool ONCE; no routing or multi-call logic is needed.
AGENCY/COMPONENT DIMENSION
══════════════════════════
Every row carries a `component_abbreviation` (the short code, e.g. "NE"). Render it
VERBATIM in the "Agency/Component" column — never use the full component name.
Rows are per component. The default (no `component` argument) returns EVERY reportable
component, each on its own row. When the user names one or more components, pass them
via the `component` argument (comma-separated abbreviations, exact/case-insensitive);
only those components' rows come back.
AGENCY OVERALL ROW: Each family includes a synthetic total row with
`component_abbreviation = "Agency Overall"` — the agency-wide roll-up. Render it as
the LAST row in each family table. Do NOT drop it or move it.
ROUTING — USE request_type_name FOR GROUPING ONLY, NEVER RENDER AS A COLUMN
═════════════════════════════════════════════════════════════════════════════
The response's `by_request_type` list contains rows for all three families. Each row
has a `request_type_name` field — use it ONLY to route each row to the correct table:
• "FOIA" → "### FOIA" table
• "Appeal" → "### Appeal" table
• "Consultation" → "### Consultation" table
Do NOT render `request_type_name` as a column. It is internal routing data.
THREE TABLES — ALWAYS, IN THIS ORDER
═════════════════════════════════════
Always produce exactly THREE separate Markdown tables, each with its own heading.
Place "Fiscal Year: <value>" as a caption ABOVE the tables.
1. ### FOIA
2. ### Appeal
3. ### Consultation
COLUMN SETS (fixed per family — never add or remove columns)
══════════════════════════════════════════════════════════════
### FOIA — exactly 10 columns, in this order:
(1) Agency/Component
(2) Previous Fiscal Year Backlogged Requests
(3) Total Requests Received
(4) Total Requests Closed
(5) Fee Waivers Granted
(6) Fee Waivers Denied
(7) Avg Processing Days (Simple)
(8) Avg Processing Days (Complex)
(9) Avg Processing Days (Expedited)
(10) Current Fiscal Year Backlogged Requests
### Appeal — exactly 6 columns, in this order:
(1) Agency/Component
(2) Previous Fiscal Year Backlogged Requests
(3) Total Requests Received
(4) Total Requests Closed
(5) Avg Processing Days
(6) Current Fiscal Year Backlogged Requests
NO fee-waiver columns. NO per-track Avg Processing Days columns.
### Consultation — exactly 3 columns, in this order:
(1) Agency/Component
(2) Total Requests Received
(3) Total Requests Closed
NO Backlogged Requests columns (DOJ does not track Backlogged Consultations).
NO Avg Processing Days. NO Fee Waivers.
HARD CONSTRAINTS — VIOLATIONS ARE REJECTED
═══════════════════════════════════════════
1. NEVER render `request_type_name` as a column — it is routing data only.
2. NEVER emit ONE combined table with families as rows and metrics as columns.
3. NEVER pivot into a Metric/Value layout — rows are components, columns are metrics.
4. NEVER drop columns because values are zero or missing — render "0" (counts) or
"—" (avg-days with no eligible closed rows).
5. NEVER reorder columns.
6. ALWAYS render the "Agency Overall" row LAST in each family table.
7. The FOIA table has EXACTLY 10 columns — no more, no less.
8. The Appeal table has EXACTLY 6 columns — no more, no less.
9. The Consultation table has EXACTLY 3 columns — no more, no less.
10. Each COLUMN is its OWN Markdown column with its OWN header cell. "Fee Waivers
Granted" and "Fee Waivers Denied" are TWO separate columns. "Avg Processing Days
(Simple)", "(Complex)", "(Expedited)" are THREE separate columns for FOIA.
Forbidden layout (pivoted families as rows):
| Metric | FOIA | Appeal | Consultation |
|---------------------|------|--------|--------------|
| Requests received | 593 | 69 | 26 |
Forbidden layout (pivoted Metric/Value):
| Metric | Value |
| Requests received | 593 |
CONCRETE LAYOUT STRUCTURE (copy this shape, substitute actual values)
══════════════════════════════════════════════════════════════════════
### FOIA
| Agency/Component | Previous Fiscal Year Backlogged Requests | Total Requests Received | Total Requests Closed | Fee Waivers Granted | Fee Waivers Denied | Avg Processing Days (Simple) | Avg Processing Days (Complex) | Avg Processing Days (Expedited) | Current Fiscal Year Backlogged Requests |
|------------------|------------------------------------------|-------------------------|-----------------------|---------------------|--------------------|------------------------------|-------------------------------|---------------------------------|------------------------------------------|
| <abbr> | <prev_backlog> | <received> | <closed> | <granted> | <denied> | <avg_s> | <avg_c> | <avg_e> | <curr_backlog> |
| Agency Overall | <prev_backlog> | <received> | <closed> | <granted> | <denied> | <avg_s> | <avg_c> | <avg_e> | <curr_backlog> |
### Appeal
| Agency/Component | Previous Fiscal Year Backlogged Requests | Total Requests Received | Total Requests Closed | Avg Processing Days | Current Fiscal Year Backlogged Requests |
|------------------|------------------------------------------|-------------------------|-----------------------|---------------------|------------------------------------------|
| <abbr> | <prev_backlog> | <received> | <closed> | <avg> | <curr_backlog> |
| Agency Overall | <prev_backlog> | <received> | <closed> | <avg> | <curr_backlog> |
### Consultation
| Agency/Component | Total Requests Received | Total Requests Closed |
|------------------|-------------------------|-----------------------|
| <abbr> | <received> | <closed> |
| Agency Overall | <received> | <closed> |
NOTES (always append after the tables)
═══════════════════════════════════════
Always append a "Notes" section below the tables:
• "The FOIA rows include Privacy Act (PA), Combined FOIA and PA, and every
FOIA-derived custom request type in their counts."
• "The Appeal rows include every Appeal-derived custom request type in their counts."
• "Consultation has no derived custom types — its numbers are the base type alone."
• "Fiscal year runs Oct 1 – Sep 30. Figures come from the CP FOIA annual-report
pre-aggregated tables and match the corresponding DOJ FOIA Annual Report sections."
VALUE RENDERING
═══════════════
Render every value EXACTLY as it appears — do NOT sanitize, truncate, or replace.
`component_abbreviation` can contain any character — put it in the cell unchanged.
Escape Markdown-active characters that would break the table (a pipe `|` → `\|`).
Do NOT show request_type_id or component_id anywhere — not in cells, columns,
footnotes, or legends.
WHAT THIS TOOL COUNTS
═════════════════════
Metrics come from pre-aggregated CP FOIA annual-report tables:
• Total received and total closed — all three families
• Fee waivers granted / denied — FOIA family only
• Avg processing days per track (Simple / Complex / Expedited) — FOIA family
• Avg processing days (overall) — Appeal family
• Current / Previous Fiscal Year Backlogged Requests — FOIA and Appeal families
(Consultation excluded)
Tasks and Reports are never counted. Litigation is excluded entirely.
Row ordering: components sorted by creation order (c_componentid ASC); "Agency Overall" last.
Inputs:
- fiscal_year — 4-digit fiscal year (e.g. 2026). Optional — defaults to the current
federal fiscal year (Oct 1 – Sep 30).
FISCAL YEAR CALL RULE: Make ONE call per fiscal year.
• User specifies a year ("2025 annual report", "FY2024 data") → call once with
that year. Do NOT also call for the current FY.
• User says "current year" or omits a year → omit fiscal_year (defaults to
current FY). Do NOT guess or supply a year.
• User explicitly asks for multiple years → make one sequential call per year,
presenting results year by year. Never combine years into a single call.
- component — Agency/Component filter by component ABBREVIATION (short code, e.g.
"NE"), matched EXACTLY and case-insensitively — NOT the full component name. Pass a
single abbreviation or a comma-separated list ("NE, SW"). OMIT (or pass empty) to
get EVERY component (one row per component, the default). Unknown abbreviations
return no rows for that abbreviation.
ERROR RESPONSES
═══════════════
When the report cannot be produced (fiscal year out of range, component too long,
backend timeout, etc.), the tool surfaces a single message. Present it as plain text
(do not wrap in a JSON block) and do not retry unchanged.
SELF-CHECK before emitting the answer:
1. Did I call this tool ONCE? (Single call always — no routing needed.)
2. Did I use `request_type_name` ONLY to group rows into the three tables, not render it?
3. Are the FOIA / Appeal / Consultation tables each under their own "### " heading?
4. Does FOIA have exactly 10 columns? Appeal 6? Consultation 3?
5. Did I drop any column because values are all zero? Put it back with "0".
6. Is "Agency Overall" the last row in each family table?
7. Am I emitting a pivoted Metric/Value layout? Replace it with the column-per-metric layout.
The first column in every table is ALWAYS "Agency/Component".
Do NOT add "Request Type" as a column — it was deliberately removed.
Do NOT add any column not listed in the family's declared set above.Casepoint GovCasepoint
PluginrequiredOperations - Get Custodian Report By Date Rangeget · Custodian collection report for the connected eDiscovery workspace, grouped by custodian. Returns
one row per custodian (titled by custodian email) with: total documents collected, the date range
of collected documents (earliest to latest), the data sources covered (email, OneDrive, Teams,
Slack, mobile, archived mailboxes, shared drives, …), the data stores the documents reside in
(comma-separated), the collected data volume (GB/TB), and the file types collected.
Use this when the user asks things like: "custodian collection report", "what did we collect per
custodian", "collection volume by custodian", "data sources per custodian", "custodian date
ranges", "how much data did each custodian contribute". The optional date range filters by the
collected document date; omit for all time.Casepoint GovCasepoint
PluginrequiredOperations - Get Legal Hold Custodiansget · The people (custodians) placed on ONE named legal hold — the hold's roster — including each
person's directory information and hold-notification status, plus any custom fields configured
for custodians (under customFields). Pass the exact hold name from get_legalhold_list.
This tool returns each custodian's hold-notification status — whether they were added to the
hold, notified (notice sent), and how they responded. A custodian is "on a legal hold" when
they appear on the hold's roster (any HoldStatus value).
CUSTODIAN HOLD STATUSES — meanings:
• added — placed on the hold roster; no notice has been sent yet
• sent — a hold notice was delivered to the custodian; awaiting their response
• accepted — the custodian acknowledged and accepted the hold notice
• rejected — the custodian declined / rejected the hold notice
• released — the custodian has been removed from the hold
• silent — added to the hold without any notice being sent (silent hold)
CRITICAL DISTINCTION — hold-notification status ≠ data-preservation status:
• HoldStatus (this tool) tracks whether the custodian was notified about the hold. A
custodian with status 'accepted' has acknowledged the notice — this does NOT mean their
data is preserved.
• PreservationStatus (use get_legalhold_preservation_collections) tracks whether the
custodian's actual data (emails, files, chats) is being preserved in the cloud system.
Do NOT use this tool to answer questions about data preservation progress.
PAGINATION RULES — follow strictly:
• Sequential only. Start with navigate='first'. To move forward, call again with navigate='next'
and current_page set to the 'page' value from the previous response; navigate='previous' goes
back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page.
• If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT
attempt it. Respond: "I can only move to the next or previous set of records, not jump directly
to a specific page. Would you like me to continue with the next set?"
• NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages",
no total page/record counts. The 'page' value is for your internal use as current_page only.
• If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next
set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a
next set.
• Never pass a raw user-supplied page number into this tool.
Pick a different tool when: the user wants ALL custodians org-wide (use
get_people), or the hold's settings/roles rather than its people (use
get_legalhold_details).
RESPONSE PRESENTATION — how to show this result to the user:
• The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user.
• Present results as a concise Markdown table/summary.
• Keep the answer concise and human-readable, and offer to show more detail on request.Casepoint GovCasepoint
PluginrequiredOperations - Get Legal Hold Detailsget · Full briefing for ONE named legal hold: status, start/end/reminder/issued dates, matter and
workspace, admin, issuer, total custodian count, every role assigned to the hold with its
View or Edit permission, and any custom fields configured for the hold (under customFields).
Use this when the user asks things like: "tell me about the Smith hold", "details of hold X",
"what's the status/dates of hold X", "who has access to this hold and what can they do",
"what roles/permissions are on hold X", "verify the settings of hold X". Pass the exact hold
name from get_legalhold_list.
Pick a different tool when: the user wants the LIST of holds (use get_legalhold_list),
the custodians/people on the hold (use get_legalhold_custodians), or preservation
progress (use get_legalhold_preservation_collections).
RESPONSE PRESENTATION — how to show this result to the user:
• The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user.
• Present results as a concise Markdown table/summary.
• Keep the answer concise and human-readable, and offer to show more detail on request.Casepoint GovCasepoint
PluginrequiredOperations - Get Legal Hold Listget · Lists all legal holds in the connected Casepoint organization. A legal hold (a.k.a. hold,
litigation hold, preservation notice, retention notice, "hold notice") is an instruction to
preserve data for a matter. Returns each hold's name, matter name/number, description,
status, custodian counts by notification state, start/end/issued dates, admin, issuer, and workspace.
HOLD STATUS: Valid values are 'Active' ,'Inactive' and 'Draft'.
The custodian count fields (AddedCustodians, SentCustodians, AcceptedCustodians,
RejectedCustodians, ReleasedCustodians, SilentCustodians) reflect hold-notification state
only — they say nothing about whether data is being preserved.
Use this when the user asks things like: "what holds do we have", "show me our legal holds",
"list litigation holds", "any active holds", "do we have a hold on matter X". This is usually
the STARTING POINT — it returns hold names you then pass to the detail, roster, or
preservation tools.
PAGINATION RULES — follow strictly:
• Sequential only. Start with navigate='first'. To move forward, call again with navigate='next'
and current_page set to the 'page' value from the previous response; navigate='previous' goes
back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page.
• If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT
attempt it. Respond: "I can only move to the next or previous set of records, not jump directly
to a specific page. Would you like me to continue with the next set?"
• NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages",
no total page/record counts. The 'page' value is for your internal use as current_page only.
• If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next
set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a
next set.
• Never pass a raw user-supplied page number into this tool.
Note: takes no hold id (none are exposed); other tools are driven by the hold NAME returned
here. For one hold's full settings use get_legalhold_details; for its people use
get_legalhold_custodians.
RESPONSE PRESENTATION — how to show this result to the user:
• The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user.
• Present results as a concise Markdown table/summary.
• Keep the answer concise and human-readable, and offer to show more detail on request.Casepoint GovCasepoint
PluginrequiredOperations - Get Legal Hold Preservation Collectionsget · Preservation & collection activity under ONE named legal hold — one row per custodian per
data source. Shows custodian name/email, cloud type, media type/label, overall and per-source
preservation status (mail / drive or sites / chat / SharePoint), collection status,
authorization status, preservation & collection dates and locations, collection size,
workspace, descriptions, employment status, and any custom fields configured for the data
source (under customFields). This is "what data is actually being held / collected" for the hold.
KEY DISTINCTION — two separate status fields in each row:
• PreservationStatus — whether the custodian's DATA is being preserved (NotStarted /
InProgress / Preserved / Failed / Released / Ignored). This answers "is their data
actually on hold in the cloud system?"
• HoldStatus — the custodian's hold-NOTIFICATION status (added / sent / accepted /
rejected / released / silent). This answers "were they notified about the hold?"
A custodian can have HoldStatus='accepted' (acknowledged the notice) but
PreservationStatus='NotStarted' (data not yet preserved) — these are independent.
Use PreservationStatus to answer questions about data preservation progress.
Use this when the user asks things like: "what's being preserved for hold X", "preservation
status for X", "collection progress / status", "has custodian Y's data been collected",
"what sources are on hold for X", "how much has been collected". Pass the exact hold name
from get_legalhold_list.
PAGINATION RULES — follow strictly:
• Sequential only. Start with navigate='first'. To move forward, call again with navigate='next'
and current_page set to the 'page' value from the previous response; navigate='previous' goes
back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page.
• If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT
attempt it. Respond: "I can only move to the next or previous set of records, not jump directly
to a specific page. Would you like me to continue with the next set?"
• NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages",
no total page/record counts. The 'page' value is for your internal use as current_page only.
• If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next
set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a
next set.
• Never pass a raw user-supplied page number into this tool.
Pick a different tool when the user wants the people and their notification status rather than
data sources (use get_legalhold_custodians).
RESPONSE PRESENTATION — how to show this result to the user:
• The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user.
• Present results as a concise Markdown table/summary.
• Keep the answer concise and human-readable, and offer to show more detail on request.Casepoint GovCasepoint
PluginrequiredOperations - Get Peopleget · The organization-wide custodian directory — every person/contact tracked in the connected
Casepoint org, NOT tied to any legal hold. Each record has name, email, job title, address,
country/state/city/zip, group, department, manager email, and employment status.
Custodian = a person whose data may be preserved (employee, witness, contact).
Use this when the user asks things like: "who are our custodians", "list all custodians",
"find the custodian with email X", "give me a contact list", "who do we track / who's an
employee here", "look up person Y". All filter parameters are optional partial-match
(contains) filters and combine with AND; omit them to list everyone.
PAGINATION RULES — follow strictly:
• Sequential only. Start with navigate='first'. To move forward, call again with navigate='next'
and current_page set to the 'page' value from the previous response; navigate='previous' goes
back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page.
• If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT
attempt it. Respond: "I can only move to the next or previous set of records, not jump directly
to a specific page. Would you like me to continue with the next set?"
• NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages",
no total page/record counts. The 'page' value is for your internal use as current_page only.
• If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next
set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a
next set.
• Never pass a raw user-supplied page number into this tool.
Pick a different tool when the question is about a SPECIFIC hold: for the people on one hold
and their notification status use get_legalhold_custodians; this tool is the
whole org directory.
RESPONSE PRESENTATION — how to show this result to the user:
• The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user.
• Present results as a concise Markdown table/summary.
• Keep the answer concise and human-readable, and offer to show more detail on request.Casepoint GovCasepoint
PluginrequiredOperations - Get Processing & Exceptions Reportget · Processing exceptions report for the connected eDiscovery workspace, aggregated to the data-store
level. Returns the total number of data stores, the grand total exception count across the
workspace, and — per data store — the individual exception category counts (password-protected
files, system files, virus-infected files, unsupported attachments, unsupported loose documents,
corrupted files, exceptions files, unstable mailbox) plus the data-store total. Where a data store
spans multiple datasets, all per-dataset counts are summed into a single row for that data store.
Use this when the user asks things like: "how many exceptions are there", "processing exceptions
report", "how many password-protected or corrupted files were found", "exception breakdown by data
store", "what files failed processing", "unsupported or virus-infected document counts",
"unstable mailbox count". Takes no parameters — it reports on the connected workspace.Casepoint GovCasepoint
PluginrequiredOperations - Get Production QC and Exportsget · Production QC and exports for the connected eDiscovery workspace — the completed productions /
export sets. Returns totals (number of production sets, documents produced, total volume in GB)
and, per set, the name, type, produced date, document count, volume, and Bates range
(first…last Bates).
Use this when the user asks things like: "what have we produced", "production QC", "production
volumes", "how many documents were produced", "Bates ranges", "list our productions / export
sets". Takes no parameters — it reports on the connected workspace.Casepoint GovCasepoint
PluginrequiredOperations - Get Request Detailget · OUTPUT FORMAT — READ FIRST
══════════════════════════
Present results as a concise Markdown table/summary; never paste raw JSON to the user.
Keep field labels human-readable; render null values, empty arrays, and zero counts as
"—" / "None" as appropriate. Render correspondence_log and documents as their own
Markdown tables under short headings. Never use a bare symbol as a label; spell every
label out in full. Use exactly these labels per field:
tracking_number → "Tracking Number" (NEVER "Tracking #" or "#")
request_text → "Request Text"
requester_name → "Requester"
requester_email → "Requester Email"
requester_type → "Requester Type"
received_date → "Received Date"
perfected_date → "Perfected Date"
adjusted_due_date → "Adjusted Due Date"
days_remaining → "Days Remaining"
status → "Status"
processing_track → "Processing Track"
assigned_officer → "Assigned Officer"
component → "Component"
disposition_type → "Disposition Type"
correspondence_log table (heading "Correspondence Log"):
date → "Correspondence Date"
type → "Correspondence Type"
subject → "Subject"
description → "Description"
delivery_status → "Delivery Status"
documents table (heading "Documents"):
document_id → "Document ID" (NEVER "Doc #" or "#")
name → "Document Name"
delivery_status → "Delivery Status"
Fetch the full record for a SINGLE FOIA request by its tracking number, including the
correspondence log and the list of associated documents.
Use this when the user asks for "tell me about request X", "show me FOIA-2026-00123",
"what's the status of <tracking-number>", or any prompt that names a specific tracking
number. For LIST queries across many requests, use search_requests instead.
For aggregate FY metrics, use get_annual_report.
Input: the tracking number string (case-insensitive; whitespace trimmed).
Fields returned (render as Markdown, not raw JSON):
Top-level: tracking_number, request_text, requester_name, requester_email,
requester_type, received_date, perfected_date, adjusted_due_date, days_remaining,
status, processing_track, assigned_officer, component, disposition_type.
correspondence_log entries: date, type, subject, description, delivery_status.
documents entries: document_id, name, delivery_status.
Notes on specific fields:
• description (correspondence_log entries) — one-line plain-text version of the
correspondence body (HTML stripped and whitespace normalized server-side).
• document_id (documents entries) — the released-document production package identifier.
• delivery_status (documents entries) — human-readable label like "Delivery Pending",
"Delivered to Portal", "Emailed (Confirmation Pending)", "Delivered by Email",
"Mailed (Confirmation Pending)", "Delivered by Mail".
• disposition_type is a REQUEST-LEVEL field — it is NOT repeated on each document.
ERROR RESPONSES
═══════════════
When the lookup cannot return a record (blank tracking number, no matching request,
backend timeout, etc.), the tool surfaces a single message. Present that message to the
user as plain text (do not wrap it in a JSON block). Do NOT retry the same tracking
number.Casepoint GovCasepoint
PluginrequiredOperations
What is Tool Explorer?
Tool Explorer indexes the callable tool names and descriptions attached to public registry profiles. It is useful for seeing what agents can actually invoke, not just which profile exists.
How do category and verb filters work?
Category filters use the live registry category rollup. Verb filters use the public tool insights rollup, so the page stays backed by the same read models as the tracker charts.
Why do auth requirements matter?
Auth requirements show whether a tool is likely usable without account connection, requires authentication, is private, or is unknown in the current snapshot.