ToolsDashboard testing

Dashboard testing

Inspect and run Runiq tools in the embedded dashboard.

The embedded dashboard shows typed tools discovered from the Runiq runtime metadata.

Workflow Travel Planner tools dashboard

The Runiq.WorkflowTravelPlanner dashboard lists the tools attached to the travel agents. This makes the capability boundary visible: weather, places, and meal suggestions are separate .NET operations, each attached to the agent that is allowed to use it.

Weather tool contract and attached agent

The Weather tool detail page shows the model-facing description, input/output CLR types, and attached agent. Before an agent uses the tool, you can verify that the runtime contract matches the C# implementation.

Weather tool direct run result

The tool playground runs the native .NET tool directly with structured input. Here the dashboard calls WeatherTool.ExecuteAsync for Istanbul and shows the JSON output that would be returned to an agent.

Expense Desk tools dashboard

Runiq.ExpenseDesk shows the same pattern with business data instead of travel helpers. The expense_search capability is backed by application data and exposed as a typed, inspectable tool.

Expense search tool result

The Expense Search playground demonstrates why tools matter for enterprise apps: the model does not invent totals or records. The tool queries application-owned expense data and returns structured rows that an agent can summarize.

What to inspect

Dashboard areaWhat it shows
Tool nameThe RuniqToolAttribute name used by the model and runtime.
DescriptionThe model-facing description for when the tool should be used.
Input schemaShape generated from the tool input CLR type.
Output schemaShape generated from the tool output CLR type.
Attached agentsAgents that have this tool attached with AddTool<TTool>().
Run resultDirect tool playground output or error.

Run a tool directly

The dashboard maps a direct tool run endpoint under the dashboard API path.

With the default dashboard path /runiq:

HTTP
POST /runiq/api/tools/{toolName}/run
Content-Type: application/json

{
  "input": {
    "city": "Istanbul"
  }
}

If the dashboard path is /dashboard, the endpoint is:

HTTP
POST /dashboard/api/tools/{toolName}/run

The response shape is:

JSON
{
  "isSuccess": true,
  "outputJson": "{\"city\":\"Istanbul\",\"temperatureCelsius\":22}",
  "errorCode": null,
  "errorMessage": null
}

This is useful for testing the tool contract directly before you rely on an agent to call it.

For a business-data tool such as expense_search, direct testing is especially useful. You can verify that filters, totals, and returned rows are correct before allowing an agent to use those results in a natural-language answer.

Suggested test inputs

For weather:

JSON
{
  "city": "Istanbul"
}

For places:

JSON
{
  "city": "Istanbul"
}

For meal_suggestion:

JSON
{
  "city": "Istanbul"
}

For expense_search in Runiq.ExpenseDesk:

JSON
{
  "year": 2026,
  "department": "Sales"
}

The tool playground validates the native .NET operation. Agent chat validates whether the model chooses the right tool and uses the result correctly.

On this page