Integration details
Description
This JUNE agent helps law firms and legal departments find cases, documents, deadlines, appointments, tasks, contacts, case facts, and document facts; create and update private case records; and prepare outgoing correspondence through ChatGPT. Access follows each user's existing JUNE permissions and tenant boundaries. Please note: You cannot use this plugin unless you have an active JUNE account on a JUNE tenant provisioned for your organisation.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-09-03
- Tool count
- 52
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competitive lineup
52 tools agents can invoke
List the fact fields a document's class (Dokklasse) can carry. Shows every field the document type defines — including ones not filled yet — as {key, label, type, group}. Read this before create_document_facts to learn the exact labels/keys; to see the values already present on the document use get_document_facts instead.
get_document_fact_schema
Read the API facts (ApiFactParts) attached to a case. API facts are structured data delivered for a case; each entry has a title carrying its timestamp and a free-form jsonDocument whose shape depends on what was delivered. A case can have several entries over time. Call without fact_part_id to list the entries (title + id); the newest is usually the one with the latest timestamp in its title. Then call again with a fact_part_id from that list to read that entry's full document. If the case has exactly one entry, its document is returned right away.
get_apifacts_for_case
Add a participant (Beteiligter) to a case (WRITES data in JUNE). contact_id must be an existing contact — find it via search_contacts or get_contact. role_id must come from get_value_list("Roles") — never guess it. JUNE does not prevent duplicates server-side; this tool rejects adding the same contact with the same role twice.
add_case_participant
Add new DocFact values to a document (WRITES data in JUNE). For fields the document class defines but the document does not carry yet. IMPORTANT: call get_document_fact_schema(document_id) first to get the valid field labels/keys — a field not in that schema is rejected. To change a value that already exists use update_document_facts instead. Pass {field: value}. The write is all-or-nothing: if any field is unknown, already present, or a grouped (line-item) field, nothing is written.
create_document_facts
Load CaseFact schemas for all YOUR mandates in one call. Covers the mandates you are permitted for plus the global schema (mandate_id=-1), loaded in parallel and returned as one deduplicated list. Each entry carries source_mandate_id. Returns: Dictionary containing: - status: "success" or "error" - schemas: List of schema entry dicts (guid_key, name, data_type, ...) - schema_version: Highest version found across mandates - mandate_count: Number of mandates processed - error: Error message if failed
get_all_casefact_schemas
Get all appointments for a specific case.
get_appointments_for_case
Look up a case by its reference number (Aktenzeichen). Returns the case ID and basic info for a given reference number. Use this when the user provides a case reference like "123/24" instead of a numeric case ID.
get_case_by_reference
Get case context including mandate information and current CaseFact values. This tool retrieves detailed information about a case including: - Case ID and reference number - Mandate ID (needed to get the correct CaseFact schema) - Clerk information - Archive and read-only status - Current CaseFact values
get_case_context
Get case contexts for multiple cases in a single batch request. This tool retrieves detailed information for multiple cases at once, which is much more efficient than calling get_case_context multiple times. Used for permission validation to check mandate IDs for all cases.
get_case_contexts
Get all available CaseFact schemas for a user/mandant. This tool returns a list of CaseFact definitions including: - Name of the CaseFact - Data type (string, decimal, date, boolean, integer) - Allowed values (for enum types) - Format pattern (e.g., YYYY-MM-DD for dates) - Description - Whether it's required
get_casefact_schema
Show which JUNE environment and user this connection is authenticated as.
whoami
Create a new case (Akte) under a mandate (WRITES data in JUNE). mandate_id must come from list_mandates — never guess it. list_mandates returns each mandate's id AND name; pick the mandate whose NAME matches what the user asked for, and if it is ambiguous ask the user instead of guessing. The case reference number (Aktenzeichen) is generated automatically by JUNE and returned in the result; do not try to set it. The authenticated user is set as the responsible clerk (Sachbearbeiter). Legal area, case type and participants are NOT set here — add participants afterwards with the participant tool once the case exists.
create_case
Create a note (Notiz) for a case (WRITES data in JUNE).
create_note
Create a new contact — a person or an organisation (WRITES data in JUNE). Give at least a surname (for a person) or a company name (for an organisation). contact_type_id is required — a contact without a type is broken in the UI (no form schema). Resolve contact_type_id and salutation_id via get_value_list("ContactTypes") — never guess the ids. Duplicate guard: when contact_type_id is set the backend first checks for a near-identical contact of that type (matching the firm's configured identity fields) and, if one exists, creates nothing and returns its ids in duplicate_contact_ids — show those to the user, and only pass force=true to create a second copy on purpose. Without contact_type_id no duplicate check runs, so pass it whenever you can.
create_contact
Create a deadline (Frist) for a case (WRITES data in JUNE). deadline_type_id must come from get_value_list("DeadlineTypes") — never guess it. The deadline is created as open and assigned to the authenticated user as clerk; its display name is derived from the deadline type.
create_deadline
Create an outgoing document from a document template (WRITES data). Renders the template with the case's data, addressed to one participant. Call list_document_templates(case_id) first — template_id and recipient_participant_id both come from there. OUTPUT FORMATS differ in what happens to the file: - "docx" (default): NOT filed into the case. You get a download link; edit the file and then file it into the case yourself with request_document_upload + finalize_document_upload(direction= "outgoing", document_type=<the template name>). - "pdf": filed into the case right away; the response carries its document_id. PDF-form templates can only produce PDF. The download link is short-lived (about ten minutes) — fetch the file right away rather than storing the URL. Every call creates a new document; there is no idempotency, so a retry produces a second one. FILENAME RULES for the later upload: use only letters, digits, spaces, dot, hyphen and underscore. Do NOT use parentheses or other special characters — ( ) [ ] { } & # % + ' " — the platform firewall rejects such requests with HTTP 403 before they reach JUNE. The returned "filename" already obeys these rules and can be re-used as it is.
create_case_document
Create a document from text content and file it into a case (WRITES data). The text is rendered to a PDF and run through the full JUNE pipeline (OCR, extraction, indexing, inbox task, case linkage). Use this for agent-authored documents (letters, statements, summaries). FILENAME RULES: use only letters, digits, spaces, dot, hyphen and underscore. Do NOT use parentheses or other special characters — ( ) [ ] { } & # % + ' " — the platform firewall rejects such requests with HTTP 403 before they reach JUNE. Write "Report - v3.docx", never "Report (v3).docx".
create_document_from_text
Create an appointment for a case (WRITES data in JUNE). All IDs must come from other tools — never guess them: - participant_id and contact_id from the participants list in get_case_context(case_id) - appointment_type_id from get_value_list("AppointmentTypes") - appointment_subtype_id from get_value_list("AppointmentSubtypes") - meeting_location_type_id from get_value_list("MeetingLocationTypes") The attendee is always the authenticated user.
create_appointment
Get all deadlines for a specific case.
get_deadlines_for_case
List the document templates ("Schreibenstemplates") usable for a case. Read this before create_case_document: it returns the templates released for the case's mandate, the output formats each one can produce, and per template the addressees you may pass — the case participants whose role the template allows. A template whose required role no active participant holds is still listed, with an empty "addressees" list and a "blocked_reason": create that participant first (create_contact + add_case_participant), then retry.
list_document_templates
Get the documents of a case, by default including their full text. A document-heavy case easily exceeds the response size a client can take. Page through it with limit/skip, or set include_content=false to get metadata only — that is what makes the response large. When looking for specific content, prefer azure_search (with case_id filter) and then get_documents_by_ids for the relevant hits. To offer a document as a download, use its downloadUrl. Never build a link from url or sasUri — those address blob storage directly and do not open outside the VNet.
get_all_documents_for_case
Get column definitions for fieldgroup CaseFacts. Returns the subfield/column schema for one or more fieldgroup keys, including each column's GUID key, label, and data type.
get_fieldgroup_schema
Step 2 of uploading a LOCAL file: file the uploaded file into the case. Call this AFTER PUTting the file to the upload_url from request_document_upload. Runs the uploaded file through the full JUNE pipeline (OCR, extraction, indexing, inbox task, case linkage).
finalize_document_upload
Look up JUNE reference IDs: participant roles, deadline types, appointment types/subtypes, meeting location types, document capture types, outgoing document types, contact types, countries. Use this whenever another tool requires a type, role or status ID (role_id, deadline type, appointment type, documentCaptureTypeId, ...) and you only know the display name — never guess IDs. Also use it to translate IDs in tool results back into display names.
get_value_list
Full-text search across all documents and cases of the tenant. Start here when looking for documents or cases by content, sender or subject. For finding passages WITHIN one known document use document_vector_search instead; for finding cases by CaseFact values use search_cases_by_casefact. Common usage: query plus optionally case_id and top. All other filters are advanced and rarely needed. The *_type_ids and *_role_ids filters take IDs from get_value_list (e.g. "DocumentCaptureTypes", "OutgoingDocumentTypes", "Roles") — never guess IDs.
azure_search
Validate and format a CaseFact value according to its data type. This tool validates and formats a raw value based on the specified data type. It handles type conversion, format validation, and returns the properly formatted value.
format_casefact_value
Get a single contact with full details including addresses.
get_contact
Get a time-limited link to download one document's file. Returns a direct HTTPS download URL (a temporary SAS link) for the document itself, without its extracted text — present it to the user as the download. For the document's text use get_document_content; for its extracted facts use get_document_facts.
get_document_download_link
Get a single task with full details.
get_task
Get document details with extracted content for specific document IDs. Use after azure_search or get_all_documents_for_case identified the relevant documents. Document IDs come from those tools. To offer a document as a download, use its downloadUrl. Never build a link from url or sasUri — those address blob storage directly and do not open outside the VNet.
get_documents_by_ids
Get all incoming messages (mail, beA, ...) for a specific case.
get_incoming_messages_for_case
List the mandates (Mandate) available to you, with their names. Returns each mandate's id AND name so you can pick the right one — e.g. for create_case, or as a search filter. Only the mandates you are permitted for are listed. Returns: Dictionary containing: - status: "success" or "error" - mandates: List of {"id": int, "name": str} - mandate_ids: List of mandate IDs (integers) - error: Error message if failed
list_mandates
Get YOUR open deadlines across all cases (you = the responsible clerk). Use this for questions like "which deadlines do I have this week". For the deadlines of one specific case use get_deadlines_for_case. The result is paged. Narrow with days before paging, and read total_count / has_more to decide whether to fetch the next page rather than pulling everything.
get_open_deadlines
Get the open tasks assigned to the current user or their groups. The result is paged: this can be a large backlog (hundreds or thousands of tasks). Read total_count / has_more and fetch further pages only when you actually need them, rather than pulling everything at once.
get_open_tasks
Get all notes (Aktennotizen) written on a specific case. The counterpart to create_note: use this to read what has already been noted on the case, e.g. before adding a note or to summarise the file's history. Notes are free text written by the team — phone calls, internal remarks — and are separate from documents and messages.
get_notes_for_case
Get all outgoing messages (mail, beA, ...) for a specific case.
get_outgoing_messages_for_case
Send case documents to a recipient (creates an outgoing message and a review task in JUNE — this WRITES data and triggers a workflow).
process_dispatch_document
Read the DocFacts JUNE extracted from one document, as readable pairs. DocFacts are the structured values pulled out of the document (dates, amounts, parties, reference numbers, …). Use after azure_search or get_all_documents_for_case gave you a document_id. For the raw document text use get_document_content instead.
get_document_facts
Get the plain extracted text of ONE document (no metadata). Lighter than get_documents_by_ids when only the text is needed. For locating passages inside a large document, prefer document_vector_search.
get_document_content
The cases you (the current user) opened most recently, newest first. Use this for "which cases was I just working on" or to pick up where you left off, without knowing a reference number. For the cases matching a value use search_cases_by_casefact; for one specific case use get_case_context.
get_recent_cases
Search for cases where a specific CaseFact field matches criteria. Use this to find cases by CaseFact values, e.g. finding all cases with a specific Schadennummer or Aktenart. For fieldgroup CaseFacts (table-like fields with rows and columns), set is_fieldgroup=True and provide sub_field_name (GUID key of the column/subfield to search within).
search_cases_by_casefact
Search contacts by name, e-mail or any other contact field. Use get_contact afterwards for the full details of one match.
search_contacts
Find relevant text passages within a single document using semantic similarity (RAG). Perfect for locating specific topics, clauses, or concepts in large documents. Returns the best matching passages with precise page numbers and scores.
document_vector_search
Step 1 of uploading a LOCAL file into a case: get an upload target. Returns a short-lived upload URL. Upload the local file to it with an HTTP PUT, sending EVERY header from `required_headers`, e.g.: curl -X PUT -H "x-ms-blob-type: BlockBlob" \ -H "Content-Type: application/octet-stream" \ --data-binary @/path/to/file "<upload_url>" Then pass the returned `handle` to finalize_document_upload. Send the file as raw bytes (--data-binary, not -d/--form). Omitting Content-Type makes the client default to a form content type, and the platform firewall then parses the file as form data and answers 403. FILENAME RULES: use only letters, digits, spaces, dot, hyphen and underscore — no parentheses or other special characters; the platform firewall rejects those with HTTP 403 (rename "Klage (v2).pdf" to "Klage - v2.pdf"). THREE THINGS ANSWER 403 HERE, and the fix differs. The URL is valid only until "expires_utc": past that timestamp, call this tool again for a fresh target — renaming the file or changing headers cannot help. Before that timestamp, a 403 means the filename or the headers.
request_document_upload
Get all tasks for a specific case.
get_tasks_for_case
Get upcoming appointments across ALL cases (today and later). Use this for questions like "which court dates are coming up" — filter court appointments via the type ID from get_value_list("AppointmentTypes"). For the appointments of one specific case use get_appointments_for_case. The result is paged; read total_count / has_more to decide whether to fetch the next page rather than pulling everything.
get_upcoming_appointments
Update core data of an existing case (WRITES data in JUNE). Only the fields you pass are changed; values cannot be cleared back to empty. The case reference number (Aktenzeichen) and the mandate are deliberately NOT editable here. WARNING: archiving does NOT check for open deadlines, appointments or tasks — check get_deadlines_for_case and get_tasks_for_case first and ask the user before archiving a case that still has open items. Archiving also makes the case read-only.
update_case
Update a CaseFact value in the database for a specific case. This tool updates a CaseFact in the database using the GUID key from the schema. The value should already be validated and formatted using the format_casefact_value tool before calling this.
update_casefact
Change existing DocFact values on one document (WRITES data in JUNE). Pass {field: new_value}, where field is the fact's label (or key) exactly as get_document_facts returns it — read that first to get the labels. The write is all-or-nothing: if any field is unknown it is rejected and nothing changes. Only existing single-value facts can be set. Grouped facts (line items), creating new facts, and documents without a case are not supported here.
update_document_facts
Update an existing appointment, e.g. reschedule it (WRITES data). Only the fields you pass are changed; everything else keeps its current value. Find the appointment via get_appointments_for_case or get_upcoming_appointments. Type, case and attendee are deliberately not editable here — delete and recreate the appointment instead.
update_appointment
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.