{"name":"Brain4Environment","description":"Governed agentic behavioural decision-intelligence system: evidence-grounded diagnosis, intervention strategy, messaging and impact evaluation for environmental behaviour change.","url":"https://brain4environment.com","version":"1.0.0","protocol":"a2a/0.3-compatible-descriptor","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"authentication":{"schemes":["oauth2"],"oauth2":{"authorizationServer":"https://brain4environment.com/.well-known/oauth-protected-resource","note":"Case data requires a signed-in user; row-level security applies as that user."}},"endpoints":{"mcp":"https://brain4environment.com/mcp","cases_api":"https://brain4environment.com/api/cases","agents_api":"https://brain4environment.com/api/agents"},"skills":[{"id":"orchestrator","name":"Orchestrator","description":"Owns the case lifecycle: opens cases, schedules tasks, records the decision trace, closes cases.","inputs":["analysis_jobs","case_states"],"outputs":["case_states","case_tasks","case_trace_events"],"tools":["begin_case","run_task","finish_case"],"model_task_class":null,"escalation":"Fails the case and notifies the requester when any stage cannot recover."},{"id":"input_guard","name":"Input Guard","description":"Screens all free-text case input for prompt-injection and abuse patterns before any model sees it.","inputs":["case_description","challenge_statement"],"outputs":["security_event trace entries","sanitised input"],"tools":["guard_prompt_input"],"model_task_class":null,"escalation":"Refuses the request and logs a security event on a high-confidence injection pattern."},{"id":"translation","name":"Translation Agent","description":"Identifies the language of the incoming challenge, translates non-English intake into English for reasoning, and renders the final report back into the working language.","inputs":["case_description","artifact extracts"],"outputs":["working language","English working text","localised report prose"],"tools":["detect_language","translate_text"],"model_task_class":"standard","escalation":"Falls back to the original text with a qualification when detection is unsure or translation is unavailable."},{"id":"intake","name":"Intake Agent","description":"Normalises the raw challenge into a structured case brief with domain tags and population context.","inputs":["case brief","project metadata"],"outputs":["structured challenge","domain_taxonomy"],"tools":["projects","case_states"],"model_task_class":"fast","escalation":"Requests more information when the challenge is under-specified."},{"id":"retrieval","name":"Retrieval Agent","description":"Hybrid RAG: vector similarity, structured filters and graph walk fused and reranked for the case.","inputs":["query text","domain tags","embeddings"],"outputs":["evidence_bundle","retrieval trace"],"tools":["match_biases","match_evidence_sources","bias_graph_walk"],"model_task_class":"embedding","escalation":"Degrades to structured-only retrieval when embeddings are unavailable; never blocks the case."},{"id":"evidence","name":"Evidence Agent","description":"Assembles the graded evidence bundle behind every claim, with DOI and quality metadata.","inputs":["retrieval records","entity_evidence_sources"],"outputs":["evidence_bundle","citation metadata"],"tools":["evidence_sources","entity_evidence_sources"],"model_task_class":null,"escalation":"Flags claims with no admissible evidence to the assurance agent."},{"id":"behavioural_reasoning","name":"Behavioural Reasoning Agent","description":"Produces the core diagnosis: matched biases, mechanisms, archetypes and the intervention pipeline.","inputs":["case brief","evidence_bundle","knowledge graph"],"outputs":["matched_biases","recommended_interventions","recommended_archetypes"],"tools":["biases","mechanisms","interventions","archetypes"],"model_task_class":"reasoning","escalation":"Abstains via the assurance agent when confidence is below threshold."},{"id":"diagnostic","name":"Diagnostic Agent","description":"Refines the initial diagnosis with structured diagnostic answers from the expert or survey rounds.","inputs":["diagnostic_answers","initial_template"],"outputs":["refined analysis","diagnostic_questions"],"tools":["analysis_jobs","analysis_sessions"],"model_task_class":"standard","escalation":"Keeps the original analysis when answers are too sparse to refine safely."},{"id":"signature","name":"Signature Agent","description":"Computes the eight-dimension behavioural signature of the case for matching and comparison.","inputs":["matched_biases","evidence_bundle"],"outputs":["behavioural_signature"],"tools":["compute_behavioural_signature"],"model_task_class":null,"escalation":"Omits the signature when inputs are insufficient; the analysis still completes."},{"id":"dominance","name":"Dominance Agent","description":"Derives the explicit ranked heuristic (DH) and archetype (DA) dominance profile.","inputs":["matched_biases","driver links","archetype links"],"outputs":["dominance_profile"],"tools":["derive_dominance_profile"],"model_task_class":null,"escalation":"Omits the profile when no dominance signal exceeds the floor."},{"id":"graph","name":"Graph Agent","description":"Materialises the case subgraph of the behavioural knowledge graph for inspection and export.","inputs":["analysis result","bias_relations"],"outputs":["evidence_graph","behavioural_network"],"tools":["bias_graph_walk","build_case_evidence_graph"],"model_task_class":null,"escalation":"Returns an empty graph rather than failing the case."},{"id":"messaging","name":"Messaging Agent","description":"Generates and scores campaign message variants with voice controls, citations and delivery guidance.","inputs":["dominant biases","evidence bundle","voice","copy variants"],"outputs":["message scorecard","variant channel and timing recommendations"],"tools":["score_messaging"],"model_task_class":"standard","escalation":"Flags misaligned variants and proposes gap-filling alternatives."},{"id":"assurance","name":"Assurance Agent","description":"Calibrated uncertainty: maps every result onto recommend / qualify / request-info / escalate / abstain.","inputs":["task outputs","confidence signals","thresholds"],"outputs":["assurance report","assurance_decision trace"],"tools":["uncertainty_thresholds","evaluation_thresholds"],"model_task_class":null,"escalation":"Routes low-confidence cases to the expert review queue."},{"id":"governance","name":"Governance Agent","description":"Watches the model registry and router for drift and enforces policy gates on publication.","inputs":["model_registry","router assignments"],"outputs":["model_registry_drift trace","gate decisions"],"tools":["check_model_registry_drift"],"model_task_class":null,"escalation":"Surfaces drift to platform admins; never silently re-routes."},{"id":"review","name":"Review Agent","description":"Human oversight: prioritises the expert review queue by novelty, disagreement and abstention.","inputs":["assurance reports","case traces"],"outputs":["review queue","review_resolved events"],"tools":["case_states","case_trace_events"],"model_task_class":null,"escalation":"A human expert is the terminal step; the agent only ranks and routes."},{"id":"impact","name":"Impact Agent","description":"Closes the loop: records outcomes, compares treatment vs control, and computes k-anonymous benchmarks.","inputs":["metric_observations","campaign_events"],"outputs":["impact reports","process model","org benchmarks"],"tools":["record_case_outcome","compute_group_comparisons"],"model_task_class":null,"escalation":"Marks impact as non-attributable when assignment is observational."},{"id":"telemetry","name":"Telemetry Agent","description":"Fleet-wide observability: aggregates traces into abstention, failure, latency and override metrics.","inputs":["case_trace_events"],"outputs":["fleet observability rollup"],"tools":["compute_fleet_observability"],"model_task_class":null,"escalation":"None; read-only aggregation."}]}