Goal
Add the authoring-tool surface to the Information service so Claude (or a human operator) can compose and validate Information Items + InfoSpecs end-to-end without touching the database or Watcher.
Per design § 6 (Tools-first authoring lives on the Information service):
- `fetch_and_render(url)` — returns rendered HTML + headers + screenshot
- `propose_selectors(url, description)` — ranked candidate selectors with extracted preview and stability score
- `preview_extraction(url, selector, options)` — what would be captured + computed fingerprint
- `validate_info_spec(doc)` — schema validation + dry-run extraction
- `create_info_spec(info_item_id, doc, priority)` — append a new InfoSpec to the priority list (immutable body, new ULID)
- `create_info_item(name, description, initial_info_spec_doc)` — register a new Information Item + first InfoSpec atomically
- `find_info_item(query)` — search to avoid duplicates
`create_info_item` and `create_info_spec` already exist (Phase 1); 3a extends `create_info_item` with the atomic `initial_info_spec` variant and adds the five missing tools.
Plan
docs/plans/2026-05-05-information-service-phase3a-plan.md
Out of scope
References
Goal
Add the authoring-tool surface to the Information service so Claude (or a human operator) can compose and validate Information Items + InfoSpecs end-to-end without touching the database or Watcher.
Per design § 6 (Tools-first authoring lives on the Information service):
`create_info_item` and `create_info_spec` already exist (Phase 1); 3a extends `create_info_item` with the atomic `initial_info_spec` variant and adds the five missing tools.
Plan
docs/plans/2026-05-05-information-service-phase3a-plan.md
Out of scope
References