Back to Use Cases
Linkup

How to power legal agents with Linkup

Enable legal AI agents to search regulatory updates, public filings, legal news, and authoritative sources in real-time, complementing traditional legal research tools.

Overview

Legal AI agents need access to constantly evolving information—new regulations, recent case law, company filings, and authoritative legal sources. Unlike static legal databases, Linkup enables agents to search across the open web for regulatory updates, public filings, legal news, and authoritative sources in real-time, complementing traditional legal research tools.

Why Linkup for legal agents?

deep search

Find regulatory sources, then scrape full text for complete context

structured output

Returns legal information in formats agents can parse and cite

fromDate filtering

Surface recent regulatory changes and case developments

includeDomains

Ensure agents only cite authoritative sources

Configuration

Recommended settings for legal research

ParameterValueWhy
depthdeepLegal research requires finding sources, then extracting detailed content
outputTypestructuredLegal agents need structured, citable information
includeDomainsauthoritative sourcesCritical for legal accuracy and citation integrity
fromDatebased on needsEssential for tracking regulatory changes

Use Cases

Practical examples with prompts and schemas

1

Regulatory Monitoring

Track new regulations, proposed rules, and regulatory guidance across jurisdictions.

Prompt- regulatory-monitoring
You are a regulatory research assistant monitoring for legal updates.

Regulatory area: {regulatory_area}
Jurisdictions: {jurisdictions}
Agencies to monitor: {agencies}

Search for recent regulatory developments including:

1. New final rules and regulations published
2. Proposed rules open for comment
3. Regulatory guidance documents and interpretations
4. Enforcement actions and policy statements
5. Agency announcements and press releases

For each item found, extract:
- Title and citation (if available)
- Issuing agency
- Publication/effective date
- Summary of key provisions
- Compliance deadlines (if any)
- Link to official source

Prioritize official government sources (.gov domains).
Exclude news commentary—return only primary regulatory sources.
regulatory-source-domains.json (example)
{
  "includeDomains": [
    "federalregister.gov",
    "regulations.gov",
    "sec.gov",
    "ftc.gov",
    "fda.gov",
    "epa.gov",
    "dol.gov",
    "treasury.gov",
    "justice.gov",
    "hhs.gov",
    "consumerfinance.gov",
    "occ.gov",
    "fdic.gov",
    "federalreserve.gov"
  ]
}
json
2

Company & Entity Research

Research companies, verify entity information, and find public filings.

Prompt- entity-research
You are a legal research assistant gathering entity information.

Entity name: {entity_name}
Entity type: {entity_type}
Jurisdiction of incorporation: {jurisdiction}

Execute the following research steps:

1. Search for the company's official registration information:
   - State/country of incorporation
   - Registration/file number
   - Date of incorporation
   - Registered agent
   - Business address

2. Search SEC EDGAR (if US public company) for:
   - Recent filings (10-K, 10-Q, 8-K)
   - Beneficial ownership filings
   - Insider trading reports

3. Search for any regulatory actions, enforcement orders, or sanctions against {entity_name}.

4. Search for litigation involving {entity_name}:
   - Recent court filings
   - Significant settlements
   - Ongoing material litigation

5. Search for {entity_name} leadership and board composition from official sources.

Return only verified information from authoritative sources.
Note any discrepancies found across sources.
3

Contract Clause Research

Research standard contract language, market terms, and clause precedents.

Prompt- contract-clause-research
You are a contract research assistant helping draft or review agreements.

Clause type: {clause_type}
Agreement type: {agreement_type}
Industry: {industry}
Jurisdiction: {jurisdiction}

Execute the following research:

1. Search for standard {clause_type} language in {agreement_type} agreements.

2. Search for SEC filings containing {agreement_type} agreements to find:
   - Market-standard clause formulations
   - Variations in approach
   - Negotiated terms from public deals

3. Search for law firm client alerts and articles discussing:
   - Best practices for {clause_type} provisions
   - Recent trends in {clause_type} negotiation
   - Pitfalls to avoid

4. Search for any recent case law interpreting {clause_type} provisions in {jurisdiction}.

Return a summary of market approaches with example language (paraphrased, not copied).
Note any jurisdiction-specific considerations.
4

Compliance Requirements Research

Research compliance obligations for specific activities, industries, or jurisdictions.

Prompt- compliance-research
You are a compliance research assistant.

Business activity: {business_activity}
Industry: {industry}
Jurisdictions: {jurisdictions}
Company type: {company_type}

Research the regulatory compliance requirements for {business_activity}:

1. Search for primary regulatory requirements from relevant agencies:
   - Licensing or registration requirements
   - Ongoing compliance obligations
   - Reporting requirements
   - Record-keeping requirements

2. Search for regulatory guidance explaining how requirements apply to {business_activity}.

3. Search for recent enforcement actions in this area to understand:
   - Common compliance failures
   - Regulatory priorities
   - Penalty ranges

4. Search for industry association guidance or best practices.

5. For each jurisdiction in {jurisdictions}, identify:
   - Which agencies have jurisdiction
   - Key differences in requirements
   - Any pending regulatory changes

Return a compliance checklist organized by requirement type.
6

Due Diligence Research

Support M&A due diligence with public information research. deep recommended for this use case.

Prompt- due-diligence
You are a due diligence research assistant supporting a transaction.

Target company: {target_company}
Transaction type: {transaction_type}
Key areas of concern: {focus_areas}

Conduct public information due diligence research:

1. Corporate Information:
   - Search for incorporation documents and entity status
   - Find subsidiary structure from SEC filings or other public sources
   - Identify registered agents and principal offices

2. Regulatory Standing:
   - Search for any regulatory actions, consent orders, or sanctions
   - Find any pending regulatory proceedings
   - Check for required licenses and their status

3. Litigation History:
   - Search for material litigation disclosed in public filings
   - Search court databases for recent cases involving {target_company}
   - Identify any class actions or government investigations

4. Material Contracts (from public filings):
   - Search for material contracts filed as exhibits
   - Identify key customer and supplier relationships disclosed
   - Find any change of control provisions mentioned

5. News and Reputation:
   - Search for negative news coverage
   - Find any whistleblower complaints or employee disputes
   - Identify any environmental or safety incidents

Flag any red flags requiring further investigation.

Best Practices

Tips for getting the best results

Do's

  • 1Always use authoritative source restrictions — legal accuracy depends on citing official sources
  • 2Include citations in structured output — always capture URLs and official citations
  • 3Use date filtering for regulatory research — stale results can be dangerous
  • 4Request jurisdiction-specific results — laws vary dramatically by jurisdiction
  • 5Use deep for comprehensive research — find source, then scrape full content
  • 6Flag uncertainties explicitly — structure outputs to capture confidence levels
x

Don'ts

  • 1Don't cite unofficial sources for legal requirements — blogs and news are not authoritative
  • 2Don't skip date verification — outdated regulations can be worse than no information
  • 3Don't assume cross-jurisdiction applicability — always verify jurisdictional scope
  • 4Don't conflate commentary with primary sources — distinguish law firm analysis from legal requirements
  • 5Don't over-rely on search for case law — Linkup complements but doesn't replace Westlaw/LexisNexis
Pro Tip
Structure agent outputs with confidence indicators: High (direct primary source citation), Medium (secondary source citing primary), Low (news report without primary source). Flag conflicting sources for attorney review.

Domain Allowlists (Examples)

Authoritative source domains by category

US Federal Government
{
  "includeDomains": [
    "federalregister.gov",
    "regulations.gov",
    "congress.gov",
    "govinfo.gov",
    "sec.gov",
    "justice.gov",
    "ftc.gov",
    "fda.gov",
    "epa.gov",
    "dol.gov",
    "treasury.gov",
    "irs.gov",
    "consumerfinance.gov",
    "occ.gov",
    "fdic.gov",
    "federalreserve.gov",
    "uscourts.gov"
  ]
}
json
US State Government (Delaware, California, New York)
{
  "includeDomains": [
    "delcode.delaware.gov",
    "corp.delaware.gov",
    "leginfo.legislature.ca.gov",
    "oag.ca.gov",
    "dos.ny.gov",
    "ag.ny.gov"
  ]
}
json
SEC Filings & Corporate Records
{
  "includeDomains": [
    "sec.gov",
    "sec.gov/cgi-bin/browse-edgar",
    "efts.sec.gov"
  ]
}
json
Legal News & Analysis (Use Selectively)
{
  "includeDomains": [
    "law360.com",
    "law.com",
    "reuters.com/legal",
    "bloomberglaw.com",
    "lexology.com",
    "jdsupra.com"
  ]
}
json
International Sources
{
  "includeDomains": [
    "legislation.gov.uk",
    "eur-lex.europa.eu",
    "canlii.org",
    "austlii.edu.au"
  ]
}
json

Integration Patterns

How to integrate legal research into your workflow

Agent Tool Integration

Define Linkup as tools for legal research

  1. search_regulations — Input: regulatory_area, jurisdictions, date_range
  2. research_entity — Input: entity_name, jurisdiction, research_scope
  3. search_compliance_requirements — Input: activity, industry, jurisdictions
  4. monitor_legal_developments — Input: practice_area, topics, jurisdictions
  5. due_diligence_search — Input: target_company, focus_areas

Source Hierarchy

When multiple sources exist, prioritize:

  1. 1. Primary sources (statutes, regulations, court decisions)
  2. 2. Official agency guidance (regulatory guidance, FAQs)
  3. 3. Secondary authoritative sources (bar association, law firm alerts)
  4. 4. News and commentary (for context only)

Confidence Scoring

Structure agent outputs with confidence indicators

  1. High confidence: Direct primary source citation, current, jurisdiction-specific
  2. Medium confidence: Secondary source citing primary, slightly outdated
  3. Low confidence: News report without primary source, jurisdictional uncertainty
  4. Flag for review: Conflicting sources, novel questions, high-stakes implications

Sample Code

Python example for legal research

linkup_legal_assistant.py
import requests
import json
from datetime import datetime, timedelta
from typing import Optional, List

class LinkupLegalAssistant:
    """Linkup integration for legal research agents"""

    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.linkup.so/v1/search"

        # Default to authoritative sources
        self.gov_domains = [
            "federalregister.gov",
            "regulations.gov",
            "sec.gov",
            "congress.gov",
            "govinfo.gov",
            "justice.gov"
        ]

    def _call_linkup(
        self,
        prompt: str,
        schema: dict,
        depth: str = "deep",
        include_domains: list = None,
        from_date: str = None
    ) -> dict:
        params = {
            "q": prompt,
            "depth": depth,
            "outputType": "structured",
            "structuredSchema": json.dumps(schema)
        }
        if include_domains:
            params["includeDomains"] = include_domains
        if from_date:
            params["fromDate"] = from_date

        response = requests.post(
            self.base_url,
            headers={"Authorization": f"Bearer {self.api_key}"},
            json=params
        )
        return response.json()

    def search_regulations(
        self,
        regulatory_area: str,
        agencies: List[str],
        days_back: int = 30
    ) -> dict:
        """Search for recent regulatory updates"""

        from_date = (datetime.now() - timedelta(days=days_back)).strftime("%Y-%m-%d")
        agencies_str = ", ".join(agencies)

        prompt = f"""
        Search for recent regulatory developments in {regulatory_area}.

        Agencies: {agencies_str}

        Find:
        - New final rules and regulations
        - Proposed rules open for comment
        - Regulatory guidance documents
        - Enforcement actions and policy statements

        For each item, extract title, citation, agency, dates, and summary.
        Prioritize official government sources only.
        """

        schema = {
            "type": "object",
            "properties": {
                "regulatory_updates": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {"type": "string"},
                            "citation": {"type": "string"},
                            "type": {"type": "string"},
                            "agency": {"type": "string"},
                            "publication_date": {"type": "string"},
                            "effective_date": {"type": "string"},
                            "summary": {"type": "string"},
                            "source_url": {"type": "string"}
                        }
                    }
                }
            }
        }

        return self._call_linkup(
            prompt,
            schema,
            depth="deep",
            include_domains=self.gov_domains,
            from_date=from_date
        )

    def research_entity(
        self,
        entity_name: str,
        jurisdiction: str,
        include_litigation: bool = True
    ) -> dict:
        """Research a company or entity"""

        litigation_instruction = """
        4. Search for litigation involving the entity:
           - Recent court filings
           - Significant settlements
           - Ongoing material litigation
        """ if include_litigation else ""

        prompt = f"""
        Research the entity: {entity_name}
        Jurisdiction: {jurisdiction}

        1. Search for official registration information:
           - State/country of incorporation
           - Registration number
           - Status
           - Registered agent

        2. Search SEC EDGAR for recent filings (if public company).

        3. Search for regulatory actions or sanctions against this entity.
        {litigation_instruction}

        Return only verified information from authoritative sources.
        """

        schema = {
            "type": "object",
            "properties": {
                "entity_name": {"type": "string"},
                "registration_info": {
                    "type": "object",
                    "properties": {
                        "legal_name": {"type": "string"},
                        "jurisdiction": {"type": "string"},
                        "registration_number": {"type": "string"},
                        "status": {"type": "string"},
                        "source_url": {"type": "string"}
                    }
                },
                "sec_filings": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "form_type": {"type": "string"},
                            "date": {"type": "string"},
                            "url": {"type": "string"}
                        }
                    }
                },
                "regulatory_history": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "agency": {"type": "string"},
                            "action": {"type": "string"},
                            "date": {"type": "string"},
                            "source_url": {"type": "string"}
                        }
                    }
                },
                "litigation": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "case_name": {"type": "string"},
                            "court": {"type": "string"},
                            "status": {"type": "string"},
                            "summary": {"type": "string"}
                        }
                    }
                }
            }
        }

        return self._call_linkup(
            prompt,
            schema,
            depth="deep",
            include_domains=self.gov_domains + ["sec.gov"]
        )

    def search_compliance_requirements(
        self,
        business_activity: str,
        industry: str,
        jurisdictions: List[str]
    ) -> dict:
        """Research compliance requirements"""

        jurisdictions_str = ", ".join(jurisdictions)

        prompt = f"""
        Research compliance requirements for: {business_activity}
        Industry: {industry}
        Jurisdictions: {jurisdictions_str}

        Find:
        - Licensing or registration requirements
        - Ongoing compliance obligations
        - Reporting requirements
        - Record-keeping requirements

        For each requirement, identify the agency, legal citation, and deadlines.
        Search for regulatory guidance explaining how requirements apply.
        """

        schema = {
            "type": "object",
            "properties": {
                "compliance_requirements": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "requirement": {"type": "string"},
                            "category": {"type": "string"},
                            "agency": {"type": "string"},
                            "jurisdiction": {"type": "string"},
                            "legal_citation": {"type": "string"},
                            "description": {"type": "string"},
                            "deadline": {"type": "string"},
                            "source_url": {"type": "string"}
                        }
                    }
                },
                "compliance_checklist": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "item": {"type": "string"},
                            "priority": {"type": "string"},
                            "frequency": {"type": "string"}
                        }
                    }
                }
            }
        }

        return self._call_linkup(prompt, schema, depth="deep")

    def due_diligence_search(
        self,
        target_company: str,
        focus_areas: List[str]
    ) -> dict:
        """Conduct public due diligence research"""

        focus_str = ", ".join(focus_areas)

        prompt = f"""
        Conduct public due diligence research on: {target_company}
        Focus areas: {focus_str}

        Research:
        1. Corporate information and entity status
        2. Regulatory standing and any enforcement actions
        3. Litigation history from public sources
        4. Material contracts from public filings
        5. Negative news coverage

        Flag any red flags requiring further investigation.
        """

        schema = {
            "type": "object",
            "properties": {
                "target_company": {"type": "string"},
                "corporate_info": {"type": "object"},
                "regulatory_findings": {
                    "type": "array",
                    "items": {"type": "object"}
                },
                "litigation_findings": {
                    "type": "array",
                    "items": {"type": "object"}
                },
                "news_findings": {
                    "type": "array",
                    "items": {"type": "object"}
                },
                "red_flags": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "issue": {"type": "string"},
                            "severity": {"type": "string"},
                            "recommendation": {"type": "string"}
                        }
                    }
                }
            }
        }

        return self._call_linkup(prompt, schema, depth="deep")


# Example usage
if __name__ == "__main__":
    assistant = LinkupLegalAssistant(api_key="your-api-key")

    # Regulatory monitoring
    regs = assistant.search_regulations(
        regulatory_area="data privacy",
        agencies=["FTC", "state attorneys general"],
        days_back=30
    )

    # Entity research
    entity = assistant.research_entity(
        entity_name="Acme Corp",
        jurisdiction="Delaware",
        include_litigation=True
    )

    # Compliance requirements
    compliance = assistant.search_compliance_requirements(
        business_activity="payment processing",
        industry="fintech",
        jurisdictions=["federal", "California", "New York"]
    )
python