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.
In This Guide
Regulatory Monitoring
Track new regulations, proposed rules, and guidance
Company & Entity Research
Verify entities and find public filings
Contract Clause Research
Research standard language and market terms
Compliance Requirements
Research obligations for activities and industries
Legal News & Development Tracking
Monitor court decisions and legislative changes
Due Diligence Research
Support M&A with public information research
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 searchFind regulatory sources, then scrape full text for complete context
structured outputReturns legal information in formats agents can parse and cite
fromDate filteringSurface recent regulatory changes and case developments
includeDomainsEnsure agents only cite authoritative sources
Configuration
Recommended settings for legal research
| Parameter | Value | Why |
|---|---|---|
depth | deep | Legal research requires finding sources, then extracting detailed content |
outputType | structured | Legal agents need structured, citable information |
includeDomains | authoritative sources | Critical for legal accuracy and citation integrity |
fromDate | based on needs | Essential for tracking regulatory changes |
Use Cases
Practical examples with prompts and schemas
Regulatory Monitoring
Track new regulations, proposed rules, and regulatory guidance across jurisdictions.
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.{
"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"
]
}Company & Entity Research
Research companies, verify entity information, and find public filings.
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.Contract Clause Research
Research standard contract language, market terms, and clause precedents.
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.Compliance Requirements Research
Research compliance obligations for specific activities, industries, or jurisdictions.
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.Legal News & Development Tracking
Monitor legal developments, court decisions, and legislative changes.
You are a legal news analyst tracking developments in a practice area.
Practice area: {practice_area}
Topics to monitor: {topics}
Jurisdictions: {jurisdictions}
Search for recent legal developments including:
1. Significant court decisions:
- Appellate decisions
- Notable trial court rulings
- Regulatory adjudications
2. Legislative developments:
- New laws enacted
- Bills advancing through legislature
- Legislative hearings on relevant topics
3. Regulatory developments:
- New rules and guidance
- Enforcement priorities
- Agency leadership changes
4. Legal industry analysis:
- Law firm alerts and client advisories
- Bar association publications
- Legal scholarship and commentary
For each item, assess the practical impact on clients in {practice_area}.
Prioritize developments with immediate client implications.Due Diligence Research
Support M&A due diligence with public information research. deep recommended for this use case.
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
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
Domain Allowlists (Examples)
Authoritative source domains by category
{
"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"
]
}{
"includeDomains": [
"delcode.delaware.gov",
"corp.delaware.gov",
"leginfo.legislature.ca.gov",
"oag.ca.gov",
"dos.ny.gov",
"ag.ny.gov"
]
}{
"includeDomains": [
"sec.gov",
"sec.gov/cgi-bin/browse-edgar",
"efts.sec.gov"
]
}{
"includeDomains": [
"law360.com",
"law.com",
"reuters.com/legal",
"bloomberglaw.com",
"lexology.com",
"jdsupra.com"
]
}{
"includeDomains": [
"legislation.gov.uk",
"eur-lex.europa.eu",
"canlii.org",
"austlii.edu.au"
]
}Integration Patterns
How to integrate legal research into your workflow
Agent Tool Integration
Define Linkup as tools for legal research
- •search_regulations — Input: regulatory_area, jurisdictions, date_range
- •research_entity — Input: entity_name, jurisdiction, research_scope
- •search_compliance_requirements — Input: activity, industry, jurisdictions
- •monitor_legal_developments — Input: practice_area, topics, jurisdictions
- •due_diligence_search — Input: target_company, focus_areas
Source Hierarchy
When multiple sources exist, prioritize:
- •1. Primary sources (statutes, regulations, court decisions)
- •2. Official agency guidance (regulatory guidance, FAQs)
- •3. Secondary authoritative sources (bar association, law firm alerts)
- •4. News and commentary (for context only)
Confidence Scoring
Structure agent outputs with confidence indicators
- •High confidence: Direct primary source citation, current, jurisdiction-specific
- •Medium confidence: Secondary source citing primary, slightly outdated
- •Low confidence: News report without primary source, jurisdictional uncertainty
- •Flag for review: Conflicting sources, novel questions, high-stakes implications
Sample Code
Python example for legal research
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"]
)