Skip to main content

The bet

EasyAF exists so a .NET team can ship a real application without inventing a framework first. The APIs it produces are already standards: OData, REST, ordinary HTTP. Assistants do not speak those APIs fluently. Left alone, a model will download $metadata, burn thousands of tokens guessing at Customers, and still miss $filter. You pay for the round trips. The customer pays for the tokens. Nobody gets a good answer. EasyAF.AI is the other half of that bet. Keep the API. Give the assistant a catalog and a protocol.

Standards in, standards out

OData stays OData

Filter, expand, page, and act over HTTP the way the service already does. MCP does not become a second query language.

MCP stays MCP

Claude Desktop, Cursor, Claude Code, and any other MCP harness connect the same way. No vendor SDK in the assistant.

Catalog, not dump

$metadata is for compilers. The assistant gets named tools, compact type cards, and a short list of rules.

Identity is a host concern

A generic MCP server has more than one user. Tasks belong to the principal that created them. Stores persist that rule.

What the numbers look like

OData $metadata is honest and huge. A compact catalog is the same service, described for a model: That reduction is the product. Faster answers, smaller bills, fewer hallucinated entity sets.

Three libraries, one idea

MCP Essentials is the hosting layer. The official MCP C# SDK’s in-memory task store is process-wide. A remote server that more than one person uses needs one more rule: the user who started a task is the only one who can poll, update, or cancel it. Core ships that store. Entity Framework Core persists it on the database you already run. OData MCP is the queryable-AI layer. Local MCP is a small app on your machine that talks to any OData v4 service. Remote MCP is a NuGet package you put on the API you host, so customers point their harness at https://your-api/odata/mcp. Both share a catalog built from $metadata. ClaudeEssentials is the agent-runtime layer. Claude Code hooks are JSON over stdin/stdout. This library is the AOT-ready, source-generated model of every hook Claude can fire, so your policy is C# instead of hand-rolled JSON. Each tab is that project’s own documentation. EasyAF.AI does not restate it. This site exists to show how they compose.

What you do not take on

You do not teach the model OData. You do not paste CSV into the prompt. You do not stand up a second, AI-only API beside the one your apps already call. The assistant uses the same service, through a smaller door.