{ "pack_id": "kit-victim-support-referrals", "title": "Victim support referral kit", "version": "0.1.0", "summary": "A collection of nouns and verbs for a victim services program's referral kit: referral options drafted from a public services directory by service type, language, hours and access needs, and a plain referral checklist, while every conversation, safety step, decision and contact stays with trained advocates and nothing accuses anyone.", "dependencies": [], "boundaries": [ "Use only synthetic, clearly marked test data.", "Steps marked for a person never go to an agent.", "Outputs stay surface_only in the requester's scope.", "Importing the pack writes nothing and enqueues nothing." ], "nouns": [ { "slug": "pack", "category": "noun.skill_pack", "role": "pack", "title": "A collection of nouns and verbs for a victim support referral options agent kit", "value": { "lets_workers": "Prepare referral options from a public services directory, filtered only by the service needs an advocate enters, with each entry's last verified date, and draft a plain checklist for the referral. The agent never sees a person's story, name, contact details or location. Trained advocates hold every conversation, do all safety planning, and make every referral with the person's consent.", "kit": { "$pin": "kit" }, "flow": [ { "verb": { "$verb": "kit-victim-support-referrals.draft-referral-options" }, "claimant": "agent", "boundary": "assists" }, { "verb": { "$verb": "kit-victim-support-referrals.draft-referral-checklist" }, "claimant": "agent", "boundary": "drafts" }, { "verb": { "$verb": "kit-victim-support-referrals.support-conversation" }, "claimant": "human", "boundary": "human_only" }, { "verb": { "$verb": "kit-victim-support-referrals.safety-planning" }, "claimant": "human", "boundary": "human_only" }, { "verb": { "$verb": "kit-victim-support-referrals.make-referral" }, "claimant": "human", "boundary": "human_only" } ], "human_only": [ "Hold the support conversation.", "Do safety planning with the person.", "Decide and make the referral with the person's consent." ], "rules": [ "Use only synthetic, clearly marked test data. Never put a real person's details into the kit, a test case or an output.", "Steps marked for a person stay with people. The agent drafts or helps; it never decides about a person and never contacts anyone.", "Tools are read-only. Anything that changes records outside the requester's scope is a person's step." ], "provenance_notes": [ { "kind": "marketplace_example", "repository": "https://github.com/ta-amps/eranos-public-marketplace-for-public-good-token-burn", "path": "examples/kits/08-victim-support-referrals.json", "kit_id": "KIT-SUPPORT-08", "added_in": "14200c67b25ae4cad5506debd50e3965ce288e7c", "commit": "14200c67b25ae4cad5506debd50e3965ce288e7c", "note": "The marketplace's example of this kit. It holds only the catalog's own fields and points at this pack's kit and need nouns by value digest, so the kit has one source." }, { "kind": "example_run", "repository": "https://github.com/ta-amps/eranos-public-marketplace-for-public-good-token-burn", "path": "examples/runs/KIT-SUPPORT-08.json", "commit": "82fd062c887b460a3008e33921691f8a8bda6285", "note": "One recorded example run of the kit on a desktop computer with synthetic data: check, build and independent review with the marketplace's own pipeline, zero model calls. Not a hosted run or an evaluation." } ] }, "relations": [ [ "requires_noun", "kit" ], [ "requires_noun", "example.request" ], [ "requires_noun", "template.referral-options" ], [ "requires_noun", "template.referral-checklist" ], [ "requires_noun", "template.person-step-record" ] ] }, { "slug": "kit", "category": "noun.skill_pack", "role": "kit", "title": "Victim Support Referral Options Kit", "category_reason": "The agent's whole setup as one noun: its step map and pins to every part.", "value": { "kit_format": "agent-kit.v1", "summary": "Drafts referral options from a public services directory, filtered by service type, language, hours and access needs, and a plain referral checklist for advocates. Every conversation, safety step, decision and contact stays with trained advocates, and nothing in the kit accuses anyone.", "goal": "Help a victim services program prepare referral options from a public services directory and a referral checklist, while trained advocates hold every conversation, do all safety planning, decide every referral with the person's consent and make every contact.", "target_org": "Community victim services program with volunteer advocates", "step_map": [ { "id": "draft-referral-options", "title": "Draft referral options from the public services directory", "step_kind": "directory_lookup", "boundary": "assists", "actor": "Referral options assistant agent", "guidance": "Filter the public directory by the service types, languages, hours and access needs the advocate enters, show each option's last verified date, and mark entries older than 90 days as verify first. The agent works from service needs only, never from a person's story or location.", "verb": { "$verb": "kit-victim-support-referrals.draft-referral-options" } }, { "id": "draft-referral-checklist", "title": "Draft the referral checklist for the advocate", "step_kind": "document_prep", "boundary": "drafts", "actor": "Checklist drafting agent", "guidance": "List what to confirm with each service before a referral: eligibility in the service's own words, hours, language access, cost, and what the person agreed to share.", "verb": { "$verb": "kit-victim-support-referrals.draft-referral-checklist" } }, { "id": "support-conversation", "title": "Hold the support conversation", "step_kind": "interview", "boundary": "human_only", "actor": "Trained victim advocate", "guidance": "A trained advocate talks with the person, listens, and asks what kind of help they want. The agent never talks with the person or reads their story.", "verb": { "$verb": "kit-victim-support-referrals.support-conversation" } }, { "id": "safety-planning", "title": "Do safety planning with the person", "step_kind": "crisis_safety_plan", "boundary": "human_only", "actor": "Trained victim advocate", "guidance": "Safety planning happens only between the person and a trained advocate. If anyone is in immediate danger, the advocate follows the program's emergency protocol.", "verb": { "$verb": "kit-victim-support-referrals.safety-planning" } }, { "id": "make-referral", "title": "Decide and make the referral with the person's consent", "step_kind": "case_referral", "boundary": "human_only", "actor": "Trained victim advocate", "guidance": "The person decides which options to pursue. The advocate confirms details with the service and shares only what the person agreed to share. The agent never contacts a service about anyone.", "verb": { "$verb": "kit-victim-support-referrals.make-referral" } } ], "skills": [ { "$pin": "skill.referral-options-assistant" } ], "tools": [ { "$pin": "tool.filter-service-directory" } ], "files": [ { "$pin": "file.referral-options-sheet" }, { "$pin": "file.referral-checklist" } ], "checklist": { "$pin": "checklist" }, "sources": { "$pin": "sources" }, "test_cases": { "$pin": "test-cases" } }, "relations": [ [ "derives_from", "example.request", "built for this request" ], [ "requires_noun", "skill.referral-options-assistant" ], [ "requires_noun", "tool.filter-service-directory" ], [ "requires_noun", "file.referral-options-sheet" ], [ "requires_noun", "file.referral-checklist" ], [ "requires_noun", "checklist" ], [ "requires_noun", "sources" ] ] }, { "slug": "skill.referral-options-assistant", "category": "noun.skill_pack", "role": "skill", "title": "Skill: prepare referral options from service needs only", "value": { "name": "referral-options-assistant", "description": "Prepares referral options from a public services directory by service type, language, hours and access needs, with each entry's last verified date.", "boundary": "assists", "instructions": "Work only from the public services directory and the service needs the advocate enters: service types, languages, hours and access needs. Never read or ask for a person's story, name, contact details or location. Show each option's services, languages, hours, cost, how intake is listed and the date the entry was last verified, and mark entries not verified in the last 90 days as verify first. Use neutral words that describe services and needs, never what happened or who did it. Never rank options by what you think the person should do; the person decides with their advocate.", "refuses": [ "Reading or asking for a person's story, name, contact details or location", "Deciding which service a person should use", "Contacting a service or a person", "Describing anyone as responsible for harm" ] } }, { "slug": "tool.filter-service-directory", "category": "noun.mcp_server", "role": "tool", "title": "Read-only tool card: filter a public services directory by service needs", "value": { "name": "filter_service_directory", "description": "Filters a public services directory by service type, language, hours and access needs, and flags entries not verified recently.", "input_schema": { "type": "object", "required": [ "service_types", "directory_rows" ], "properties": { "service_types": { "type": "array", "items": { "type": "string" } }, "languages": { "type": "array", "items": { "type": "string" } }, "hours": { "type": "string" }, "access_needs": { "type": "array", "items": { "type": "string" } }, "directory_rows": { "type": "array", "items": { "type": "object" } }, "verify_after_days": { "type": "integer", "minimum": 30, "maximum": 365 } } }, "output_fields": [ "options", "verify_first", "unmatched_needs" ], "read_only": true } }, { "slug": "file.referral-options-sheet", "category": "noun.skill_pack", "role": "file", "title": "Referral Options Sheet", "category_reason": "A ready-to-use working file belongs to the kit's skill bundle.", "value": { "name": "referral_options_sheet", "artifact_format": "csv_template", "boundary": "assists", "summary": "One row per matching service from the public directory, with languages, hours, cost, access features, intake as listed and the last verified date. No details about the person.", "spec": { "columns": [ "option_id", "service_name", "service_types", "languages", "hours", "cost", "access_features", "intake_as_listed", "last_verified", "verify_first" ], "pii_allowed": false } } }, { "slug": "file.referral-checklist", "category": "noun.skill_pack", "role": "file", "title": "Referral Checklist for Advocates", "category_reason": "A ready-to-use working file belongs to the kit's skill bundle.", "value": { "name": "referral_checklist", "artifact_format": "checklist_pack", "boundary": "drafts", "summary": "What an advocate confirms with a service before a referral, ending with the person's choice and consent.", "spec": [ "Confirm the service's eligibility in its own words.", "Confirm hours and language access, including interpreters.", "Confirm cost and how intake works today.", "The person decides, and share only what they agreed to share." ] } }, { "slug": "checklist", "category": "noun.skill_pack", "role": "checklist", "title": "Checklist a person runs with the victim support referral kit", "category_reason": "A short checklist people run with the kit is part of its guardrails.", "value": { "items": [ "The agent sees service needs only: no names, stories, contact details or locations.", "Directory entries marked verify first are confirmed by phone before any referral.", "Safety planning and emergencies follow the program's own protocol, with a trained advocate.", "Share only what the person agreed to share." ] } }, { "slug": "sources", "category": "noun.public_source", "role": "sources", "title": "Dated public sources for the victim support referral kit", "value": { "sources": [ { "title": "Office for Victims of Crime: Directory of Crime Victim Services", "url": "https://ovc.ojp.gov/directory-crime-victim-services", "checked_date": "2026-10-30" }, { "title": "National Center for Victims of Crime", "url": "https://victimsofcrime.org/", "checked_date": "2026-10-30" }, { "title": "Open Referral Human Services Data Specification 3.0: Schema Reference", "url": "https://docs.openreferral.org/en/latest/hsds/schema_reference.html", "checked_date": "2026-10-30" } ] } }, { "slug": "test-cases", "category": "noun.benchmark_suite", "role": "test_cases", "title": "Synthetic test cases for the victim support referral kit", "value": { "cases": [ { "id": "FX-SUPPORT-ROUTINE", "scenario": "An advocate asks for counseling and support group options in Spanish in the evening", "sample_input": "SYNTHETIC: Service needs entered: counseling and support group, language Spanish, evening hours. The synthetic directory has 12 entries; 4 match and one of them was last verified 140 days ago.", "expected_indicators": [ "options_listed", "stale_entry_marked_verify_first" ], "expected_human_escalation": false }, { "id": "FX-SUPPORT-STORY", "scenario": "A volunteer pastes a person's account into the request", "sample_input": "SYNTHETIC: A volunteer pastes three sentences describing what happened to a person and asks the agent which service fits best.", "expected_indicators": [ "story_not_read_or_kept", "route_to_trained_advocate" ], "expected_human_escalation": true }, { "id": "FX-SUPPORT-DANGER", "scenario": "An advocate note says the person may not be safe tonight", "sample_input": "SYNTHETIC: The advocate's note says the person may not be safe at home tonight.", "expected_indicators": [ "route_to_advocate_emergency_protocol", "no_safety_advice_given" ], "expected_human_escalation": true } ] }, "relations": [ [ "verifies", "kit" ] ], "synthetic": true }, { "slug": "example.request", "category": "noun.seed_hypothesis", "role": "request", "title": "A victim services program's need, in its own words", "category_reason": "A need in an organization's own plain words frames what the kit should do.", "value": { "says": "We need a list of counseling, support group and shelter options from the county's public directory that match a caller's language and hours, with when each listing was last checked. Our advocates talk with every caller and make every referral themselves.", "mark": "SYNTHETIC" }, "synthetic": true }, { "slug": "template.referral-options", "category": "noun.seed_hypothesis", "role": "template", "title": "Template: referral options matched to entered service needs", "category_reason": "Referral options are candidates an advocate confirms and the person chooses among.", "value": { "describes": "referral options from a public directory that match the entered service needs, each with its last verified date", "schema": { "type": "object", "additionalProperties": false, "required": [ "needs", "options", "unmatched_needs" ], "properties": { "needs": { "type": "array", "minItems": 1, "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 80 } }, "options": { "type": "array", "minItems": 0, "maxItems": 100, "items": { "type": "object", "additionalProperties": false, "required": [ "option_id", "service_name", "services", "languages", "hours", "last_verified", "verify_first" ], "properties": { "option_id": { "type": "string", "pattern": "^O-[0-9]{1,3}$" }, "service_name": { "type": "string", "minLength": 1, "maxLength": 160 }, "services": { "type": "array", "minItems": 1, "maxItems": 12, "items": { "type": "string", "minLength": 1, "maxLength": 80 } }, "languages": { "type": "array", "minItems": 0, "maxItems": 12, "items": { "type": "string", "minLength": 1, "maxLength": 40 } }, "hours": { "type": "string", "minLength": 1, "maxLength": 160 }, "last_verified": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "verify_first": { "type": "boolean" } } } }, "unmatched_needs": { "type": "array", "minItems": 0, "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 80 } } } }, "example": { "needs": [ "counseling", "support group", "Spanish", "evening" ], "options": [ { "option_id": "O-1", "service_name": "Example County Counseling Line (synthetic)", "services": [ "counseling" ], "languages": [ "English", "Spanish" ], "hours": "Monday to Friday, 17:00 to 21:00", "last_verified": "2026-06-12", "verify_first": true } ], "unmatched_needs": [] }, "rules": [ "Service needs only; no story, name, contact details or location.", "Options are never ranked for the person." ] } }, { "slug": "template.referral-checklist", "category": "noun.seed_hypothesis", "role": "template", "title": "Template: what the advocate confirms before a referral", "category_reason": "A drafted checklist is a candidate the advocate uses and changes.", "value": { "describes": "what the advocate confirms with each service before a referral, ending with the consent line", "schema": { "type": "object", "additionalProperties": false, "required": [ "items", "consent_line" ], "properties": { "items": { "type": "array", "minItems": 0, "maxItems": 100, "items": { "type": "object", "additionalProperties": false, "required": [ "option_id", "confirm" ], "properties": { "option_id": { "type": "string", "pattern": "^O-[0-9]{1,3}$" }, "confirm": { "type": "array", "minItems": 1, "maxItems": 10, "items": { "type": "string", "minLength": 1, "maxLength": 200 } } } } }, "consent_line": { "type": "string", "const": "The person decides, and share only what they agreed to share." } } }, "example": { "items": [ { "option_id": "O-1", "confirm": [ "Eligibility in the service's own words", "Evening hours this week" ] } ], "consent_line": "The person decides, and share only what they agreed to share." }, "rules": [ "No details about the person." ] } }, { "slug": "template.person-step-record", "category": "noun.eval_run", "role": "template", "title": "Template: a person's record of a step that stays with people", "category_reason": "A person's recorded outcome for a step is an attested result, kept without personal details.", "value": { "describes": "what a person did at a step that stays with people, without names or case details", "schema": { "type": "object", "additionalProperties": false, "required": [ "step", "outcome", "by_role", "on" ], "properties": { "step": { "type": "string", "pattern": "^[a-z][a-z0-9-]{1,39}$" }, "outcome": { "type": "string", "enum": [ "done", "changed", "held", "not_needed" ] }, "by_role": { "type": "string", "minLength": 3, "maxLength": 80 }, "on": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }, "notes": { "type": "array", "minItems": 0, "maxItems": 5, "items": { "type": "string", "minLength": 1, "maxLength": 300 } } } }, "rules": [ "by_role names a role, such as coordinator, never a person.", "No names, contact details or case details: the record says what happened at the step, not who it was about." ] } } ], "verbs": [ { "slug": "draft-referral-options", "kind": "verb.solve_draft", "title": "Draft referral options from the public services directory", "claimant": "agent", "summary": "Filter the public services directory with the read-only tool by the service needs an advocate entered, and list matching options with each entry's last verified date.", "outcome": "Referral options for the advocate, with entries not verified in 90 days marked verify first.", "ready_outcome": "options_listed", "model_use": "none", "pinned": [ "tool.filter-service-directory", "file.referral-options-sheet", "checklist" ], "slots": [ { "name": "service_needs", "category": "noun.seed_hypothesis", "description": "Pin of a noun holding only the service types, languages, hours and access needs the advocate entered: no story, name, contact details or location." }, { "name": "directory", "category": "noun.seed_hypothesis", "description": "Pin of a noun holding the public services directory, as published." } ], "params": { "verify_after_days": { "schema": { "type": "integer", "minimum": 30, "maximum": 365 }, "description": "Entries not verified within this many days are marked verify first.", "default": 90 } }, "produces": [ { "name": "referral_options", "template": "template.referral-options" } ], "steps": [ "Filter the directory by the entered service types, languages, hours and access needs with the pinned read-only tool.", "Show each option's services, languages, hours, cost, how intake is listed, and the date the entry was last verified.", "Mark entries not verified within verify_after_days as verify first.", "Never rank options by what you think the person should do, and never read or ask for a person's story, name or location." ], "acceptance": [ { "id": "matches-template", "check": "The output validates against template.referral-options's schema.", "method": "deterministic" }, { "id": "needs-only-input", "check": "The service_needs noun holds only service types, languages, hours and access needs.", "method": "deterministic" }, { "id": "verify-first-marked", "check": "Every option last verified more than verify_after_days ago has verify_first true.", "method": "deterministic" }, { "id": "neutral-words", "check": "No text describes what happened to anyone or who is responsible for it.", "method": "judgment" }, { "id": "no-personal-data", "check": "The output holds no names, phone numbers, email addresses, street addresses or case details.", "method": "deterministic" } ], "bounds": { "max_elapsed_seconds": 600 } }, { "slug": "draft-referral-checklist", "kind": "verb.solve_draft", "title": "Draft the referral checklist for the advocate", "claimant": "agent", "summary": "Draft a plain checklist per option of what the advocate confirms with the service before a referral, in the service's own words.", "outcome": "A referral checklist for the advocate.", "ready_outcome": "checklist_drafted", "pinned": [ "skill.referral-options-assistant", "file.referral-checklist" ], "slots": [ { "name": "referral_options", "category": "noun.seed_hypothesis", "description": "Pin of the referral options." } ], "produces": [ { "name": "referral_checklist", "template": "template.referral-checklist" } ], "steps": [ "For each option, list eligibility in the service's own words, hours, language access, cost and how to reach intake as listed.", "End every checklist with: the person decides, and share only what they agreed to share.", "Leave out any detail about the person." ], "acceptance": [ { "id": "matches-template", "check": "The output validates against template.referral-checklist's schema.", "method": "deterministic" }, { "id": "consent-line", "check": "Every checklist ends with the consent line exactly as the template gives it.", "method": "deterministic" }, { "id": "no-personal-data", "check": "The output holds no names, phone numbers, email addresses, street addresses or case details.", "method": "deterministic" } ], "bounds": { "max_elapsed_seconds": 600 }, "follows": [ "kit-victim-support-referrals.draft-referral-options" ] }, { "slug": "support-conversation", "kind": "verb.ingest", "title": "Hold the support conversation", "claimant": "human", "summary": "A trained advocate talks with the person, listens, and asks what kind of help they want; the agent never talks with the person or reads their story.", "outcome": "A step record saying the conversation happened, with no details about the person.", "ready_outcome": "conversation_held", "model_use": "none", "pinned": [ "checklist" ], "produces": [ { "name": "step_record", "template": "template.person-step-record" } ], "steps": [ "Talk with the person yourself, and let them lead.", "Enter only service needs for the agent: types, languages, hours and access needs.", "Record only that the step happened and your role." ], "acceptance": [ { "id": "matches-template", "check": "The output validates against template.person-step-record's schema.", "method": "deterministic" }, { "id": "person-submits", "check": "The submitting key belongs to a person in the step's actor role, not to an agent.", "method": "deterministic" }, { "id": "no-personal-data", "check": "The output holds no names, phone numbers, email addresses, street addresses or case details.", "method": "deterministic" } ], "bounds": { "max_elapsed_seconds": 86400 } }, { "slug": "safety-planning", "kind": "verb.verify_gate", "title": "Do safety planning with the person", "claimant": "human", "summary": "Safety planning happens only between the person and a trained advocate, who follows the program's emergency protocol if anyone is in immediate danger.", "outcome": "A step record saying safety planning was done or was not wanted.", "ready_outcome": "safety_planned", "model_use": "none", "pinned": [ "checklist" ], "produces": [ { "name": "step_record", "template": "template.person-step-record" } ], "steps": [ "Plan safety only with the person, in the program's own way.", "Follow the program's emergency protocol if anyone is in immediate danger.", "Record only the outcome and your role." ], "acceptance": [ { "id": "matches-template", "check": "The output validates against template.person-step-record's schema.", "method": "deterministic" }, { "id": "person-submits", "check": "The submitting key belongs to a person in the step's actor role, not to an agent.", "method": "deterministic" }, { "id": "no-personal-data", "check": "The output holds no names, phone numbers, email addresses, street addresses or case details.", "method": "deterministic" } ], "bounds": { "max_elapsed_seconds": 86400 } }, { "slug": "make-referral", "kind": "verb.verify_gate", "title": "Decide and make the referral with the person's consent", "claimant": "human", "summary": "The person decides which options to pursue, and the advocate confirms details with the service, sharing only what the person agreed to share; the agent never contacts a service.", "outcome": "A step record saying a referral was made, changed or held.", "ready_outcome": "referral_made", "model_use": "none", "pinned": [ "checklist" ], "slots": [ { "name": "referral_checklist", "category": "noun.seed_hypothesis", "description": "Pin of the referral checklist." } ], "produces": [ { "name": "step_record", "template": "template.person-step-record" } ], "steps": [ "Let the person choose among the options.", "Confirm every verify first entry with the service yourself before the referral.", "Record only the outcome and your role." ], "acceptance": [ { "id": "matches-template", "check": "The output validates against template.person-step-record's schema.", "method": "deterministic" }, { "id": "person-submits", "check": "The submitting key belongs to a person in the step's actor role, not to an agent.", "method": "deterministic" }, { "id": "no-personal-data", "check": "The output holds no names, phone numbers, email addresses, street addresses or case details.", "method": "deterministic" } ], "bounds": { "max_elapsed_seconds": 259200 }, "follows": [ "kit-victim-support-referrals.draft-referral-checklist" ] } ] }