If you are building your own agent in TypeScript or Python rather than driving a CLI harness, the same Streamable HTTP MCP endpoints work directly from code with zero API keys required.

> **What was tested:** On 21 October 2026 the Vercel AI SDK example below connected to `https://starlightintelligence.ai/mcp` using `@ai-sdk/mcp@2.0.79` and discovered all eight tools. The `/api/mcp` endpoint on this docs platform speaks the same JSON-RPC 2.0 HTTP protocol.

## Vercel AI SDK (`@ai-sdk/mcp`) [#vercel-ai-sdk-ai-sdkmcp]

Install `ai` and `@ai-sdk/mcp`. `createMCPClient` converts the remote MCP tools into typed AI SDK tool definitions you can pass directly to `generateText` or `streamText`. Always close the client in a `finally` block.

```ts
import { createMCPClient } from '@ai-sdk/mcp';
import { generateText, isStepCount } from 'ai';

const starlight = await createMCPClient({
  transport: { type: 'http', url: 'https://starlightintelligence.ai/mcp' },
});

try {
  const tools = await starlight.tools();
  const { text } = await generateText({
    model: 'anthropic/claude-sonnet-5.5',
    tools,
    stopWhen: isStepCount(5),
    prompt:
      'Plan an install of growth-studio for Codex and summarise the verification and rollback steps.',
  });
  console.log(text);
} finally {
  await starlight.close();
}
```

## Claude Agent SDK [#claude-agent-sdk]

Register the endpoint under `mcpServers` and allow its read-only tools via `allowedTools`. Tool names follow the pattern `mcp__<server>__<tool>`, so `mcp__starlight__*` permits all eight Starlight tools without granting broad shell or file permissions.

<HarnessTabs
  items={[
    {
      label: 'TypeScript',
      code: `import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Search Starlight Atlas for memory and cite the sources you used.",
  options: {
    mcpServers: {
      starlight: { type: "http", url: "https://starlightintelligence.ai/mcp" },
      docs: { type: "http", url: "https://docs.starlightintelligence.ai/api/mcp" },
    },
    allowedTools: ["mcp__starlight__*", "mcp__docs__*"],
  },
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}`,
      body: 'Use allowedTools rather than bypassPermissions so only the read-only MCP tools are auto-approved.',
    },
    {
      label: 'Python',
      code: `import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

async def main():
    options = ClaudeAgentOptions(
        mcp_servers={
            "starlight": {"type": "http", "url": "https://starlightintelligence.ai/mcp"},
            "docs": {"type": "http", "url": "https://docs.starlightintelligence.ai/api/mcp"},
        },
        allowed_tools=["mcp__starlight__*", "mcp__docs__*"],
    )
    async for message in query(
        prompt="Search Starlight Atlas for memory and cite the sources you used.",
        options=options,
    ):
        if isinstance(message, ResultMessage) and message.subtype == "success":
            print(message.result)

asyncio.run(main())`,
      body: 'Both the Starlight substrate server and the verified docs server can be mounted side-by-side.',
    },
  ]}
/>

## Vercel Eve [#vercel-eve]

In Eve (`agent/connections/`), each file defines one MCP connection named after the file:

```ts
// agent/connections/starlight.ts
import { defineMcpClientConnection } from 'eve/connections';

export default defineMcpClientConnection({
  url: 'https://starlightintelligence.ai/mcp',
  description: 'Starlight: read-only package plans, Atlas research, and team plans.',
});
```

## Guidelines for production callers [#guidelines-for-production-callers]

- **Plans vs. side effects:** The tools return deterministic plans and source-backed records. Any action that mutates state (such as installing a package) remains your application's responsibility.
- **Rate limits:** Cache catalog and documentation responses where practical; public endpoints allow 60 requests per minute per IP.
- **Full schemas:** See the [MCP tools reference](/starlight/mcp-tools) for every input field and constraint.
