Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/managedcode/prompterone/structured-outputgit clone --depth 1 https://github.com/managedcode/PrompterOneWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00010 | $0.01686 |
| Opus 5 | $0.00005 | $0.00843 |
| Sonnet 5 | $0.00002 | $0.00337 |
| Haiku 4.5 | $0.00001 | $0.00169 |
Grade A, and why
structured-output scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- structured-output — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 204 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Producing Structured Output with Agents
::: zone pivot="programming-language-csharp"
This tutorial step shows you how to produce structured output with an agent, where the agent is built on the Azure OpenAI Chat Completion service.
[!IMPORTANT] Not all agent types support structured output. This step uses a
ChatClientAgent, which does support structured output.
Prerequisites
For prerequisites and installing NuGet packages, see the Create and run a simple agent step in this tutorial.
Create the agent with structured output
The ChatClientAgent is built on top of any xref:Microsoft.Extensions.AI.IChatClient implementation.
The ChatClientAgent uses the support for structured output that's provided by the underlying chat client.
When creating the agent, you have the option to provide the default xref:Microsoft.Extensions.AI.ChatOptions instance to use for the underlying chat client.
This ChatOptions instance allows you to pick a preferred xref:Microsoft.Extensions.AI.ChatResponseFormat.
Various options for ResponseFormat are available:
- A built-in xref:Microsoft.Extensions.AI.ChatResponseFormat.Text?displayProperty=nameWithType property: The response will be plain text.
- A built-in xref:Microsoft.Extensions.AI.ChatResponseFormat.Json?displayProperty=nameWithType property: The response will be a JSON object without any particular schema.
- A custom xref:Microsoft.Extensions.AI.ChatResponseFormatJson instance: The response will be a JSON object that conforms to a specific schema.
This example creates an agent that produces structured output in the form of a JSON object that conforms to a specific schema.
The easiest way to produce the schema is to define a type that represents the structure of the output you want from the agent, and then use the AIJsonUtilities.CreateJsonSchema method to create a schema from the type.
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.Extensions.AI;
public class PersonInfo
{
public string? Name { get; set; }
public int? Age { get; set; }
public string? Occupation { get; set; }
}
JsonElement schema = AIJsonUtilities.CreateJsonSchema(typeof(PersonInfo));
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 204 lines · 10 tokens per session scan A 8e3d571a9af0
structured-output is an agent published in the GitHub repository managedcode/PrompterOne (42 stars, last pushed 3mo ago), licensed MIT. It adds 10 tokens to every session and 1,686 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
se-technical-writer
Technical writing specialist. Use PROACTIVELY to create or update developer documentation under docs/ when new features are implemented or implementation details need documenting. Produces guides, tutorials, ADRs, and reference docs.
release-manager
Owns the end-to-end modelcontextprotocol/csharp-sdk release process, orchestrating the prepare-release and publish-release skills (and the bump-version and breaking-changes skills they build on) across five stages: prepare (assess SemVer, bump the version, run ApiCompat/ApiDiff, review docs, draft release notes, open…
wpf-data-binding-expert
WPF data binding specialist. Implements complex bindings (MultiBinding, PriorityBinding), custom converters, validation patterns, and debugging binding issues.
wpf-control-designer
WPF CustomControl design and implementation specialist. Defines DependencyProperty, implements Parts and States Model, OnApplyTemplate patterns.
serena-initializer
Serena MCP initialization agent. Checks if current project is activated and onboarded in Serena, performs activation and onboarding if not completed. Use when starting work on a new project or when Serena tools fail.
theme-slot-auditor
Read-only auditor for Fluence.Wpf theming structure. Use after any theme, brush, color, accent, or ApplicationThemeManager change to verify the three-slot MergedDictionaries invariant, that slot [0] is rebuilt and replaced every Apply, DynamicResource usage, BrushFactory auto-twinning, canonical WinUI key names, and…