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.

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 pathOllama + 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.

How do I actually enforce our AI governance rules?

Deterministic controls, not promptsPreToolUse 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.