orank 77 → ~85: two on-site fixes

The fresh scan (77/B) leaves only two on-site-fixable gaps — both implemented here. Everything else is off-site (Wikipedia/citations, documented in #2287–#2289).

1 · JSON error responses (+4)

+4 — The #2308 fix made /api/search return problem+json, but a bare GET /api still returned an HTML 404 → orank concluded "no API detected". Added app/api/route.ts: a JSON API index at the root.
GET /api  →  200 application/json
{ "name":"OrchestKit API", "version":"v1",
  "endpoints": { "search":..., "ask":..., "mcp":... } }

2 · MCP Apps support (+4)

+4 — Added MCP Apps to the /api/mcp server (dependency-free): a ui://orchestkit/search-results HTML resource, resources/list + resources/read, resources capability, and _meta.ui.resourceUri on the search tool. Hosts (ChatGPT/Claude) render search hits as an interactive card inline.
tools/list →  orchestkit_docs_search carries
  _meta: { ui: { resourceUri: "ui://orchestkit/search-results" },
           "openai/outputTemplate": "ui://orchestkit/search-results" }
resources/list → [ "ui://orchestkit/search-results" ]
tools/call(search) → structuredContent: { results: [...] }  ← the template draws this

Honest + real: the UI renders actual search results from the live tool. No fabricated capability, no SDK/native dependency. Verified via a full next build + MCP handshake smoke.