{"serverInfo":{"name":"Lawstronaut MCP","version":"1.0.1"},"authentication":{"required":true,"schemes":["oauth2","bearer"]},"tools":[{"name":"list_jurisdictions","description":"List all jurisdictions (countries/states) available in the Lawstronaut legal corpus. Call this FIRST when answering legal questions so you know which \"iso\" codes are valid for the other tools. Result is cached for the MCP process lifetime\n    \n    Returns: {data: [{\"name\": \"Belgium\", \"iso\": \"BE\", \"type\": \"country\"}, ...]}\n    - Full list of jurisdiction objects including names, iso, and type","inputSchema":{"type":"object","properties":{}}},{"name":"list_domains","description":"Retrieves a list of domains for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal domains for a specific jurisdiction and optional filters\n    - The user asks about available domains for a domain name\n    - The user wants to filter with pagination\n\n    Parameters:\n    - domain (optional): Filter domains by name\n    - limit: z.number().optional().describe(\"Number of results to return\"),\n    - offset: z.number().optional().describe(\"Number of results to skip\")\n\n    Returns:\n    - List of domains with domain_id, domain, pagination: total_count, limit, offset\n    - Only returns domains that have data","inputSchema":{"type":"object","properties":{"domain":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}}}},{"name":"list_subdomains","description":"Retrieves a list of subdomains for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal subdomains for a specific jurisdiction and optional filters\n    - The user asks about available subdomains for a domain id\n    - The user wants to filter subdomains by name with pagination\n\n    Parameters:\n    - domain_id (required): Filter by Domain ID.\n    - subdomain (optional): Filter subdomains by name\n    - limit: z.number().optional().describe(\"Number of results to return\"),\n    - offset: z.number().optional().describe(\"Number of results to skip\")\n\n    Returns:\n    - List of subdomains with subdomain_id, subdomain, domain_id, pagination: total_count, limit, offset\n    - Only returns subdomains that have data","inputSchema":{"type":"object","properties":{"domain_id":{"type":"string","description":"Filter by Domain ID"},"subdomain":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["domain_id"]}},{"name":"list_categories","description":"Retrieves a list of categories for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal categories for a specific jurisdiction and optional filters\n    - The user asks about available categories for a subdomain id\n    - The user wants to filter categories by name with pagination\n\n    Parameters:\n    - subdomain_id (optional): Filter by Subdomain ID.\n    - category_name (optional): Filter categories by name\n    - limit: z.number().optional().describe(\"Number of results to return\"),\n    - offset: z.number().optional().describe(\"Number of results to skip\")\n\n    Returns:\n    - List of categories with category_id, category_name, subdomain_id, domain_id, pagination: total_count, limit, offset\n    - Only returns categories that have data","inputSchema":{"type":"object","properties":{"subdomain_id":{"type":"string"},"category_name":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}}}},{"name":"list_subcategories","description":"Retrieves a list of subcategories for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal subcategories for a specific jurisdiction and optional filters\n    - The user asks about available subcategories for a category id\n    - The user wants to filter subcategories by name with pagination\n\n    Parameters:\n    - category_id (required): Filter by Category ID.\n    - subcategory_name (optional): Filter subcategories by name\n    - limit: z.number().optional().describe(\"Number of results to return\"),\n    - offset: z.number().optional().describe(\"Number of results to skip\")\n\n    Returns:\n    - List of subcategories with subcategory_id, subcategory_name, category_id, pagination: total_count, limit, offset\n    - Only returns subcategories that have data","inputSchema":{"type":"object","properties":{"category_id":{"type":"string","description":"Filter by Category ID"},"subcategory_name":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["category_id"]}},{"name":"list_law_types","description":"Retrieves a list of law types for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal law types for a specific jurisdiction and optional filters\n    - The user asks about available law types for a subcategory id\n    - The user wants to filter law types by name with pagination\n\n    Parameters:\n    - subcategory_id (required): Filter by Subcategory ID.\n    - law_type (optional): Filter law types by name\n    - limit: z.number().optional().describe(\"Number of results to return\"),\n    - offset: z.number().optional().describe(\"Number of results to skip\")\n\n    Returns:\n    - List of law types with law_type_id, law_type, subcategory_id, category_id, pagination: total_count, limit, offset\n    - Only returns law types that have data","inputSchema":{"type":"object","properties":{"subcategory_id":{"type":"string","description":"Filter by Subcategory ID"},"law_type":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"}},"required":["subcategory_id"]}},{"name":"list_portals","description":"Retrieves a list of legal portals filtered by jurisdiction and optional criteria.\n    Use this tool when:\n    - The user wants to find legal portals, websites, or resources for a specific jurisdiction\n    - The user asks about available portals in a country or state\n    - The user wants to filter portals by name, language, or tag with total crawled links\n\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - name (optional): Filter portals by name or URL keyword\n    - tag (optional): Filter portals by tag\n    - lang (optional): Filter portals by language name\n\n    Returns:\n    - List of portals with name, URL, language, jurisdiction, tags, and total crawled links\n    - Only returns portals that have crawled data","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"name":{"type":"string"},"tag":{"type":"string"},"lang":{"type":"string"}},"required":["iso"]}},{"name":"list_authority_types","description":"Retrieves a list of authority types.\n    Use this tool when:\n    - The user wants to find legal authority types for a specific jurisdiction and optional filters\n    - The user asks about available authority types for a portal name, authority type\n    - The user wants to filter with pagination\n\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - limit (optional): Number of results to return.\n    - offset (optional): Number of results to skip.\n    - portal_name (optional): Filter by portal name.\n    - authority_type (optional): Filter by authority type.\n\n    Returns:\n    - List of authority types with iso, authority_type, portal_name, pagination: total_count, limit, offset\n    - Only returns authority types that have data","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"limit":{"type":"number"},"offset":{"type":"number"},"portal_name":{"type":"string"},"authority_type":{"type":"string"}},"required":["iso"]}},{"name":"list_issuing_authorities","description":"Retrieves a list of issuing authorities for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user wants to find legal issuing authorities for a specific jurisdiction and optional filters\n    - The user asks about available issuing authorities for a portal name, issuing authority\n    - The user wants to filter with pagination\n\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - limit (optional): Number of results to return.\n    - offset (optional): Number of results to skip.\n    - portal_name (optional): Filter by portal name.\n    - issuing_authority (optional): Filter by issuing authority.\n\n    Returns:\n    - List of issuing authorities with iso, issuing_authority, portal_name, pagination: total_count, limit, offset\n    - Only returns issuing authorities that have data","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"limit":{"type":"number"},"offset":{"type":"number"},"portal_name":{"type":"string"},"issuing_authority":{"type":"string"}},"required":["iso"]}},{"name":"list_documents","description":"List documents in a jurisdiction with structured filters and pagination.\n    Use this tool when:\n    - The user wants to find legal content for a specific jurisdiction and optional filters\n    - The user asks about available content for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date\n    - The user wants to filter content for type of authority, issuing authority, source identifier, source secondary identifier, tag\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - portal (optional): Filter by portal name.\n    - limit (optional): Number of results to return.\n    - offset (optional): Number of results to skip.\n    - document_id (optional): Filter by document ID.\n    - repealed (optional): Filter by repealed status.\n    - title (optional): Filter by title.\n    - section_title (optional): Filter by section title.\n    - url (optional): Filter by URL.\n    - status (optional): Filter by status.\n    - crawling_date (optional): Filter by crawling date.\n    - last_updated (optional): Filter by last updated date.\n    - last_amendment (optional): Filter by last amendment date.\n    - publication_date (optional): Filter by publication date.\n    - expiration_date (optional): Filter by expiration date.\n    - effective_date (optional): Filter by effective date.\n    - date_of_enactment (optional): Filter by date of enactment.\n    - date_of_decision (optional): Filter by date of decision.\n    - file_data_only (optional): Return file data only.\n    - issuing_authority (optional): Filter by issuing authority.\n    - type_of_authority (optional): Filter by type of authority.\n    - source_identifier (optional): Filter by source identifier.\n    - source_secondary_identifier (optional): Filter by secondary source identifier.\n    - tag (optional): Filter by tag.\n    - lang (optional): Filter by language.\n    Returns:\n    - Contents list with title, section_title, publication_date, effective_date, expiration_date, date_of_enactment, date_of_last_amendment, date_of_repealed, date_of_decision, status, version, source_identifier, source_secondary_identifier, issuing_authority, type_of_authority, language, legal_link, repealed, metadata, summary, tags, source_keywords, crawling_date, portal, portal_name, last_updated\n    - Only returns content that has crawled data","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"portal":{"type":"string"},"version":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"},"document_id":{"type":"string"},"repealed":{"type":"boolean"},"title":{"type":"string"},"section_title":{"type":"string"},"url":{"type":"string"},"status":{"type":"string"},"crawling_date":{"type":"string"},"last_updated":{"type":"string"},"last_amendment":{"type":"string"},"publication_date":{"type":"string"},"expiration_date":{"type":"string"},"effective_date":{"type":"string"},"date_of_enactment":{"type":"string"},"date_of_decision":{"type":"string"},"file_data_only":{"type":"boolean"},"issuing_authority":{"type":"string"},"type_of_authority":{"type":"string"},"source_identifier":{"type":"string"},"source_secondary_identifier":{"type":"string"},"tag":{"type":"string"},"lang":{"type":"string"}},"required":["iso"]}},{"name":"get_document_text","description":"Retrieves full text for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user asks about available full text for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date\n    - The user wants to filter full text for type of authority, issuing authority, source identifier, source secondary identifier, tag\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - portal (optional): Filter by portal name.\n    - limit (optional): Number of results to return.\n    - offset (optional): Number of results to skip.\n    - document_id (optional): Filter by document ID.\n    - repealed (optional): Filter by repealed status.\n    - title (optional): Filter by title.\n    - section_title (optional): Filter by section title.\n    - url (optional): Filter by URL.\n    - status (optional): Filter by status.\n    - crawling_date (optional): Filter by crawling date.\n    - last_updated (optional): Filter by last updated date.\n    - last_amendment (optional): Filter by last amendment date.\n    - publication_date (optional): Filter by publication date.\n    - expiration_date (optional): Filter by expiration date.\n    - effective_date (optional): Filter by effective date.\n    - date_of_enactment (optional): Filter by date of enactment.\n    - date_of_decision (optional): Filter by date of decision.\n    - file_data_only (optional): Return file data only.\n    - issuing_authority (optional): Filter by issuing authority.\n    - type_of_authority (optional): Filter by type of authority.\n    - source_identifier (optional): Filter by source identifier.\n    - source_secondary_identifier (optional): Filter by secondary source identifier.\n    - tag (optional): Filter by tag.\n    - lang (optional): Filter by language.\n    Returns:\n    - Content full text list with document_id, full_text","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"portal":{"type":"string"},"version":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"},"document_id":{"type":"string"},"repealed":{"type":"boolean"},"title":{"type":"string"},"section_title":{"type":"string"},"url":{"type":"string"},"status":{"type":"string"},"crawling_date":{"type":"string"},"last_updated":{"type":"string"},"last_amendment":{"type":"string"},"publication_date":{"type":"string"},"expiration_date":{"type":"string"},"effective_date":{"type":"string"},"date_of_enactment":{"type":"string"},"date_of_decision":{"type":"string"},"file_data_only":{"type":"boolean"},"issuing_authority":{"type":"string"},"type_of_authority":{"type":"string"},"source_identifier":{"type":"string"},"source_secondary_identifier":{"type":"string"},"tag":{"type":"string"},"lang":{"type":"string"}},"required":["iso"]}},{"name":"get_markdown","description":"Retrieves markdown for a specific jurisdiction and optional filters.\n    Use this tool when:\n    - The user asks about available markdown for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date\n    - The user wants to filter markdown for type of authority, issuing authority, source identifier, source secondary identifier, tag\n    Parameters:\n    - iso (required): Filter by Jurisdiction ISO code (e.g. \"US\").\n    - portal (optional): Filter by portal name.\n    - limit (optional): Number of results to return.\n    - offset (optional): Number of results to skip.\n    - document_id (optional): Filter by document ID.\n    - repealed (optional): Filter by repealed status.\n    - title (optional): Filter by title.\n    - section_title (optional): Filter by section title.\n    - url (optional): Filter by URL.\n    - status (optional): Filter by status.\n    - crawling_date (optional): Filter by crawling date.\n    - last_updated (optional): Filter by last updated date.\n    - last_amendment (optional): Filter by last amendment date.\n    - publication_date (optional): Filter by publication date.\n    - expiration_date (optional): Filter by expiration date.\n    - effective_date (optional): Filter by effective date.\n    - date_of_enactment (optional): Filter by date of enactment.\n    - date_of_decision (optional): Filter by date of decision.\n    - file_data_only (optional): Return file data only.\n    - issuing_authority (optional): Filter by issuing authority.\n    - type_of_authority (optional): Filter by type of authority.\n    - source_identifier (optional): Filter by source identifier.\n    - source_secondary_identifier (optional): Filter by secondary source identifier.\n    - tag (optional): Filter by tag.\n    - lang (optional): Filter by language.\n    Returns:\n    - Content markdown list with document_id, content_markdown","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Filter by Jurisdiction ISO code (e.g. 'US')"},"portal":{"type":"string"},"version":{"type":"string"},"limit":{"type":"number"},"offset":{"type":"number"},"document_id":{"type":"string"},"repealed":{"type":"boolean"},"title":{"type":"string"},"section_title":{"type":"string"},"url":{"type":"string"},"status":{"type":"string"},"crawling_date":{"type":"string"},"last_updated":{"type":"string"},"last_amendment":{"type":"string"},"publication_date":{"type":"string"},"expiration_date":{"type":"string"},"effective_date":{"type":"string"},"date_of_enactment":{"type":"string"},"date_of_decision":{"type":"string"},"file_data_only":{"type":"boolean"},"issuing_authority":{"type":"string"},"type_of_authority":{"type":"string"},"source_identifier":{"type":"string"},"source_secondary_identifier":{"type":"string"},"tag":{"type":"string"},"lang":{"type":"string"}},"required":["iso"]}},{"name":"get_source_url","description":"Get a time-limited signed URL to the original source file (PDF etc.).\n    Use this tool when:\n    - The user wants to find a pdf URL for a specific document\n    - The user asks about presigned URL for a pdf\n    Parameters:\n    - document_id (required): Document ID.\n\n    Returns:\n    - PDF URL for a specific document with document_id and pdf_url","inputSchema":{"type":"object","properties":{"document_id":{"type":"integer","description":"Document ID","minimum":0}},"required":["document_id"]}},{"name":"get_document_with_version","description":"Retrieves a specific document with a specific version.\n    Use this tool when:\n    - The user wants to find a specific document with a specific version\n    - The user asks about available a specific document with a specific version\n\n    Parameters:\n    - document_id (required): Document ID.\n    - version (required): Version.\n\n    Returns:\n    - Content with version with title, section_title, publication_date, effective_date, expiration_date, date_of_enactment, date_of_last_amendment, date_of_repealed, date_of_decision, status, version, source_identifier, source_secondary_identifier, issuing_authority, type_of_authority, language, legal_link, repealed, metadata, summary, tags, source_keywords, crawling_date, portal, portal_name, last_updated\n    - Only returns content that has crawled data with the specific version","inputSchema":{"type":"object","properties":{"document_id":{"type":"integer","description":"Document ID","minimum":0},"version":{"type":"integer","description":"Version","minimum":0}},"required":["document_id","version"]}},{"name":"horizon_scan","description":"Scans recent legal documents across jurisdictions.\n    Use this when the user asks:\n    - \"What laws changed recently in Netherland?\"\n    - \"Show me new regulations from last week\"\n    - \"Any updates in NL law?\"","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"One ISO code e.g. \"IE\", \"NL\", \"US\", etc."},"since":{"type":"string"},"topic":{"type":"string","nullable":true},"date_field":{"type":"string","enum":["crawling_date","publication_date","last_updated"]},"status":{"type":"string","nullable":true},"issuing_authority":{"type":"string","nullable":true},"type_of_authority":{"type":"string","nullable":true},"include_repealed":{"type":"boolean"},"max_per_jurisdiction":{"type":"integer","minimum":1,"maximum":100}},"required":["iso"]}},{"name":"evidence_pull","description":"\"Show me the source.\"\n     For a specific document, return the full citation chain in one call:\n    metadata (with all dates and identifiers), permanent legal_link, signed\n    URL to the original source file (if available), and the full document\n    body in markdown or plain text. Designed for auditability.","inputSchema":{"type":"object","properties":{"iso":{"type":"string","description":"Document's jurisdiction ISO code, e.g. 'IE', 'NL', 'US', etc."},"document_id":{"type":"integer","description":"Numeric document_id from any listing/search tool","minimum":0},"include_text":{"type":"boolean"},"include_source_url":{"type":"boolean"},"text_format":{"type":"string","enum":["markdown","plain"]}},"required":["iso","document_id"]}}],"resources":[],"prompts":[]}