AGENTS.md@backend/packages/harness/deerflow/community/serper · git:20261003.7bb3624 · 2026-10-03 · sha256 b4a770f4d7bef620

AGENTS.md@backend/packages/harness/deerflow/community/serper git:20261003.7bb3624A

Immutable. This exact content never changes and is served at /api/v1/blob/b4a770f4d7bef620.

# Serper provider

`tools.py` owns web/image search. Keep model-facing arguments unchanged.
Web-only `include_domains`/`exclude_domains` use at most 10 domain-only entries
per list; normalize case, one trailing dot and IDNA, reject invalid configuration
before transport, log validation errors without config/query values, and enforce
exact-host/dot-subdomain matching with deny precedence.
Google `site:` query operators are best-effort; local URL-host filtering is
mandatory even for queries containing operators. Never truncate restrictions,
refill results, or relax scope. The composed query limit is 500 characters;
report the cleaned original query and actual filtered count, including zero.
Image search and unconfigured web behavior retain their existing contracts.
This is source selection, not a fetch policy or factuality check.

Tests: `backend/tests/test_serper_domain_filters.py` and `test_serper_tools.py`.
Mock HTTP; live Serper semantics remain unverified. See
`backend/docs/CONFIGURATION.md#serper-source-filters` for the operator contract.