- Brand
- BIA Edge
- Category
- Operations
- Primary Subcategory
- Legal Research Engines
Integration details
Description
Passim AI gives ChatGPT access to a U.S. immigration-law research database. Search case law, statutes and regulations, agency policy, and unpublished BIA and AAO decisions; retrieve source text; and inspect ImmCite citation-treatment data. Additional tools cover criminal-code provisions, visa bulletins, EOIR statistics, and corpus coverage. Results include available source links and research limitations. Access requires a Passim AI account authorized to use the service. Passim AI provides research materials, not legal advice or a guarantee of an authority's validity; users must verify primary sources.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Legal Research Engines
- Secondary Subcategories
- None listed
- Brand
- BIA Edge
- Access
- Account required
- First tracked
- 2026-08-08
- Tool count
- 35
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Passim AI
Get updates when Passim AI’s Discoverability Score or category rank changes.
Competing in ChatGPT Legal Research Engines
View Category35 tools agents can invoke
Fetch a structured record by a search/exact-lookup item ID. Use this after search tools return case:, unpublished:, reference:, statute:, regulatory_update:, library-opinion:, state_code_archive_version: or criminal_code_version: IDs and you need metadata plus available text; get_document(include='text') reads a case by numeric document_id, and get_*_by_citation comes first for a known citation. Case records carry metadata.propositions (statements of law with literal source excerpts, bounded by propositions_limit); a proposition is never a validity signal, so use check_validity. Case text pages hold up to 30000 characters (continue with text_offset); a page over meta.response_budget_bytes returns fewer propositions and meta.next_call.
fetch
Find pinpoint snippets inside an already identified reference section. Use this after search_references or get_reference_by_citation. Use fetch when you need fuller section text. Default results are compact and overlap-deduped; explicitly raise around_chars or limit for expansion.
find_in_reference
Find pinpoint snippets inside an already identified statute or regulation. Use this after search_statutes, get_statute_by_citation, or fetch(statute:...). This also accepts criminal-code provision IDs returned by lookup_criminal_code. Use get_statute, fetch, or the criminal-code provision tools when you need fuller source text. Default results are compact and overlap-deduped; explicitly raise around_chars or limit for expansion.
find_in_statute
Resolve a known case from the live corpus before relying on it, then use check_validity for central or dispositive authority. Resolve a known case citation, parallel citation, or ``Case Name, citation`` string. Citations are read as lawyers write them (pin pages, "at" short forms, F. App'x and slip cites, docket numbers with the court, Westlaw and Interim Decision numbers, AAO file IDs); subsequent history after the cite is set aside. metadata.citation_check reports what was read and any court, date, citation or pin page that disagrees with the record. If the immigration corpus does not resolve the citation, retry with library_scope="national_library" and the reporter citation, alone or as ``Case Name, citation`` (the name confirms or narrows; metadata.name_check). National results expose competing cases and separate opinions: choose a library-opinion ID and use fetch; their treatment is unassessed and they cannot be used in validity tools. Use this before search_cases when a citation is known. A bare caption such as ``Matter of Silva-Trevino`` lists the stored decisions as candidates. Then use the numeric document_id for check_validity, get_citations or source-text tools. Every resolved record carries validity_status with its status_meaning (treatment_available is history, not clearance); an adverse status adds a warning, and check_validity holds the evidence. metadata.cited_by_count is a materialized index count; get_citations reports the live index.
get_case_by_citation
Browse compact citation lists with historical treatment labels and separate current warnings. Lists live once in records[0].metadata.citation_pages. Request a row's related_document_id and a single direction for full evidence for that pair. Follow any result with get_document or another get_citations call. Each direction has its own next_cursor; continue with that single direction and the same filters until has_more is false. Page size is bounded for clients. A case's treatment of this authority is separate from its own current warning. Counts cover the stored public index, not all cases ever decided.
get_citations
Report corpus coverage, freshness, and inventory metadata for routing decisions. Use this before time-sensitive, current-policy, recent-case, unpublished, or visa-bulletin research, and to discover category slugs, source codes and corpus-wide counts. It is a planning check, not a source retrieval tool. The default summary is compact; view="detail" with section/limit/ offset pages a freshness section, and section='categories', 'sources' or 'database_stats' serve inventory. Every response also carries national_library, the separate national case-law library's snapshot and size (other counts exclude it).
get_corpus_info
Get one state or federal criminal-code provision's text and metadata. Use this after lookup_criminal_code returns a provision_id; the provision's own jurisdiction determines the response, so no jurisdiction parameter is needed. Pass offense_date or conviction_date for stored historical text; offense_date takes precedence. Read version_status and coverage/review warnings. Repeat the same dates and citation when following next_offset.
get_criminal_code_provision
Get metadata and extracted text for a federal district court decision. Use the document_id from search_district_court_decisions or search_cases; max_chars is clamped to 1000-50000.
get_district_court_decision
Read a resolved case from the live corpus by document_id: its record and ImmCite status, full text, or propositions. Get a case/document by database ID: metadata, full text, and/or propositions. include='metadata' (default) returns case name, citation, date, deciding body, summary, source, court, outcome (for precedents the final disposition; outcome_direction_label says who prevailed), word count, and the ImmCite status with its status_meaning and reason (ImmCite does not certify that a case is valid; check_validity serves the evidence card and its quotes). When the case has propositions, metadata.propositions carries them: statements of law with their literal source excerpt and offsets, one status (proposition type and controlling status) and flags. A proposition is never a validity signal; use check_validity, which also accepts the statement as proposition_key. include='text' returns the full decision text (truncated to max_chars; page with next_text_offset); include='propositions' returns them as a readable record. A page that would exceed meta.response_budget_bytes returns fewer propositions, controlling ones first, and meta.next_call. metadata.cited_by_count is a materialized index count; get_citations reports the live index.
get_document
Return one EOIR judge's or court's descriptive statistics profile with denominators. This is an analytics primitive: it surfaces metrics, denominators, source hash, and caveats. It does not provide legal strategy, forum-shopping guidance, or judge predictions.
get_eoir_profile
Fetch the next ranked tranche of an earlier search. Use this when a search response reports meta.has_more with a meta.next_cursor token: it continues the same ranked list where the previous window ended. Case-search continuations read a retained ordering and refresh treatment warnings (caution or null); a missing warning does not establish good law. It never changes the query; to search differently, call the search tool again. search_cases also continues without a token: repeat it with offset=meta.next_offset and the same query and filters. Depth is capped at rank 100 (deeper tails are low-relevance); an expired or edited cursor returns a coded error, so re-run the original search.
get_more_results
Rank immigration cases by citation count within the Passim AI corpus. This is a corpus citation-count ranking, not an editorial judgment that a case is legally controlling, important, or still good law.
get_most_cited
Fetch exact evidence spans returned by search_passages or search_cases. When a search_cases record carries metadata.span_id, pass it here to read the selected excerpt in its source context; otherwise search_passages or get_document serve the text. Revision-addressed spans keep the original source and report whether that revision is current. When a span's case has propositions, a top-level propositions list (one block per document, bounded by propositions_limit) lets the span be read against them; propositions are never validity signals, so use check_validity. Each span's opinion_part names the opinion it belongs to (part_type "unknown" when not established). An opinion role does not establish that a statement is a holding; verify it in context.
get_passages
Find state opinions citing a statutory provision and exact subsection. Returns source-bound pinpoint passages and official/document links. Links identify citation mentions; interpretive significance remains unreviewed. State authority is not immigration precedent and has no ImmCite treatment. First use lookup_criminal_code/get_criminal_code_provision with offense_date or conviction_date for the applicable stored statute text and coverage limits. Opinions do not automatically apply the statutory version at decision date.
get_provision_case_law
Get full text for a reference-section record. Use the reference_id from search_references or get_reference_by_citation; section selects one heading of a long reference, and a truncated response continues with next_text_offset.
get_reference
Resolve a known USCIS, FAM, form-instruction, or practice-reference citation. Use this before search_references when the citation or source label is known. Use find_in_reference for pinpoint snippets or fetch for larger section text after a reference is resolved.
get_reference_by_citation
topic= narrows recent immigration-law changes to a subject; check it whenever timing may affect the answer. topic takes a known subject (detention, asylum, parole, tps, public charge, waivers, criminal grounds, motions to reopen), a statute section such as 212(a)(9), or free-text terms that must all appear; update_type and source select kinds and sources (meta.selector_vocabulary lists them). The feed includes new BIA/AG decisions, CFR amendments, policy manual updates, Federal Register notices and presidential documents, State Department visa announcements, and Supreme Court docket orders in cases the litigation tracker follows. Each record is a summary; fetch(item_id= source_id) reads the full text. meta.window_start reports how far back the window reached, so an empty result says what it covered. topic, update_type and source filter before the candidate window is filled, so unrelated notices cannot hide older matches; include= admits material excluded by default. Continue with meta.next_cursor.
get_regulatory_updates
Get the Passim AI legal-research playbook to follow for serious research. Fetch and follow deep_research_method before filing-facing work: legal memos, briefs, authority packets, RFE/NOID support, crimmigration screens, or any research where a wrong answer creates filing or malpractice risk. Fetch unpublished_routing before searching unpublished BIA/AAO decisions, authority_taxonomy when classifying authority, research_method for the overall method, and tool_routing for the complete tool-by-tool map with each parameter's full semantics. Returns the requested section as markdown. The playbook is methodology, not law: it tells you how to research and present authority, and the direct source tools remain the only source of legal content. Follow it yourself; the server does not synthesize final legal work product.
get_research_playbook
Get the full text of a specific statutory or regulatory provision.
get_statute
Resolve governing INA, USC, or CFR text from the live corpus before stating the rule. Resolve a known INA, USC immigration, or CFR citation. Use this before search_statutes when the citation is known. Use lookup_criminal_code(jurisdiction='federal') for Title 18 and other federal criminal-code provisions instead of treating a statute search miss as absence. Uncodified statutory notes also resolve by their enacting public-law citation or a verified act name (e.g. "USA PATRIOT Act § 411(c)"); such matches carry metadata.alias_resolution.
get_statute_by_citation
Return Visa Bulletin priority dates loaded in Passim AI, or check one priority date. Without priority_date, returns one bulletin-table record (omit month/year for the latest loaded bulletin, or provide both for a historical month): the record text is the full markdown table, and metadata.columns/rows carry the same data with final-action and dates-for-filing cells as ISO dates or Current / Unavailable / Not Published; metadata.uscis_chart_designations maps categories to the USCIS-accepted chart. category and chargeability narrow the table. With priority_date plus category and chargeability, answers whether that date is available under the selected chart. Use this for stored priority-date research, not case-law research; call get_corpus_info or verify official Department of State sources when the latest bulletin timing matters.
get_visa_bulletin
List the organized district-court decision families and live corpus counts. Use this before district-court MCP searches when you need to choose a practitioner-facing corpus slice. The listed decisions are nonprecedential federal district court decisions and are persuasive only.
list_district_court_decision_families
Search state or federal criminal-code provisions for crimmigration research. Use this before categorical-approach analysis to find the statute of conviction by citation, section number, title, or text. Results carry source status and text. State coverage varies; a miss does not prove an offense absent. search_statutes is the immigration lane. With a date, state keywords search historical titles/text, including archive-only sections; follow meta.next_call for more matches and fetch(source_id) for an exact historical snapshot. Exact citations select dated versions; repeat dates/citation for next_offset or get_criminal_code_provision. Read version_status and warnings: annual editions are not effective-date proof, and current screening labels do not classify historical offenses.
lookup_criminal_code
Lookup current USCIS/EOIR form-page and form/instruction PDF records. EOIR-numbered forms (EOIR-26, EOIR-28, EOIR-33/IC, EOIR-42B, ...) route to the eoir_forms immigration-court/BIA catalog; all other numbers route to the uscis_forms catalog. Snippets are compact; read full source text with get_reference or find_in_reference and the returned reference_id.
lookup_uscis_form
Query EOIR statistics rollups as descriptive analytics data. This read-only primitive returns facts, denominators, filters, and caveats. It intentionally does not produce legal strategy, judge predictions, or recommendations.
query_eoir_stats
Review identified treatment of central or dispositive cases in the live ImmCite records before relying on them. ImmCite statuses (each record repeats its own as status_meaning): caution = adverse or limiting treatment found; negative = negative treatment found; overruled = overruled; vacated = vacated or withdrawn; reinstated = earlier adverse treatment undone; unchecked = no stored status, not evidence either way; treatment_available = history exists, not clearance; unchecked_no_treatment_data = eligible, no treatment row; not_applicable = outside the precedential ImmCite corpus. Search shows caution for adverse treatment, superseded_in_same_matter when that is the same matter's later decision, otherwise no label; no warning is not good law. Treatment filters: all, positive, negative, distinguishing, overruling; entries keep their stored relationship_type. Review identified ImmCite treatment and source evidence for a resolved case document_id. It does not certify that a case is valid: read metadata.status_reason and the entries in metadata.treatments (adverse first; the published status's own evidence case is pinned first with status_evidence true) before relying on an authority. treatment_available_count and treatment_omitted_count report the window; meta.next_call is the directly callable continuation. metadata.freshness dates the answer: status_computed_at, latest_citing_date, citation_index (citing decisions no treatment entry covers, newest five), corpus reach for the subject's source, and newer_citing_call; none of these proves nothing newer exists outside the corpus. A warning counts unreviewed precedential citing decisions, and metadata.review_coverage.unreviewed_highest lists the highest-ranking; review them before relying on the status. document_ids (up to 10) returns compact summaries; follow each metadata.detail before relying on one.
check_validity
Generic structured search across corpora for clients without a routing step. Case results carry validity_status "caution" for identified adverse treatment, "superseded_in_same_matter" when the only reviewed treatment is the same matter's later decision, and otherwise null; no warning is not good law, so use check_validity. Reference searches run the sources the query names as their own lanes, then sweep other eligible guidance sources. Coverage metadata names excluded collections. Results stay bounded by limit, so check get_corpus_info(section='sources') before calling a source absent. EOIR statistics are separate: discover codes with get_corpus_info(section='eoir', query=...), then query_eoir_stats.
search
Investigate the live immigration case-law corpus for controlling, adverse, limiting, and recent authority. For state opinions, use source='state-criminal-courts' with a state; for opinions citing a criminal statute, use get_provision_case_law with the state and provision. Search case law held in the Passim AI corpus. Use this for names, concepts or keywords; a known citation goes to get_case_by_citation first. The default library_scope searches the immigration corpus. When it does not answer the question, broaden with library_scope="national_library": national results are grouped by case, keep separate opinion IDs, have unassessed treatment, and are read with fetch only (never validity tools). A national query that reads like a caption is matched against case titles first (metadata.match_type case_name); otherwise every word must appear in the opinion text (OR, NOT, quotes and parentheses accepted). Results show caution for identified adverse treatment, superseded_in_same_matter when the only reviewed treatment is the same matter's later decision, and otherwise no label. No warning is not good law; use check_validity for the treatment and its source evidence. source=bia-unpublished or aao returns that source's decisions in records. Otherwise include_unpublished_agency=true or precedential_status=unpublished adds up to five decisions in unpublished_agency_records beside primary results. meta.sections preserves source-section counts; meta.result_count counts records.
search_cases
Search asylum country-condition reports. Searches State Department human rights, religious freedom and trafficking reports, USCIRF reports, UK Home Office country notes, Canadian IRB responses to information requests and EUAA country-of-origin reports.
search_country_conditions
Search nonprecedential federal district court immigration decisions. Use this for written federal district judge opinions and orders, including mandamus / agency-delay, immigration habeas, naturalization, USCIS benefits APA review, consular/visa, immigration FOIA, and other civil immigration decisions. The 'mandamus' category is a posture-based lane across subject families. These decisions are persuasive only and are kept out of ordinary precedential search unless district-court material is explicitly requested.
search_district_court_decisions
Search EOIR immigration judges and return descriptive rollup statistics. This is an analytics primitive. It surfaces denominators, filters, source hash, and caveats; it does not rank judges for case strategy or make judge predictions. When court_code is supplied, returned list metrics are scoped to detail rollups at that court; use get_eoir_profile for career-wide context.
search_eoir_judges
Find pinpoint source passages in the live corpus for a proposition, with stable span IDs and offsets, before quoting a case. Search materialized source-text spans and issue units. Each record is a span with a stable span_id, offsets, source text, authority, opinion_part and match_reasons; meta carries result_count, result_window, query_analysis, retrieval and, with expected_page, pin_check. Use this before fetching full cases when you need pinpoint support for a proposition. A statutory citation in the query (237(a)(2)(A)(iii), section 240A) must appear in every returned span; generic words such as under, section and act are ignored. AAO non-precedent spans are returned only with authority_scope='all'. Where the stored text carries page markers, each span carries a ``page`` label ("26 I&N Dec. 551", "slip op. at 3") with its confidence; edge labels are inferred. A span's opinion_part names the opinion it belongs to (part_type "unknown" when not established). An opinion role does not establish that a statement is a holding; verify it in context.
search_passages
Search USCIS, FAM, practice manuals, UNHCR Handbook/guidelines, and asylum officer training. Use this for policy or guidance issues when the exact citation is unknown. Use get_reference_by_citation for known references and find_in_reference or fetch for pinpoint source text after a reference section is identified. Unfiltered searches run the sources the query names as their own lanes, then sweep other eligible guidance sources in one lane. Coverage metadata names excluded collections; these need a source-specific query, source_code, or (for State Department country reports) search_country_conditions. Results stay bounded by limit, so use get_corpus_info(section='sources') to check coverage before claiming a source is absent.
search_references
Search INA, USC immigration, and CFR statute/regulation provisions. Use this when the exact citation is unknown or the request is conceptual. Use get_statute_by_citation first for a known INA/USC/CFR citation. Use lookup_criminal_code(jurisdiction='federal'), not this tool, for Title 18 and other federal criminal-code provisions. A separate note_records section lists up to 3 uncodified statutory notes (public-law text printed as notes under U.S. Code sections) whose text matches the query but that are not in records; notes can be spent or superseded, so confirm current effect.
search_statutes
Search unpublished BIA and AAO agency decisions. This lane covers unpublished Board removal decisions and AAO administrative appeals only; nonprecedential circuit dispositions are court authority and rank in search_cases (source='circuit-courts', circuit=, precedential_status='unpublished'). Use it for non-binding candidate support after controlling authority is framed, and source-text check candidates with fetch before relying on them. For a primary unpublished lane pass an explicit source; unscoped results are candidates only, not completed legal research.
search_unpublished_cases
Passim AI ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Passim AI's ChatGPT Plugin 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.
What are Passim AI alternatives on ChatGPT?
As of 2026-11-02, Passim AI competes with Accords AF Recherche, Adminio LEX, Advoga IA, AI Attorney Pakistan, AI Lawyer Kazakhstan, AI Rechtshulp, AiLexLux Legal, AL WAKEELO and 104 more in ChatGPT Legal Research Engines, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.