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