CSharpToJsonSchema 3.10.2-dev.69

CSharpToJsonSchema

Nuget package dotnet License: MIT Discord

Features 🔥

  • Source generator to define functions natively through C# interfaces and individual methods
  • Doesn't use Reflection
  • All modern .NET features - nullability, trimming, NativeAOT, etc.
  • Tested for compatibility with OpenAI/Ollama/Anthropic/LangChain/Gemini

Usage

Interface

using CSharpToJsonSchema;

public enum Unit
{
    Celsius,
    Fahrenheit,
}

public class Weather
{
    public string Location { get; set; } = string.Empty;
    public double Temperature { get; set; }
    public Unit Unit { get; set; }
    public string Description { get; set; } = string.Empty;
}

[GenerateJsonSchema(Strict = true)] // false by default. You can't use parameters with default values in Strict mode.
public interface IWeatherFunctions
{
    [Description("Get the current weather in a given location")]
    public Task<Weather> GetCurrentWeatherAsync(
        [Description("The city and state, e.g. San Francisco, CA")] string location,
        Unit unit,
        CancellationToken cancellationToken = default);
}

public class WeatherService : IWeatherFunctions
{
    public Task<Weather> GetCurrentWeatherAsync(string location, Unit unit = Unit.Celsius, CancellationToken cancellationToken = default)
    {
        return Task.FromResult(new Weather
        {
            Location = location,
            Temperature = 22.0,
            Unit = unit,
            Description = "Sunny",
        });
    }
}

var tools = service.AsTools();

Methods


[FunctionTool]
public Task<Weather> GetCurrentWeatherAsync(string location, Unit unit = Unit.Celsius, CancellationToken cancellationToken = default)
{
    return Task.FromResult(new Weather
    {
        Location = location,
        Temperature = 22.0,
        Unit = unit,
        Description = "Sunny",
    });
}

var tools = new Tools([GetCurrentWeatherAsync])

//Access list of CSharpToJsonSchema.Tool
var myTools = tools.AvailableTools

//Implicit Conversion to list of CSharpToJsonSchema.Tool
List<Tool> myTools = tools

Support

Priority place for bugs: https://github.com/tryAGI/CSharpToJsonSchema/issues
Priority place for ideas and general questions: https://github.com/tryAGI/CSharpToJsonSchema/discussions
Discord: https://discord.gg/Ca2xhfBf3v

Acknowledgments

JetBrains logo

This project is supported by JetBrains through the Open Source Support Program.

CodeRabbit logo

This project is supported by CodeRabbit through the Open Source Support Program.

Showing the top 20 packages that depend on CSharpToJsonSchema.

Packages Downloads
Anthropic
Generated C# SDK based on official Anthropic OpenAPI specification.
1

Version Downloads Last updated
3.10.2-dev.69 1 02/11/2026
3.10.2-dev.39 1 02/11/2026
3.10.2-dev.34 1 02/11/2026
3.10.2-dev.32 1 02/11/2026
3.10.2-dev.31 1 02/11/2026
3.10.2-dev.29 1 02/11/2026
3.10.2-dev.28 1 02/11/2026
3.10.2-dev.26 1 02/11/2026
3.10.2-dev.25 1 02/11/2026
3.10.2-dev.22 1 02/11/2026
3.10.2-dev.21 1 02/11/2026
3.10.2-dev.18 1 02/11/2026
3.10.2-dev.16 1 02/11/2026
3.10.1 0 11/13/2024
3.9.2-dev.3 1 02/11/2026
3.9.2-dev.2 1 02/11/2026
3.9.1 0 10/18/2024
3.9.0 0 10/18/2024
3.8.2-dev.13 1 02/11/2026
3.8.2-dev.10 1 02/11/2026
3.8.2-dev.9 1 02/11/2026
0.0.0-dev.1 1 02/11/2026