Cross-domain search over Dapper's full document corpus (bills, regulations, consultations, news, transcripts), or a document's full metadata by id — one tool, two modes.
**With `q`** (default mode; required unless `document_id` is given): tries hybrid search (semantic + lexical RRF + cross-encoder rerank) first; falls back automatically to a plain title/number substring match if unavailable, timed out, or no semantic hit — check `meta.mode` ('semantic' or 'keyword_fallback'). It indexes attached source documents (PDFs and the like), not the records themselves, and coverage is uneven by country: treat an empty result as inconclusive. Returns top-K document stubs: `document_id`, title, `url`, `domain`, `similarity` and `rerank_score` (cite the rerank: negative means the reranker rejected it). `dapper_content_id` is the id of the RECORD the document belongs to — pass it as `id` to that domain's tool or to get_document_text. Pass `document_id` back into this tool for the full snippet. Use `domain=` to scope to one of bills/regulations/consultations/news/transcripts. If you already know the domain and want full structured rows directly (not just a stub), prefer that domain's own `q` param instead — e.g. list_bills(q=...) — it hits the same search but skips the extra document_id round-trip. Accepts Spanish, Portuguese, or English. Results are constrained to `country_code` (comma-separated; omit for every accessible/your default country).
**With `document_id`** (from a previous search result): ignores `q` and every other filter, and returns that document's full metadata — title, url, domain, country, published_date, a text snippet, and issuing_entity (regulations only).