CtrlK
BlogDocsLog inGet started
Tessl Logo

agui-dotnet-server-tools

Expose server-side (backend) tools an AG-UI agent can call with the AG-UI .NET SDK — C# functions that run on the server, where the server executes the call and feeds the result back to the model. USE FOR: defining an AIFunction with AIFunctionFactory.Create and registering it on the server's IChatClient via ConfigureOptions + UseFunctionInvocation; making the model call your backend function during a run; AOT-safe tool arguments/results (registering a JsonSerializerContext for complex tool parameter types); parallel/concurrent backend tool calls (AllowConcurrentInvocation); TerminateOnUnknownCalls behavior. DO NOT USE FOR: tools that run in the client/frontend (use agui-dotnet-client-tools); pausing a tool for human approval or input (interrupts / human-in-the-loop); plain streaming chat with no tools (use agui-dotnet-streaming-chat); shared state, generative UI, multimodal, or protobuf.

75

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

93%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A tight, self-contained, highly actionable skill: executable code for the full define→register→host path, skill-specific AOT and concurrency guidance, graceful handling of version info (dotnet package search instead of a hardcoded number), and a concrete Verify section. The only gap is the absence of error-recovery guidance in the verification workflow.

Suggestions

Add a brief failure-path note to the Verify section: what to check when TOOL_CALL_RESULT never appears in the stream (e.g. TerminateOnUnknownCalls ending the run early or the tool not being registered on the server's ChatOptions) and what to do when dotnet publish reports trim/AOT warnings (missing JsonSerializerContext entry).

DimensionReasoningScore

Conciseness

Every section earns its place: no padding, no explanation of concepts Claude already knows (nothing about what ASP.NET, JSON, or OpenAI is), and the prose lines each carry skill-specific non-obvious information (e.g. "The same context is registered on the host... and passed to the function", "The model decides whether to batch calls; AllowConcurrentInvocation only controls whether the already-requested calls execute in parallel"). This matches the level-5 'lean and efficient' anchor; level 4 would require identifiable over-explanation, which is absent.

5 / 5

Actionability

The body provides concrete, nearly copy-paste-ready code for every common case: install commands, AIFunctionFactory.Create registration with a JsonSerializerContext, the full minimal-API hosting endpoint, and the .UseFunctionInvocation configuration. Specific examples cover the common cases per the level-5 anchor; the only elisions ("real lookup", undefined endpoint/deploymentName) are inherent to a template, not missing guidance.

5 / 5

Workflow Clarity

The sequence is clear and logical — Install → Define and register → AOT-safe serialization → Host the endpoint → Parallel calls → Anti-patterns → Verify — and the Verify section gives explicit validation checks (watching TOOL_CALL_* events ending in RUN_FINISHED, checking dotnet publish for AOT warnings). It falls short of level 5 because there are no error-recovery/feedback-loop instructions (what to do when the stream lacks TOOL_CALL_RESULT or publish emits trim warnings), fitting the level-4 anchor 'clear sequence with most checkpoints present; minor validation gaps'.

4 / 5

Progressive Disclosure

The skill is self-contained with no bundle files (no references/, scripts/, or assets/ exist), and no content that belongs in a separate file is inlined — there is no oversized API reference buried in the body. Sections are well-organized with clear headers, matching the scoring note that a skill needing no external references can score 5 on well-organized sections alone.

5 / 5

Total

19

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An excellent description: concrete what, explicit USE FOR / DO NOT USE FOR boundaries, specific API names, and third-person voice throughout. The only weakness is missing the most common natural synonyms ("tool calling", "function calling") alongside the API-specific terminology.

Suggestions

Add the natural phrases "tool calling" and "function calling" (the terms .NET developers most commonly use) alongside the API names like AIFunctionFactory.Create and UseFunctionInvocation.

Include the file/project context users may mention, e.g. "server-side tool calling in an ASP.NET / ASP.NET Core backend", to broaden natural trigger coverage.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with specific API names: "defining an AIFunction with AIFunctionFactory.Create and registering it on the server's IChatClient via ConfigureOptions + UseFunctionInvocation", "AOT-safe tool arguments/results (registering a JsonSerializerContext)", "parallel/concurrent backend tool calls (AllowConcurrentInvocation)", and "TerminateOnUnknownCalls behavior". Coverage is comprehensive and matches the level-5 anchor; it is well above level 4 because there are no meaningful gaps in capability coverage.

5 / 5

Completeness

It explicitly answers both what ("Expose server-side (backend) tools... C# functions that run on the server, where the server executes the call and feeds the result back to the model") and when (an explicit "USE FOR:" clause with concrete trigger phrases), plus a "DO NOT USE FOR:" clause. This matches the level-5 anchor exactly; the when-guidance is explicit, not weakly implied as at level 4.

5 / 5

Trigger Term Quality

Good keyword coverage with natural phrasing users would say: "server-side (backend) tools", "C# functions", "AG-UI .NET SDK", "parallel/concurrent", "human-in-the-loop", "streaming chat". It falls short of level 5 because common natural synonyms like "tool calling" and "function calling" (the phrases developers most often use for this task) are absent, even though the technical API terms are comprehensive.

4 / 5

Distinctiveness Conflict Risk

Clear niche with explicit conflict resolution: it redirects to named sibling skills ("use agui-dotnet-client-tools", "use agui-dotnet-streaming-chat") and excludes adjacent topics (interrupts, shared state, generative UI, multimodal, protobuf). Minimal conflict risk — the level-5 anchor fits; level 4 would require some residual overlap that the DO-NOT-USE list already closes off.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
ag-ui-protocol/ag-ui
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.