Generate detailed functional observations for in-scope artifacts. Use after scope triage is complete. Writes what each artifact does and its dependencies.
Generate functional summaries for in-scope assessment artifacts. Custom results (both ootb modified and net new customer created customizations) that are adjacent and in scope (not marked as out of scope)
get_assessment_context(assessment_id) — caches the target app, in_scope_tables, parent_table, and keywords. Frame your observations against this app (don't say "this BR fires on insert" — say "this BR fires on insert to incident, the target table for this assessment").get_customizations — find artifacts with review_status=review_in_progress that are NOT out_of_scope.get_result_detail to read full artifact detail.query_instance_live to peek at the live ServiceNow instance — but only when needed (each call is a network round-trip).update_scan_result to write observations.Keep observations to 2-4 sentences. Focus on WHAT it does, not code structure. If it has any best practice violations (like improper use of current.update() in BR that could be recursive, hardcoded sys_ids, GlideRecord in loops, etc.) call them out — these will be the basis for the recommendations stage that follows. The full catalog is checked in the recommendations skill via get_best_practices; here just flag what's obviously wrong.
The generate_observations MCP tool can bulk-generate baseline observations from artifact metadata when you want a starting point for a large queue — call it, then refine the per-artifact text yourself.
When you have finished ALL work for this stage, advance the pipeline by running:
curl -s -X POST https://136-112-232-229.nip.io/api/assessments/${ASSESSMENT_ID}/advance-pipeline \
-H "Content-Type: application/json" \
-d '{"target_stage": "review", "force": true}'
This updates the pipeline stage in the app UI so the next stage button appears. Do NOT skip this step.