import { Caesar } from "caesar-search";
const caesar = new Caesar(); // reads CAESAR_API_KEY; anonymous works without a key
export const caesarTools = [
{
name: "caesar_search",
description: "Search the web with Caesar and return ranked results with doc_id handles.",
input_schema: {
type: "object",
properties: {
query: { type: "string" },
max_results: { type: "integer", minimum: 1, maximum: 50 },
response_format: { type: "string", enum: ["compact", "standard", "full"] },
},
required: ["query"],
},
},
{
name: "caesar_read",
description: "Read a Caesar doc_id or URL as clean markdown.",
input_schema: {
type: "object",
properties: {
target: { type: "string" },
query: { type: "string" },
max_chars: { type: "integer", minimum: 1, maximum: 50000 },
start_char: { type: "integer", minimum: 0 },
},
required: ["target"],
},
},
];
export async function runCaesarToolCall(call: {
name: string;
input: Record<string, unknown>;
}) {
if (call.name === "caesar_search") {
const query = String(call.input.query);
const maxResults = Number(call.input.max_results ?? 8);
const responseFormat = String(call.input.response_format ?? "compact");
return caesar.search(query, {
maxResults,
verbosity: responseFormat as "compact" | "standard" | "full",
});
}
if (call.name === "caesar_read") {
const target = String(call.input.target);
return caesar.read(target, {
query: call.input.query ? String(call.input.query) : undefined,
maxChars: Number(call.input.max_chars ?? 12000),
startChar: Number(call.input.start_char ?? 0),
});
}
throw new Error(`unknown tool: ${call.name}`);
}