Configuring platform AI agents
Register AI agents with the platform hub so the Concert assistant can route user requests to the appropriate agents.
Register platform AI agents in the hub's agent card registry to enable the Concert Home AI Chat feature. The platform includes two categories of agents: platform-level agents that provide core AI capabilities, and product-specific agents that coordinate requests for installed capability products. Register all platform-level agents during platform setup. Register a product-specific agent only for capabilities that you installed.
Platform AI agents
- Platform-level agents
- Provide core AI capabilities. Their endpoints are fixed platform services within the cluster:
- Dashboard Agent
- Generates UI dashboards that visualize role-specific or application-specific product data.
- Summarize Agent
- Synthesizes complex data into concise insights.
- Natural Language to GraphQL Agent
- Generates GraphQL queries that retrieve data across multiple products.
- Fallback Agent
- Screens user inputs to help ensure that requests remain relevant to the domain.
- Product-specific agents
- Coordinate requests for installed capability products. Their endpoints depend on the product host:
- Observability Coordinator Agent
- Resolves queries that are related to system observability data. Register this agent only if you installed Concert Core Observability.
- Optimization Coordinator Agent
- Resolves queries that are related to system performance optimization. Register this agent only if you installed Concert Optimize.
- Concert Coordinator Agent
- Resolves queries that are related to application CVEs, resilience, and other Concert product capabilities.
- Concert Code Agent
- Handles code-related requests for the Concert product.
Before you begin
Before you can register any agents, set up your watsonx.ai instance and configure the required secrets so the data layer can connect to watsonx.ai.
Each agent registration request requires the following information:
- An agent card registration URL
- The URL is fixed to the location where the platform hub is installed, by using the URI
/platform_hub/ai/registry/agent-cards/submit. For example, if the platform hub is installed onconcertplat1.example.comand runs on port 13443, the URL ishttps://concertplat1.example.com:13443/platform_hub/ai/registry/agent-cards/submit. - An active API key
- You retrieve the API key from the
itom-secretssecret in the platform namespace:kubectl get secret itom-secrets -n $HUB_NS -o json | jq '.data | map_values(@base64d)' | grep AUTH_API_KEYSThe command returns the key and its corresponding value. The value is the API key:
"AUTH_API_KEYS": "{API_key_value}" - The agent's endpoint URL
- Platform-level agents use fixed service endpoints within the cluster. A typical URL has the
format
https://{service-name}.<hub-namespace>.svc.cluster.local:{service-port}, where{service-name}is the AI agent service,<hub-namespace>is the namespace that you used to install the platform, and{service-port}is the port that the service uses. Product-specific agents use the host where the product is installed and the port from which the product serves requests. - A JSON request body
- Contains agent metadata, the agent's endpoint URL, and security configuration details. See the following examples for the request body content for each agent.
Register AI agents
You can register agents by using any standard REST client or curl commands. Replace the variables with values that apply to your environment.
- Set environment variables for the registration URL and API key.
export AGENT_CARD_REGISTRATION_URL="https://{HUB_HOST}:{HUB_PORT}/platform_hub/ai/registry/agent-cards/submit" export API_KEY="{AGENT_REGISTRY_API_KEY}"Replace
{HUB_HOST}with the platform hub hostname,{HUB_PORT}with the platform hub port, and{AGENT_REGISTRY_API_KEY}with the API key that you retrieved from theitom-secretssecret. - Register each agent by submitting its agent card.
The following examples show the registration commands for each agent. Replace
<hub-namespace>in agent URLs with the namespace where you installed the platform.After you run the command to register an agent, look for output that is similar to the following example to confirm that registration succeeded.{"success":true,"agent_name":"<agent-name-from-metadata>","cf_storage_id":"<string>","message":"Agent card registered successfully","storage":"contextforge"}
- Dashboard Agent
-
DASHBOARD_AGENT_URL="https://ibm-itom-ui-dashboard-agent-svc.<hub-namespace>.svc.cluster.local:51907" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "ui-dashboard", "agentType": "generic", "author": "admin", "description": "A2A agent for generating ITOM dashboard definitions from natural language", "version": "1.0.0", "display_name": "UI Dashboard Agent", "organization": "itom", "category": "ui-generation" }, "configuration": { "endpoint_url": "$DASHBOARD_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Summarize Agent
-
SUMMARIZE_AGENT_URL="https://ibm-itom-summarize-agent-svc.<hub-namespace>.svc.cluster.local:51908" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "ibm-itom-summarize-agent", "agentType": "generic", "author": "admin", "description": "Runs a list of GraphQL queries and narrates the combined results in the format the caller requests (text, Leadspace JSON, or markdown). Input is a concrete list of GraphQL operations - not free-form text, not another agent'\''s output. Never use it as a planner step except as part of the data-model-query skill. In other cases use it solely for the execution and summarization", "version": "1.0.0", "display_name": "SummarizeAgent", "organization": "itom", "category": "productivity" }, "configuration": { "endpoint_url": "$SUMMARIZE_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Natural Language to GraphQL Agent
-
NL_TO_GQL_AGENT_URL="https://ibm-itom-nl-to-gql-agent-svc.<hub-namespace>.svc.cluster.local:51906" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "nl-to-gql-agent", "agentType": "generic", "author": "admin", "description": "Natural Language to GraphQL Agent", "version": "1.0.0", "display_name": "NL to GraphQL Agent", "organization": "itom", "category": "api-generation" }, "configuration": { "endpoint_url": "$NL_TO_GQL_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Fallback Agent
-
FALLBACK_AGENT_URL="https://ibm-itom-fallback-agent-svc.<hub-namespace>.svc.cluster.local:51910" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "ibm-itom-fallback-agent", "agentType": "generic", "author": "admin", "description": "Fallback agent", "version": "1.0.0", "display_name": "ibm-itom-fallback-agent", "organization": "itom", "category": "general" }, "configuration": { "endpoint_url": "$FALLBACK_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Observability Coordinator Agent
-
Register this agent only if you installed Concert Observe.
Replace
{OBSERVE_HOST}with the hostname where you installed Concert Observe.OBSERVABILITY_COORDINATOR_AGENT_URL="https://{OBSERVE_HOST}/a2a" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "observability-coordinator", "agentType": "generic", "author": "admin", "description": "Observability coordinator", "version": "1.0.0", "display_name": "observability-coordinator", "organization": "itom", "category": "observability" }, "configuration": { "endpoint_url": "$OBSERVABILITY_COORDINATOR_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Optimization Coordinator Agent
-
Register this agent only if you installed Concert Optimize.
Replace
{OPTIMIZE_HOST}with the hostname where you installed Concert Optimize.OPTIMIZATION_COORDINATOR_AGENT_URL="https://{OPTIMIZE_HOST}/turbonomic/turboai/a2a" curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "optimization-coordinator", "agentType": "generic", "author": "admin", "description": "Optimization coordinator", "version": "1.0.0", "display_name": "optimization-coordinator", "organization": "itom", "category": "optimization" }, "configuration": { "endpoint_url": "$OPTIMIZATION_COORDINATOR_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Concert Coordinator Agent
-
Register this agent only if you installed Concert Protect and Concert Resilience.
Replace
{CONCERT_HOST}with the hostname where you installed Concert Protect and Concert Resilience.CONCERT_COORDINATOR_AGENT_URL="https://{CONCERT_HOST}/concert/py-utils/a2a curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "concert-coordinator", "agentType": "generic", "author": "admin", "description": "Concert coordinator", "version": "1.0.0", "display_name": "concert-coordinator", "organization": "itom", "category": "protect" }, "configuration": { "endpoint_url": "$CONCERT_COORDINATOR_AGENT_URL", "protocol": "a2a" }, "security": { "access_level": "public", "requires_authentication": false, "authentication_type": "none" } } EOF - Concert Code Agent
-
Register this agent only if you purchased and installed Concert Secure Coder.
curl -k -X POST "$AGENT_CARD_REGISTRATION_URL" \ -H "Secret: $API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF { "metadata": { "name": "ibm-itom-concert-code-agent", "agentType": "generic", "author": "", "description": "", "version": "1.0", "display_name": "ibm-itom-concert-code-agent", "organization": "itom", "category": "productivity" }, "configuration": { "endpoint_url": "https://ibm-itom-concert-code-agent-svc:51909", "protocol": "a2a" }, "security": { "access_level": "restricted", "requires_authentication": true, "authentication_type": "api_key" } } EOF
Verify registered agents
After you register the agents you need, you can verify that they are successfully registered with your platform hub deployment.
In the following examples, replace <hub-namespace> with the namespace where
you installed the platform hub.
- Run the following command to retrieve the required database name and database
username.
kubectl get secret app-cfg-oob-secret -n <hub-namespace> -o json \ | jq '.data | {KC_DB_USERNAME: .KC_DB_USERNAME, KC_DB_URL_DATABASE: .KC_DB_URL_DATABASE} | map_values(@base64d)'Use this output to capture the following values:
KC_DB_USERNAME: the database usernameKC_DB_URL_DATABASE: the database name
You need the username in step 3.
-
Run the following command to identify the embedded database pod.
kubectl get pods -n <hub-namespace> | grep ibm-solis-embedded-dbThis command lists all pods in the namespace and filters for the embedded database pod.
-
Query the database for registered agents.
Replace
<username>with the database username that you retrieved in step 1. Replace<db-pod-name>with the pod name that you retrieved in step 2.kubectl exec -it <db-pod-name> -n <hub-namespace> -- \ psql -U <username> -d solisdb \ -c "select name, endpoint_url from mcp_gateway.a2a_agents"This query returns the following details for all registered agents.
name: the agent nameendpoint_url: the agent endpoint used by the system
-
Confirm that the agents you registered are listed in the output.
Next steps
After you register the AI agents, configure authentication for the platform. See Configuring authentication.