# Common Participant Questions

> **Summary — what this page covers**
> Quick answers to the recurring Day 2 questions. Carry over the existing Day 2 FAQ and keep
> answers to a few sentences. The API-vs-subscription confusion is the #1 item — lead with it.

## My Pro subscription works for Claude Code — why do I need an API key today?

Pro/Max powers **Claude.ai and Claude Code**, but the Anthropic **API** is billed **separately**
(pay-as-you-go). Day 2 calls the API directly, so it needs a **Console key** — not your subscription.
New Console accounts get a small trial credit, which covers the workshop. See
[Before You Begin](01-before-you-begin.md#api-access-read-carefully--this-is-different-from-day-1).

## Which NuGet package is the official one?

**`Anthropic` (v12.x)** — the package Anthropic maintains. Community options exist (`Anthropic.SDK`,
`Claudia`) and work fine, but we target the official one. ⚠️ The old **`tryAGI.Anthropic` v3.x** is a
different lineage — don't pull it by mistake; migrate/upgrade if you're on it.

## Why register AnthropicClient as a Singleton?

It holds an **`HttpClient`** internally. Registering it Scoped or Transient creates a new socket per
request and leads to **socket exhaustion** under load — the same reason you use `IHttpClientFactory`.
Your `IClaudeService` wrapper can be Scoped; the client underneath is Singleton.

## Do I need an OpenAI key for the RAG section?

No. Use the **free/local path** — **Ollama + `nomic-embed-text`** — behind the same
`EmbeddingService` interface, and set the Qdrant collection's vector size to the model's dimensions
(768). No OpenAI key required.

## How is the C# MCP server different from yesterday's GitHub MCP server?

Yesterday you **used** a server as a host; today you **build** one. Same architecture
(host/client/server; tools/resources/prompts) — you implement the tools in C#, wire them to the
BookTracker database, and expose them over **Streamable HTTP** so any host, including Claude Code,
can call them.

## How do I keep API costs under control?

**Prompt caching** (~90% off cached input), **batch processing** (~50% off non-interactive work),
**Haiku** for mechanical/CI tasks, and **per-request + per-user token budgets**. See the
[Models & Cost Reference](14-models-cost-reference.md).

## How do I actually enforce our AI governance rules?

**Deterministic controls, not prompts** — `PreToolUse` **hooks** (exit 2 to block), **permissions**,
and **managed settings** (org-wide, non-overridable). A prompted "never do X" is a suggestion; a
managed setting is enforcement. This ties straight back to Day 1 Section 2.
