{% extends "base.html" %} {# Mode is "register" (default) or "complete" (filling in a LibreChat-synced agent). #} {% set is_complete_mode = (mode is defined) and (mode == "complete") %} {% set form_action = (base_path + "/agent-complete/" + agent._id|string) if is_complete_mode else (base_path + "/agent-register") %} {% set page_heading = "Complete Agent Registration" if is_complete_mode else "Register AI Agent" %} {% set page_subtitle = "Fill in the missing fields to complete this agent's registration." if is_complete_mode else "Add a new AI agent to the AgentHub registry" %} {% set submit_label = "Complete Registration" if is_complete_mode else "Register Agent" %} {% set a = agent if is_complete_mode else {} %} {% block title %}{{ page_heading }} - AgentHub{% endblock %} {% block style %} {% endblock %} {% block content %}

{{ page_heading }}

{{ page_subtitle }}

{% if is_complete_mode %} {% endif %}
1 Identity
Use a clear, descriptive name that reflects what the agent does — e.g. [Function] + [Output] + [Version].
{% if is_complete_mode and a.agent_contact_person %}{{ a.agent_contact_person }}{% else %}{{ current_user.email }}{% endif %}
Filled from your login. This person is the primary contact for questions or issues relating to this agent.
The Group Company this agent sits under.
{% set current_status = a.agent_status|default('Development', true) %}
{% set scope_pref = prefilled_client_scope|default('', true) %}
Is this an internal tool, a cross-client asset, or built exclusively for one client? This also determines IP ownership in Section 4.
Stored as the agent's studio name.

2 Classification & Purpose
{% set cls = a.agent_classification|default('', true) %}
🔧
Utility
A single-purpose tool that does one specific task — e.g. summariser, formatter, tone adjuster.
⚙️
Functional
A multi-step agent completing a defined workflow — e.g. brief writer, campaign planner.
🔍
Supervisory
Orchestrates or oversees other agents — acts as a coordinator, router, or planner.
🛡️
Guardian
Monitors, filters, and enforces safety and compliance guardrails on other agents or outputs.
{% set disc = a.discipline|default('', true) %}
A brief summary of the agent's function and intended outcome. 0 / 300
{# §5h: collector defaults purpose=description for 94% of agents. Leave purpose blank in that case so the user writes a real one. #} {% set purpose_value = '' if (is_complete_mode and a.agent_purpose == a.agent_description) else a.agent_purpose|default('', true) %}
0 / 200
Separate with commas.
Who is this agent built for?

3 Autonomy & Safety
{% set aut = a.autonomy_level|default('', true) %}
👤
Human-Led
A human reviews and approves every action before it happens.
🔄
Hybrid
Human sign-off at key decision points, with automation in between.
🤖
Autopilot
Fully automated. A human monitors but does not intervene. Senior sign-off required.
Higher autonomy levels require additional sign-off before deployment. If unsure, select Hybrid and discuss with your team lead.
These confirmations are recorded but do not block submission. If you're unsure, please check with your technical lead before going live.

4 Intellectual Property
{% set ip = a.ip_ownership|default('', true) %}
🏢
Brandtech IP
An internal tool built on Brandtech's platform. IP belongs to the Group.
🤝
Client IP
Built specifically for a client. The agent's configuration and instructions belong to them.
⚖️
Shared / TBD
Ownership to be agreed. Legal review required before client-facing deployment.
This should align with the Client Scope selected in Section 1. If in doubt, choose Shared / TBD and flag for review.

5 Tech Stack
{% set fm = a.foundation_model|default('', true) %} {% set known_models = ['GPT-4o','GPT-4o Mini','GPT-4 Turbo','Claude 3.5 Sonnet','Claude 3 Haiku','Claude 3 Opus','Gemini 1.5 Pro','Gemini 1.5 Flash','Llama 3.1 70B','Mistral Large','Custom / Other'] %}
The primary model at time of registration. Please keep this updated if the model changes over time.
The platform or environment where this agent is deployed.
{% set checked_caps = prefilled_known_capabilities|default([], true) %} {% set cap_options = [ ('RAG', 'fa-database', 'RAG — Retrieval Augmented Generation'), ('Web', 'fa-globe', 'Web Search / Browsing'), ('API/MCP', 'fa-plug', 'API / MCP Connections'), ('Image Gen', 'fa-image', 'Image Generation'), ('Code Execution', 'fa-code', 'Code Execution'), ('File Operations', 'fa-file-alt', 'File Read / Write'), ('Email/Calendar', 'fa-envelope', 'Email / Calendar Integration'), ('Multi-Agent', 'fa-network-wired', 'Multi-Agent Orchestration'), ] %}
{% for value, icon, label in cap_options %}
{{ label }}
{% endfor %}
Select every tool or capability this agent has access to. Declaring these accurately helps with oversight and access reviews.
Comma-separated. These will be appended to the capability list.

6 Data Safety
{% set pii_yes = prefilled_pii_handles|default(false, true) %}
Written approval is required before this agent can be deployed

Agents that process personal data or confidential client information require explicit written sign-off from the relevant client and the Group Legal team before going live. Please obtain and record that approval below.

{% set pii_consent_pre = a.pii.consent_recorded|default(false, true) if a.pii else false %}
If you're unsure whether your agent touches personal data, err on the side of caution and select Yes.

7 Performance & Testing
Most important for client-facing agents. Documenting your testing approach helps with reviews and builds confidence when sharing the agent more broadly.

Declarations
{% endblock %} {% block scripts %} {% endblock %}