Integration details
Description
BIA Edge helps users research U.S. immigration law in ChatGPT by retrieving case law, statutes and regulations, agency policy, unpublished decisions, validity and citation treatment, visa bulletins, EOIR statistics, doctrine data, and criminal-code text. Its 42 tools are read-only and return source-grounded records and warnings for the model to evaluate. It does not provide legal advice.
- 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
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for BIA Edge
Get updates when BIA Edge’s Discoverability Score or category rank changes.
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

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:, or revision-bearing library-opinion: IDs and you need metadata plus available text. Use corpus-lane get_document (include='text') when you need raw local document source text by numeric document_id; use get_*_by_citation first when starting from a known citation. Case records carry metadata.propositions (statements of law with literal source excerpts, bounded by propositions_limit) plus a propositions_note when the case has propositions; propositions are never validity signals, so use check_validity to review identified treatment and source evidence. Absence of a warning does not establish good law. Case text pages hold up to 30000 characters (continue with text_offset); a case response that would exceed meta.response_budget_bytes returns fewer propositions, controlling ones first, and meta.next_call for the rest.
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. The default searches the primary immigration corpus. If it does not resolve the citation, retry with library_scope="national_library" and the reporter citation, alone or as ``Case Name, citation``; there the name only confirms or narrows what the citation returns (metadata.name_check). National results expose competing cases and separate opinion roles; choose a library-opinion ID and use fetch. National legal treatment is unassessed; those IDs cannot be used in validity tools. Use this before search_cases when the user gives a reporter/admin citation. Bare party-name captions such as ``Mellouli v. Lynch`` are not exact citation lookups; use search_cases for those. After this returns a record, use the numeric document_id for check_validity, get_citations, or corpus source-text tools. metadata.cited_by_count is the materialized public-index count (cited_by_count_scope names its source and cited_by_count_as_of its refresh time); 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 valid category slugs, source codes, and corpus-wide counts. It is a planning/inventory check, not a source retrieval tool. The default summary view is intentionally compact; use view="detail" with section/limit/offset for bounded freshness pages, or section='categories'/'sources'/'database_stats' for corpus inventory. Every response also carries national_library: the separate national case-law library's snapshot, size and how to reach it (counts above 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. Args: document_id: The document ID from search_district_court_decisions or search_cases max_chars: Maximum extracted-text characters to return (default 12000, max 50000)
get_district_court_decision
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, word count, and ImmCite treatment details (a status with its status_meaning; ImmCite does not certify that a case is valid). For published precedents, outcome is the final disposition (a government appeal reads dhs_appeal_sustained or dhs_appeal_dismissed) and outcome_direction_label says who prevailed; no label means the disposition was not established. When the case has propositions, metadata.propositions carries them (proposition text, literal source excerpt with offsets, proposition_type, controlling_status, risk_flags, qualifications, and a validity_label) plus a propositions_note; propositions are never validity signals, and validity_label reads "Validity not yet assessed" until ImmCite assesses the point (use check_validity). include_propositions=false omits them; propositions_limit bounds them (default 25). include='text' returns the full extracted decision text (truncated to max_chars; page with next_text_offset) when you need to read the decision itself. include='propositions' returns the propositions as a readable record; a decision whose propositions are not written yet returns an empty section. Combine sections with commas. A page that would exceed meta.response_budget_bytes returns fewer propositions (controlling ones first) and meta.next_call, the directly callable continuation. metadata.cited_by_count is the materialized public-index count; cited_by_count_scope and cited_by_count_as_of say where and when it was computed, and 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 result list where the previous window ended. Green searches read a retained bounded ordering and refresh treatment warnings (caution or null); a missing warning does not establish good law. Lost windows require a fresh search. It never changes the query — to search differently, call the search tool again. Continuation depth is capped (rank offset 100) because deeper ranked tails are low-relevance; an expired or edited cursor returns a coded error and the original search must be re-run for a fresh cursor.
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. Args: source: Filter by source: 'bia', 'aao', 'ag', 'circuit-courts' limit: Max results (default 25)
get_most_cited
Fetch exact evidence spans by IDs returned from search_passages. When a returned span's case has propositions, the response also carries a top-level propositions list (one block per document with the propositions, a propositions_note, and counts, bounded by propositions_limit) so the span can be read against the case's propositions. Propositions are never validity signals; use check_validity to review identified treatment and source evidence. Absence of a warning does not establish good law. Args: span_ids: Span IDs such as case:123:corpus_block:789, case:123:issue_unit:456 or historical case:123:block:789. include_propositions: Attach per-document propositions blocks (default true). propositions_limit: Maximum propositions per document; clamped to 1-100 (default 25).
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. Args: reference_id: The reference section ID (from search_references results) max_chars: Max characters of full text to return (default 15000) section: Optional heading/subsection title to retrieve from a long reference text_offset: Character offset into the returned view (the section, or the selected subsection) at which the text starts; continue a truncated response with its 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
Check recent BIA/AG decisions, CFR and Federal Register changes, and USCIS policy updates whenever timing may affect the answer. Get recent regulatory and policy changes in immigration law. Includes new BIA/AG decisions, CFR amendments, policy manual updates, and Federal Register notices. meta.window_start reports the earliest timestamp the window reached, so an empty result says how far back it looked. topic accepts a known topic name (the litigation-tracker topics plus doctrinal topics such as unlawful presence, adjustment of status, waivers, criminal grounds, cancellation of removal, motions to reopen, in absentia, voluntary departure, fraud, credibility, representation, and national interest waiver) or free-text terms that must all appear as whole words; a statute section such as 212(a)(9) works as a term, and generic agency words are ignored with a warning naming the terms used. Rows that cannot match the topic are excluded in the database before the candidate window is filled, so unrelated notices cannot hide older matches. update_type and source filter in the database; include_* flags admit 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. Fetch authority_taxonomy when classifying binding vs. non-precedent authority. Fetch research_method for the overall method: request-mode classification, operating principles, research floors, validity-check discipline, memo structure, and citation rules. Fetch tool_routing for the complete tool-by-tool routing map. 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. Args: section: Which playbook section to return (default research_method).
get_research_playbook
Get the full text of a specific statutory or regulatory provision. Args: provision_id: The provision ID (from search_statutes results)
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. 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 include official-source status, parser/ingestion status, and the text for the best match when available. State coverage is penal-title-only for some states, so a miss is not proof a state offense does not exist; the empty response lists the official source records Passim AI holds. search_statutes is the immigration statute/regulation lane and is not proof of criminal-code absence. Use get_criminal_code_provision after lookup when you need one provision's full text and metadata. Dates select stored historical text. Historical-only sections also accept exact archive citations, such as 'MS § 97-1-1' or 'Me. Rev. Stat. tit. 17, § 1', with a date; edition-year coverage is not proof of effective dates. Historical keyword search is not covered. Repeat the same dates and citation when following next_offset.
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. Args: form_number: USCIS or EOIR form number such as I-751, I-485, N-400, EOIR-28, or EOIR-42B. max_chars: Maximum source snippet characters per returned source. Defaults compact; use returned reference_id values with get_reference or find_in_reference for full source text.
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, otherwise no label; no warning is not good law. Treatment filters: all, positive, negative, distinguishing, overruling; entries keep their stored relationship_type, and status_evidence marks the status's own evidence case. 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. metadata.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 with links), corpus reach for the subject's source, and newer_citing_call (get_citations for anything decided since); none of these proves nothing newer exists outside the corpus. A warning names unreviewed precedential citing decisions; review them before relying on the status. document_ids (up to 10) returns compact summaries; follow each metadata.detail before relying on one. proposition_key with document_id runs an exact proposition-keyed query.
check_validity
Generic structured search for ChatGPT/Codex MCP clients. Case results expose validity_status="caution" for identified adverse treatment, otherwise null. Absence of a warning does not establish good law. Use check_validity for precise treatment, affected issues, and source evidence. Detail-only coverage states include unchecked, unchecked_no_treatment_data, and not_applicable. Reference searches examine selected sources. Use get_corpus_info(section='sources') for coverage and search_references with source_code to target a specific source. Args: query: Search text. corpus: all, cases, references, statutes, unpublished, categories, or national_library. limit: Maximum results per requested corpus (1-25).
search
Investigate the live immigration case-law corpus for controlling, adverse, limiting, and recent authority. For state opinions, use source='state-criminal-courts' and a required state; names, citations, and keywords search PostgreSQL. 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. Default library_scope="primary" searches the immigration-focused corpus. When primary results do not answer the question, deliberately broaden with library_scope="national_library" for nationwide keyword fallback. National results are grouped by case, retain separate opinion IDs, and have unassessed legal treatment. Fetch their library-opinion IDs with fetch; do not pass those IDs to primary-corpus validity tools. Known citations use get_case_by_citation. A national query that reads like a caption (Miranda v. Arizona, In re Gault) is matched against case titles first, most-cited first (metadata.match_type is case_name); the rest is keyword search of opinion text, where every word must appear (OR, NOT, quoted phrases and parentheses are accepted). Results show caution for identified adverse treatment, superseded_in_same_matter when the only reviewed treatment is the same matter's later final decision (an Attorney General referral order), and otherwise no validity label. Absence of a warning does not establish good law. Use check_validity for precise treatment and source evidence. Use this for names, concepts, or keywords when there is no known citation. Use get_case_by_citation first for a known citation, then bridge central local cases to document_id for check_validity or corpus source-text tools.
search_cases
Search asylum country-condition reports. Searches State Department Country Reports on Human Rights Practices, International Religious Freedom Reports, and Trafficking in Persons reports after those sources are loaded into the reference corpus. Args: country: Optional country name, e.g. "Afghanistan" or "Mexico" query: Optional issue terms, e.g. "political opinion", "FGM", "police torture" report_type: Optional type: hrr/human_rights, irf/religious_freedom, tip/trafficking, or all year_from: Optional earliest report year to include year_to: Optional latest report year to include. Omit to search through the newest loaded report year. limit: Max results
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. Args: query: Search text - issue, agency, party name, docket number, or keywords decision_category: Optional corpus slice, such as 'mandamus', 'habeas', 'naturalization', 'benefits', 'consular', 'foia', 'u_visa', or 'other' court: Optional district court code, such as 'txsd', 'txnd', 'cacd', 'dcd', or 'nysd' date_from: Start date (YYYY-MM-DD) date_to: End date (YYYY-MM-DD) limit: Max results (1-50, default 20)
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
Search materialized source-text spans and issue units. Returns compact evidence records with stable span IDs, offsets, source text, authority metadata, and match reasons. Use this before fetching full cases when the agent needs 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 paragraph spans are retrieval-only persuasive support and are returned only when authority_scope='all' is selected; the default precedential scope keeps them out of binding-law searches. When the stored text carries page markers (BIA and Supreme Court page numbers, reporter star pagination, slip-opinion page headers), each span also carries a ``page`` label such as "26 I&N Dec. 551", "546 U.S. 245" or "slip op. at 3", with its basis and confidence; labels at the edges of a text are inferred, and spans without markers carry no page. Args: query: Legal terms, factual phrase, statutory phrase, or quoted language. source: Optional source filter such as bia, ag, aao, circuit-courts, scotus. document_id: Optional document ID to search within one authority. authority_scope: all, precedential, or binding. Default excludes known nonprecedential material. granularity: passage for source-text paragraphs, issue for accepted proposition evidence, or all. limit: Maximum spans to return, up to 50. expected_page: Pin-cite page to verify against the inferred page labels; adds pin_check.
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 examine selected sources, not the entire reference corpus. Use get_corpus_info(section='sources') to check coverage before claiming a source is absent.
search_references
Investigate governing INA, USC, and CFR text when the exact citation is unknown. 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 agency decisions only: unpublished Board removal decisions and AAO administrative appeals. Nonprecedential circuit dispositions are court authority and rank in the ordinary case search -- call search_cases with source='circuit-courts' (or 'circuit-unpublished'), circuit=, and precedential_status='unpublished' for those. Use this for non-binding candidate support after controlling authority is framed, and source-text check candidates with fetch or corpus text tools before relying on them. favorable_only=true restricts results to decisions whose stored direction verifies the immigrant won or DHS/USCIS lost; the tag is derived metadata, so verify direction against source text. For a primary unpublished lane, pass an explicit source; unscoped or inferred-source results are candidates only and must not be treated as completed legal research.
search_unpublished_cases
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.
What are BIA Edge alternatives on ChatGPT?
As of 2026-09-28, BIA Edge competes with AI Attorney Pakistan, AL WAKEELO, Alizé, Appealbase, Açık Silivri Havadis, Bizora Tax Research, CiteCheck, CiteLaw, Clio, CourtListener, Craime, Descrybe Legal Engine, DirectCase Legal Research, eCFR by 1102tools, ElevenFlo, F-AI Contract Template Finder, Folium Jurisprudencia Chilena, Fontis, GovQuery, GovScanner, Harvey, IAJUS, IFG, Juridata, JurisAI-ICIDA, Lawstronaut, Legal Data Hunter, Legalcode, LegisGraph, LegisRatio, Letra da Lei, Lexgraph, Lexiara, Lexplorer Swiss Tax Research, LeyNova, LibreJustice, MAK Immigration Source Guide, Midpage Legal Research, Nylon, OpenRegs: Regulatory Research, Policy Doctor, realLaw AI, Red Judicial, Remedy Legal, Simpliciter AI, Special Education Law, TaxGraph, TaxMCP, Tesea, Trellis Law, Trifolia, UniCourt, Vasara, Vitark 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.