@emergentmethods/asknews-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +121 -0
  3. package/dist/bin.js +12287 -0
  4. package/dist/bin.js.map +7 -0
  5. package/package.json +79 -0
  6. package/scripts/postinstall.mjs +26 -0
  7. package/skills/asknews-cli/SKILL.md +94 -0
  8. package/skills/asknews-cli/references/commands/alerts.md +135 -0
  9. package/skills/asknews-cli/references/commands/api-alerts.md +186 -0
  10. package/skills/asknews-cli/references/commands/api-analytics.md +31 -0
  11. package/skills/asknews-cli/references/commands/api-autofilter.md +31 -0
  12. package/skills/asknews-cli/references/commands/api-byok.md +72 -0
  13. package/skills/asknews-cli/references/commands/api-charts.md +28 -0
  14. package/skills/asknews-cli/references/commands/api-chat.md +108 -0
  15. package/skills/asknews-cli/references/commands/api-distribution.md +46 -0
  16. package/skills/asknews-cli/references/commands/api-forecast.md +44 -0
  17. package/skills/asknews-cli/references/commands/api-graph.md +41 -0
  18. package/skills/asknews-cli/references/commands/api-index-urls.md +32 -0
  19. package/skills/asknews-cli/references/commands/api-news.md +164 -0
  20. package/skills/asknews-cli/references/commands/api-newsletters.md +236 -0
  21. package/skills/asknews-cli/references/commands/api-ping.md +19 -0
  22. package/skills/asknews-cli/references/commands/api-profile.md +27 -0
  23. package/skills/asknews-cli/references/commands/api-reddit.md +34 -0
  24. package/skills/asknews-cli/references/commands/api-stories.md +75 -0
  25. package/skills/asknews-cli/references/commands/api-websearch.md +37 -0
  26. package/skills/asknews-cli/references/commands/api-wiki.md +33 -0
  27. package/skills/asknews-cli/references/commands/api.md +52 -0
  28. package/skills/asknews-cli/references/commands/auth.md +50 -0
  29. package/skills/asknews-cli/references/commands/cli.md +31 -0
  30. package/skills/asknews-cli/references/commands/index.md +41 -0
  31. package/skills/asknews-cli/references/commands/news.md +89 -0
  32. package/skills/asknews-cli/references/commands/reddit.md +38 -0
  33. package/skills/asknews-cli/references/commands/request.md +34 -0
  34. package/skills/asknews-cli/references/commands/research.md +73 -0
  35. package/skills/asknews-cli/references/commands/stories.md +74 -0
  36. package/skills/asknews-cli/references/commands/web.md +40 -0
  37. package/skills/asknews-cli/references/commands/wiki.md +39 -0
  38. package/skills/asknews-cli/references/task-recipes.md +164 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/bin.ts", "../src/cli.ts", "../package.json", "../src/commands/api.ts", "../src/lib/errors.ts", "../src/auth/oauth.ts", "../src/auth/store.ts", "../src/auth/resolve.ts", "../src/lib/http.ts", "../src/lib/redact.ts", "../src/generated/operations.json", "../src/lib/operations.ts", "../src/lib/output.ts", "../src/lib/table-schemas.json", "../src/lib/schema-options.ts", "../src/lib/config.ts", "../src/lib/types.ts", "../src/commands/context.ts", "../src/commands/auth.ts", "../src/commands/curated.ts", "../src/commands/skills.ts", "../src/lib/banner.ts"],
4
+ "sourcesContent": ["#!/usr/bin/env node\n\nimport { realpathSync } from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport { buildCli } from \"./cli.js\";\nimport { CliError } from \"./lib/errors.js\";\nimport { redact, redactString } from \"./lib/redact.js\";\n\nexport async function main(argv = process.argv): Promise<void> {\n // engines.node is advisory under npm/npx; guard at runtime so every install path fails clearly.\n const [major = 0, minor = 0] = process.versions.node.split(\".\").map(Number);\n if (major < 22 || (major === 22 && minor < 15)) {\n process.stderr.write(`asknews requires Node.js 22.15 or newer (found ${process.version}).\\n`);\n process.exitCode = 1;\n return;\n }\n const program = buildCli();\n program.exitOverride();\n try {\n await program.parseAsync(argv);\n } catch (error) {\n if ((error as { code?: string }).code === \"commander.helpDisplayed\") {\n return;\n }\n if ((error as { code?: string }).code === \"commander.version\") {\n return;\n }\n if (error instanceof CliError) {\n process.stderr.write(`${redactString(error.message)}\\n`);\n if (process.env.ASKNEWS_LOG_LEVEL === \"debug\" && error.details) {\n process.stderr.write(`${JSON.stringify(redact(error.details), null, 2)}\\n`);\n }\n process.exitCode = error.exitCode;\n return;\n }\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`${redactString(message)}\\n`);\n process.exitCode = 1;\n }\n}\n\nconst invokedPath = process.argv[1];\nif (invokedPath && import.meta.url === pathToFileURL(realpathSync(invokedPath)).href) {\n await main();\n}\n", "import chalk from \"chalk\";\nimport { Command, Option } from \"commander\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\nimport { registerApiCommands } from \"./commands/api.js\";\nimport { registerAuthCommands } from \"./commands/auth.js\";\nimport { registerCuratedCommands } from \"./commands/curated.js\";\nimport { registerSkillCommands } from \"./commands/skills.js\";\nimport { bannerEnabled, renderBanner } from \"./lib/banner.js\";\nimport { manifest } from \"./lib/operations.js\";\nimport { OUTPUT_FORMATS } from \"./lib/types.js\";\n\nexport function buildCli(): Command {\n const program = new Command()\n .name(\"asknews\")\n .description(\"The official AskNews CLI for humans, automation, and agents\")\n .version(packageJson.version)\n .showHelpAfterError()\n .showSuggestionAfterError()\n // Put a blank line between each argument/option/command entry so dense, multi-line parameter\n // descriptions are easy to scan. Configured before subcommands register so it is inherited.\n .configureHelp({\n formatItemList(heading, items, helper) {\n if (items.length === 0) return [];\n const spaced = items.flatMap((item, index) =>\n index < items.length - 1 ? [item, \"\"] : [item],\n );\n return [helper.styleTitle(heading), ...spaced, \"\"];\n },\n })\n .option(\"--api-url <url>\", \"AskNews API base URL\")\n .option(\"--auth-url <url>\", \"AskNews OAuth issuer URL\")\n .option(\"--oauth-client-id <id>\", \"public OAuth client ID\")\n .option(\"--api-key <key>\", \"API key for this invocation\")\n .addOption(\n new Option(\"-o, --output <format>\", \"output format\")\n .choices([...OUTPUT_FORMATS])\n .env(\"ASKNEWS_OUTPUT\"),\n )\n .option(\"--json\", \"shortcut for --output json\")\n .option(\"--timeout <milliseconds>\", \"request timeout\")\n .option(\"--no-color\", \"disable ANSI color\")\n .addHelpText(\"before\", (context) =>\n bannerEnabled()\n ? renderBanner(chalk.level > 0 && context.command.opts().color !== false)\n : \"\",\n )\n .addHelpText(\n \"after\",\n `\nDESIGNED FOR\n Humans readable tables, guided OAuth login, concise errors\n Scripts stable exit codes and JSON/JSONL/YAML on stdout\n Agents complete API discovery and an installable AskNews skill\n\nQUICK START\n asknews auth login\n asknews news search \"latest AI policy\" --limit 5\n asknews news search \"latest AI policy\" --limit 5 --output json\n\nDISCOVER COMMANDS\n asknews <command> --help Help for any command\n asknews api list All generated API operations\n asknews api list --output json Machine-readable operation catalog\n asknews api <group> <operation> --help Full parameter schema\n\nAUTHENTICATION\n Interactive: asknews auth login\n CI/agents: export ASKNEWS_API_KEY=\"...\"\n Precedence: --api-key, environment, stored OAuth, stored API key\n\nAGENT SKILLS\n Installed automatically into detected ~/.agents and ~/.claude directories.\n ASKNEWS_NO_AGENT_SKILLS=1 disables package-install setup.\n ASKNEWS_AGENT_HOME overrides the home used for agent skill installation.\n\nOUTPUT CONTRACT\n human Curated readable terminal output\n table Force tabular output for list/search results\n json Stable structured object/array\n jsonl One JSON record per line\n yaml Readable structured output\n Result data goes to stdout; diagnostics go to stderr.\n\nSAFETY\n State-changing operations prompt interactively and require --yes in CI/agents.\n High-cost operations are labeled in generated help.\n\nAPI CONTRACT\n Generated from AskNews API ${manifest.schemaVersion}\n ${manifest.operations.length} customer-facing operations; internal-scope operations excluded.\n`,\n );\n\n registerAuthCommands(program);\n registerCuratedCommands(program);\n registerApiCommands(program);\n registerSkillCommands(program);\n return program;\n}\n", "{\n \"name\": \"@emergentmethods/asknews-cli\",\n \"version\": \"0.1.0\",\n \"description\": \"The official AskNews CLI for humans, automation, and agents\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"author\": \"Emergent Methods <contact@emergentmethods.ai>\",\n \"homepage\": \"https://docs.asknews.app/cli\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/emergentmethods/asknews-cli.git\"\n },\n \"bugs\": \"https://github.com/emergentmethods/asknews-cli/issues\",\n \"keywords\": [\n \"asknews\",\n \"news\",\n \"cli\",\n \"deepnews\",\n \"research\",\n \"agents\",\n \"openapi\"\n ],\n \"bin\": {\n \"asknews\": \"./dist/bin.js\"\n },\n \"files\": [\n \"dist/\",\n \"skills/\",\n \"scripts/postinstall.mjs\"\n ],\n \"engines\": {\n \"node\": \">=22.15\"\n },\n \"packageManager\": \"pnpm@10.11.0\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"pnpm generate && pnpm build:bundle\",\n \"build:bundle\": \"tsx scripts/build.ts\",\n \"check\": \"pnpm lint && pnpm typecheck && pnpm test:coverage\",\n \"dev\": \"tsx src/bin.ts\",\n \"generate\": \"pnpm generate:openapi && pnpm generate:docs\",\n \"generate:docs\": \"tsx scripts/generate-docs.ts\",\n \"generate:openapi\": \"tsx scripts/generate-openapi.ts\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"postinstall\": \"node scripts/postinstall.mjs\",\n \"package:tarball\": \"tsx scripts/package-tarball.ts\",\n \"sync:docs\": \"tsx scripts/sync-docs-site.ts\",\n \"sync:docs:check\": \"tsx scripts/sync-docs-site.ts --check\",\n \"sync:openapi\": \"tsx scripts/sync-openapi.ts\",\n \"sync:openapi:check\": \"tsx scripts/sync-openapi.ts --check\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:live\": \"ASKNEWS_LIVE_TESTS=1 vitest run test/live\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"1.6.0\",\n \"chalk\": \"5.6.2\",\n \"cli-table3\": \"0.6.5\",\n \"commander\": \"14.0.3\",\n \"terminal-link\": \"^5.0.0\",\n \"yaml\": \"2.8.3\",\n \"zod\": \"3.25.76\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"2.5.0\",\n \"@types/node\": \"22.19.1\",\n \"@vitest/coverage-v8\": \"4.1.9\",\n \"esbuild\": \"0.28.1\",\n \"fast-check\": \"4.8.0\",\n \"openapi-types\": \"12.1.3\",\n \"tsx\": \"4.22.4\",\n \"typescript\": \"5.9.3\",\n \"vitest\": \"4.1.9\"\n }\n}\n", "import * as p from \"@clack/prompts\";\nimport type { Command } from \"commander\";\nimport { resolveCredential } from \"../auth/resolve.js\";\nimport { UsageError } from \"../lib/errors.js\";\nimport {\n executeOperation,\n executeOperationStream,\n executeRawRequest,\n parseBodyInput,\n parseParameterAssignments,\n} from \"../lib/http.js\";\nimport { getOperation, operationsByTag } from \"../lib/operations.js\";\nimport { writeResult, writeStreamEvent } from \"../lib/output.js\";\nimport {\n readRegisteredOptions,\n registerBodyOptions,\n registerParameterOptions,\n} from \"../lib/schema-options.js\";\nimport type { OperationDefinition } from \"../lib/types.js\";\nimport { contextFrom } from \"./context.js\";\n\ninterface GeneratedOptions {\n param?: string[];\n body?: string;\n yes?: boolean;\n}\n\nexport function registerApiCommands(program: Command): void {\n const api = program\n .command(\"api\")\n .description(\"Invoke generated commands for every customer-facing AskNews API operation\")\n .addHelpText(\n \"after\",\n `\nDISCOVERY\n asknews api list List all operations\n asknews api list --tag news Filter by API group\n asknews api list --output json Machine-readable operation catalog\n asknews api <group> --help List operations in one group\n asknews api <group> <operation> --help Show every parameter and safety rule\n\nPARAMETERS\n Every schema parameter is an explicit kebab-case option:\n --start-timestamp --n-articles --historical\n Array options can be JSON or repeated:\n --domains='[\"reuters.com\",\"apnews.com\"]'\n --domains=reuters.com --domains=apnews.com\n --param name=value remains available as an escape hatch.\n\nREQUEST BODIES\n Body fields are explicit kebab-case options when a schema is available.\n --body '{\"query\":\"example\"}' Inline JSON\n --body @request.json Read JSON from a file\n Direct body-field options override values supplied through --body.\n\nSAFETY\n State-changing commands require --yes in noninteractive sessions.\n High-cost operations are labeled in command help and the operation catalog.\n`,\n );\n\n api\n .command(\"list\")\n .description(\"List generated operations and their parameters\")\n .option(\"--tag <tag>\", \"filter by API group\")\n .option(\"--safety <level>\", \"filter by read-only, high-cost, or mutating\")\n .action((options: { tag?: string; safety?: string }, command) => {\n const { writer } = contextFrom(command);\n const operations = [...operationsByTag().values()]\n .flat()\n .filter((operation) => !options.tag || operation.tag === options.tag)\n .filter((operation) => !options.safety || operation.safety === options.safety)\n .map((operation) => ({\n command: `asknews api ${operation.tag} ${operation.command}`,\n operationId: operation.operationId,\n method: operation.method,\n path: operation.path,\n safety: operation.safety,\n summary: operation.summary,\n parameters: operation.parameters,\n requestBody: operation.requestBody,\n }));\n writeResult(writer, operations);\n });\n\n for (const [tag, operations] of operationsByTag()) {\n const group = api.command(tag).description(`Generated ${tag} API operations`);\n for (const operation of operations) {\n registerOperation(group, operation);\n }\n }\n\n program\n .command(\"request\")\n .description(\"Make an authenticated request to an API path\")\n .argument(\"<method>\", \"HTTP method\")\n .argument(\"<path>\", \"path relative to the configured /v1 base URL\")\n .option(\"--body <json-or-file>\", \"JSON body or @file.json\")\n .action(async (method: string, path: string, options: { body?: string }, command) => {\n const { config, writer } = contextFrom(command);\n const credential = await resolveCredential(config);\n const body = await parseBodyInput(options.body);\n const response = await executeRawRequest(\n config,\n credential.token,\n method.toUpperCase(),\n path,\n body,\n credential.refresh,\n );\n writeResult(writer, response.data);\n });\n}\n\nexport async function invokeOperation(\n command: Command,\n operationId: string,\n parameters: Record<string, unknown>,\n body?: unknown,\n): Promise<unknown> {\n const { config, writer } = contextFrom(command);\n const credential = await resolveCredential(config);\n const response = await executeOperation(\n config,\n credential.token,\n getOperation(operationId),\n { parameters, body },\n credential.refresh,\n );\n writeResult(writer, response.data);\n return response.data;\n}\n\nfunction registerOperation(group: Command, operation: OperationDefinition): void {\n const command = group\n .command(operation.command)\n .description(operation.summary || operation.operationId)\n .option(\n \"-p, --param <name=value>\",\n \"operation parameter; repeat for arrays or multiple values\",\n collect,\n [],\n );\n const registeredParameters = registerParameterOptions(command, operation);\n const registeredBody = registerBodyOptions(command, operation);\n if (operation.requestBody) {\n command.option(\"--body <json-or-file>\", \"JSON request body or @file.json\");\n }\n if (operation.safety === \"mutating\") {\n command.option(\"-y, --yes\", \"confirm this state-changing operation\");\n }\n command\n .addHelpText(\"after\", formatOperationHelp(operation))\n .action(async (options: GeneratedOptions, command) => {\n await confirmMutation(operation, Boolean(options.yes));\n const parameters = parseParameterAssignments(options.param);\n Object.assign(parameters, readRegisteredOptions(command, registeredParameters));\n const bodyInput = await parseBodyInput(options.body);\n const bodyOptions = readRegisteredOptions(command, registeredBody);\n const body =\n Object.keys(bodyOptions).length === 0\n ? bodyInput\n : { ...(isRecord(bodyInput) ? bodyInput : {}), ...bodyOptions };\n if (isRecord(body) && body.stream === true) {\n await invokeStreamingOperation(command, operation.operationId, parameters, body);\n return;\n }\n await invokeOperation(command, operation.operationId, parameters, body);\n });\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nexport async function confirmMutation(\n operation: OperationDefinition,\n confirmed: boolean,\n): Promise<void> {\n if (operation.safety !== \"mutating\" || confirmed) {\n return;\n }\n if (!process.stdin.isTTY || !process.stderr.isTTY) {\n throw new UsageError(\n `${operation.operationId} changes server state; rerun with --yes to confirm`,\n );\n }\n const answer = await p.confirm({\n message: `${operation.summary} (${operation.method} ${operation.path})?`,\n initialValue: false,\n });\n if (p.isCancel(answer) || !answer) {\n throw new UsageError(\"Operation cancelled\");\n }\n}\n\nexport async function invokeStreamingOperation(\n command: Command,\n operationId: string,\n parameters: Record<string, unknown>,\n body: Record<string, unknown>,\n): Promise<void> {\n const { config, writer } = contextFrom(command);\n if (![\"human\", \"jsonl\"].includes(writer.format)) {\n throw new UsageError(\"--stream supports --output human or --output jsonl\");\n }\n const credential = await resolveCredential(config);\n let wroteHumanText = false;\n await executeOperationStream(\n config,\n credential.token,\n getOperation(operationId),\n { parameters, body },\n (event) => {\n wroteHumanText = writeStreamEvent(writer, event) || wroteHumanText;\n },\n credential.refresh,\n );\n if (writer.format === \"human\" && wroteHumanText) writer.stdout.write(\"\\n\");\n}\n\nfunction collect(value: string, previous: string[]): string[] {\n return [...previous, value];\n}\n\nfunction parameterOptionName(name: string): string {\n return name.replaceAll(\"_\", \"-\");\n}\n\nexport function formatOperationHelp(operation: OperationDefinition): string {\n const safety =\n operation.safety === \"mutating\"\n ? \"Changes server state. Interactive confirmation or --yes is required.\"\n : operation.safety === \"high-cost\"\n ? \"Read-only but potentially billable/high-cost. Keep limits narrow.\"\n : \"Read-only.\";\n const firstParameter = operation.parameters[0];\n const parameterExample = firstParameter\n ? ` --${parameterOptionName(firstParameter.name)} <value>`\n : \"\";\n return `\nOPERATION\n ID: ${operation.operationId}\n Request: ${operation.method} ${operation.path}\n Safety: ${operation.safety} \u2014 ${safety}\n\nEXAMPLES\n asknews api ${operation.tag} ${operation.command} --help\n asknews api ${operation.tag} ${operation.command}${parameterExample} --output json\n asknews api ${operation.tag} ${operation.command} --param name=value --output json\n${operation.requestBody ? ` asknews api ${operation.tag} ${operation.command} --body @request.json --output json\\n` : \"\"}\nGLOBAL OPTIONS\n --output human|table|json|jsonl|yaml Result format\n --json Shortcut for --output json\n --api-key <key> Credential for this invocation\n --api-url <url> Override the API base URL\n --timeout <milliseconds> Request timeout\n --no-color Disable ANSI color\n`;\n}\n", "export const EXIT_CODES = {\n usage: 2,\n auth: 3,\n network: 4,\n apiClient: 5,\n apiServer: 6,\n interrupted: 130,\n} as const;\n\nexport class CliError extends Error {\n public constructor(\n message: string,\n public readonly exitCode: number,\n public readonly details?: unknown,\n ) {\n super(message);\n this.name = new.target.name;\n }\n}\n\nexport class UsageError extends CliError {\n public constructor(message: string, details?: unknown) {\n super(message, EXIT_CODES.usage, details);\n }\n}\n\nexport class AuthError extends CliError {\n public constructor(message: string, details?: unknown) {\n super(message, EXIT_CODES.auth, details);\n }\n}\n\nexport class NetworkError extends CliError {\n public constructor(message: string, details?: unknown) {\n super(message, EXIT_CODES.network, details);\n }\n}\n\nexport class ApiError extends CliError {\n public constructor(\n message: string,\n public readonly status: number,\n details?: unknown,\n ) {\n super(message, status >= 500 ? EXIT_CODES.apiServer : EXIT_CODES.apiClient, details);\n }\n}\n", "import { spawn } from \"node:child_process\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport { z } from \"zod\";\nimport type { CliConfig } from \"../lib/config.js\";\nimport { AuthError, NetworkError } from \"../lib/errors.js\";\nimport type { StoredCredential } from \"./store.js\";\n\nconst DiscoverySchema = z.object({\n device_authorization_endpoint: z.string().url(),\n token_endpoint: z.string().url(),\n});\n\nconst DeviceAuthorizationSchema = z.object({\n device_code: z.string(),\n user_code: z.string(),\n verification_uri: z.string().url(),\n verification_uri_complete: z.string().url().optional(),\n expires_in: z.number().positive(),\n interval: z.number().positive().default(5),\n});\n\nconst TokenSchema = z.object({\n access_token: z.string(),\n refresh_token: z.string().optional(),\n expires_in: z.number().positive().optional(),\n scope: z.string().optional(),\n});\n\nexport interface DeviceLoginPrompt {\n verificationUri: string;\n userCode: string;\n expiresIn: number;\n}\n\nexport interface DeviceLoginOptions {\n openBrowser: boolean;\n scopes: string[];\n onPrompt: (prompt: DeviceLoginPrompt) => void;\n signal?: AbortSignal;\n}\n\nexport async function deviceLogin(\n config: CliConfig,\n options: DeviceLoginOptions,\n): Promise<StoredCredential> {\n const discovery = await discover(config.authUrl, config.timeoutMs);\n const device = await postForm(discovery.device_authorization_endpoint, {\n client_id: config.oauthClientId,\n scope: options.scopes.join(\" \"),\n });\n const authorization = DeviceAuthorizationSchema.parse(device);\n const browserUrl = authorization.verification_uri_complete ?? authorization.verification_uri;\n options.onPrompt({\n verificationUri: authorization.verification_uri,\n userCode: authorization.user_code,\n expiresIn: authorization.expires_in,\n });\n if (options.openBrowser) {\n openBrowser(browserUrl);\n }\n const deadline = Date.now() + authorization.expires_in * 1000;\n let intervalMs = authorization.interval * 1000;\n while (Date.now() < deadline) {\n await sleep(intervalMs, undefined, { signal: options.signal });\n const response = await fetch(discovery.token_endpoint, {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n device_code: authorization.device_code,\n client_id: config.oauthClientId,\n }),\n signal: AbortSignal.timeout(config.timeoutMs),\n });\n const payload = await response.json();\n if (response.ok) {\n return toCredential(TokenSchema.parse(payload));\n }\n const code = z.object({ error: z.string() }).safeParse(payload);\n if (!code.success) {\n throw new AuthError(\"OAuth token response was invalid\");\n }\n if (code.data.error === \"authorization_pending\") {\n continue;\n }\n if (code.data.error === \"slow_down\") {\n intervalMs += 5000;\n continue;\n }\n if (code.data.error === \"access_denied\") {\n throw new AuthError(\"OAuth login was denied\");\n }\n if (code.data.error === \"expired_token\") {\n throw new AuthError(\"OAuth device code expired\");\n }\n throw new AuthError(`OAuth login failed: ${code.data.error}`);\n }\n throw new AuthError(\"OAuth device code expired\");\n}\n\nexport async function refreshOAuth(\n config: CliConfig,\n refreshToken: string,\n): Promise<StoredCredential> {\n const discovery = await discover(config.authUrl, config.timeoutMs);\n const payload = await postForm(discovery.token_endpoint, {\n grant_type: \"refresh_token\",\n refresh_token: refreshToken,\n client_id: config.oauthClientId,\n });\n const token = TokenSchema.parse(payload);\n return toCredential({\n ...token,\n refresh_token: token.refresh_token ?? refreshToken,\n });\n}\n\nasync function discover(authUrl: string, timeoutMs: number) {\n try {\n const response = await fetch(`${authUrl}/.well-known/openid-configuration`, {\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n return DiscoverySchema.parse(await response.json());\n } catch (error) {\n throw new NetworkError(\"Unable to discover AskNews OAuth endpoints\", error);\n }\n}\n\nasync function postForm(url: string, values: Record<string, string>): Promise<unknown> {\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams(values),\n });\n const payload = await response.json();\n if (!response.ok) {\n const parsed = z.object({ error: z.string().optional() }).safeParse(payload);\n throw new AuthError(\n parsed.success && parsed.data.error\n ? `OAuth request failed: ${parsed.data.error}`\n : `OAuth request failed with HTTP ${response.status}`,\n );\n }\n return payload;\n } catch (error) {\n if (error instanceof AuthError) {\n throw error;\n }\n throw new NetworkError(\"Unable to contact AskNews OAuth\", error);\n }\n}\n\nfunction toCredential(token: z.infer<typeof TokenSchema>): StoredCredential {\n return {\n type: \"oauth\",\n accessToken: token.access_token,\n ...(token.refresh_token ? { refreshToken: token.refresh_token } : {}),\n ...(token.expires_in\n ? { expiresAt: new Date(Date.now() + token.expires_in * 1000).toISOString() }\n : {}),\n ...(token.scope ? { scope: token.scope } : {}),\n createdAt: new Date().toISOString(),\n };\n}\n\nfunction openBrowser(url: string): void {\n const command =\n process.platform === \"darwin\"\n ? [\"open\", url]\n : process.platform === \"win32\"\n ? [\"cmd\", \"/c\", \"start\", \"\", url]\n : [\"xdg-open\", url];\n const child = spawn(command[0] ?? \"\", command.slice(1), {\n detached: true,\n stdio: \"ignore\",\n });\n child.unref();\n}\n", "import { chmod, mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { z } from \"zod\";\n\nconst CredentialSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"api_key\"),\n apiKey: z.string().min(1),\n createdAt: z.string().datetime(),\n }),\n z.object({\n type: z.literal(\"oauth\"),\n accessToken: z.string().min(1),\n refreshToken: z.string().optional(),\n expiresAt: z.string().datetime().optional(),\n scope: z.string().optional(),\n createdAt: z.string().datetime(),\n }),\n]);\n\nexport type StoredCredential = z.infer<typeof CredentialSchema>;\n\nexport class CredentialStore {\n public constructor(private readonly configDir: string) {}\n\n private get path(): string {\n return join(this.configDir, \"credentials.json\");\n }\n\n public async read(): Promise<StoredCredential | null> {\n try {\n const raw = await readFile(this.path, \"utf8\");\n return CredentialSchema.parse(JSON.parse(raw));\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return null;\n }\n throw error;\n }\n }\n\n public async write(credential: StoredCredential): Promise<void> {\n await mkdir(this.configDir, { recursive: true, mode: 0o700 });\n await chmod(this.configDir, 0o700);\n const tempPath = `${this.path}.${process.pid}.tmp`;\n await writeFile(tempPath, `${JSON.stringify(credential, null, 2)}\\n`, {\n encoding: \"utf8\",\n mode: 0o600,\n });\n await chmod(tempPath, 0o600);\n await rename(tempPath, this.path);\n await chmod(this.path, 0o600);\n }\n\n public async clear(): Promise<boolean> {\n try {\n const { unlink } = await import(\"node:fs/promises\");\n await unlink(this.path);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n }\n}\n", "import type { CliConfig } from \"../lib/config.js\";\nimport { AuthError } from \"../lib/errors.js\";\nimport type { TokenRefresher } from \"../lib/types.js\";\nimport { refreshOAuth } from \"./oauth.js\";\nimport { CredentialStore, type StoredCredential } from \"./store.js\";\n\nexport interface ResolvedCredential {\n token: string;\n source: \"flag-or-env\" | \"stored-api-key\" | \"stored-oauth\";\n // Set only for stored OAuth sessions: forces a token refresh so the HTTP layer can retry a 401.\n refresh?: TokenRefresher;\n}\n\nexport async function resolveCredential(config: CliConfig): Promise<ResolvedCredential> {\n if (config.apiKey) {\n return { token: config.apiKey, source: \"flag-or-env\" };\n }\n const store = new CredentialStore(config.configDir);\n const stored = await store.read();\n if (!stored) {\n throw new AuthError(\"Not authenticated. Run `asknews auth login` or set ASKNEWS_API_KEY.\");\n }\n if (stored.type === \"api_key\") {\n return { token: stored.apiKey, source: \"stored-api-key\" };\n }\n const credential = await renewableCredential(config, stored, store);\n return {\n token: credential.accessToken,\n source: \"stored-oauth\",\n refresh: () => forceRefresh(config),\n };\n}\n\n// Refresh against the latest stored refresh token (it may have rotated) and persist the result.\n// Returns null when the session can no longer be refreshed; the caller then surfaces the 401.\nasync function forceRefresh(config: CliConfig): Promise<string | null> {\n const store = new CredentialStore(config.configDir);\n const stored = await store.read();\n if (stored?.type !== \"oauth\" || !stored.refreshToken) {\n return null;\n }\n const refreshed = await refreshOAuth(config, stored.refreshToken);\n if (refreshed.type !== \"oauth\") {\n return null;\n }\n await store.write(refreshed);\n return refreshed.accessToken;\n}\n\nasync function renewableCredential(\n config: CliConfig,\n credential: Extract<StoredCredential, { type: \"oauth\" }>,\n store: CredentialStore,\n): Promise<Extract<StoredCredential, { type: \"oauth\" }>> {\n if (!credential.expiresAt || Date.parse(credential.expiresAt) > Date.now() + 60_000) {\n return credential;\n }\n if (!credential.refreshToken) {\n throw new AuthError(\"Stored OAuth session expired. Run `asknews auth login` again.\");\n }\n const refreshed = await refreshOAuth(config, credential.refreshToken);\n if (refreshed.type !== \"oauth\") {\n throw new AuthError(\"OAuth refresh returned an invalid credential\");\n }\n await store.write(refreshed);\n return refreshed;\n}\n", "import { readFile } from \"node:fs/promises\";\nimport type { CliConfig } from \"./config.js\";\nimport { ApiError, NetworkError, UsageError } from \"./errors.js\";\nimport { redact } from \"./redact.js\";\nimport type { ApiResponse, OperationDefinition, RequestInput, TokenRefresher } from \"./types.js\";\n\nexport async function executeOperation<T>(\n config: CliConfig,\n credential: string,\n operation: OperationDefinition,\n input: RequestInput,\n refresh?: TokenRefresher,\n): Promise<ApiResponse<T>> {\n const { url, init } = prepareOperationRequest(config, credential, operation, input);\n return executeRequest<T>(config, url, init, refresh);\n}\n\nexport async function executeOperationStream(\n config: CliConfig,\n credential: string,\n operation: OperationDefinition,\n input: RequestInput,\n onEvent: (event: unknown) => void,\n refresh?: TokenRefresher,\n): Promise<void> {\n const { url, init } = prepareOperationRequest(config, credential, operation, input);\n let response = await sendRequest(config, url, init);\n if (response.status === 401 && refresh) {\n response = await retryWithRefreshedToken(config, url, init, refresh, response);\n }\n if (!response.ok) {\n const text = await response.text();\n const data = parseResponse(text, response.headers.get(\"content-type\"));\n const detail =\n data && typeof data === \"object\" && \"detail\" in data\n ? String((data as { detail: unknown }).detail)\n : response.statusText;\n throw new ApiError(`AskNews API returned ${response.status}: ${detail}`, response.status, data);\n }\n if (!response.body || !response.headers.get(\"content-type\")?.includes(\"text/event-stream\")) {\n onEvent(parseResponse(await response.text(), response.headers.get(\"content-type\")));\n return;\n }\n await consumeServerSentEvents(response.body, onEvent);\n}\n\nexport async function executeRawRequest<T>(\n config: CliConfig,\n credential: string,\n method: string,\n requestPath: string,\n body?: unknown,\n refresh?: TokenRefresher,\n): Promise<ApiResponse<T>> {\n const path = requestPath.startsWith(\"/\") ? requestPath : `/${requestPath}`;\n const url = new URL(`${config.apiUrl}${path}`);\n const headers = new Headers({\n accept: \"application/json\",\n authorization: `Bearer ${credential}`,\n });\n return executeRequest<T>(\n config,\n url,\n {\n method,\n headers,\n ...(body === undefined\n ? {}\n : {\n body: JSON.stringify(body),\n headers: new Headers({\n ...Object.fromEntries(headers.entries()),\n \"content-type\": \"application/json\",\n }),\n }),\n },\n refresh,\n );\n}\n\nexport async function parseBodyInput(raw: string | undefined): Promise<unknown> {\n if (raw === undefined) {\n return undefined;\n }\n const content = raw.startsWith(\"@\") ? await readFile(raw.slice(1), \"utf8\") : raw;\n try {\n return JSON.parse(content);\n } catch (error) {\n throw new UsageError(\"Request body must be JSON or @path/to/file.json\", error);\n }\n}\n\nexport function parseParameterAssignments(values: string[] = []): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const assignment of values) {\n const separator = assignment.indexOf(\"=\");\n if (separator <= 0) {\n throw new UsageError(`Invalid parameter \"${assignment}\"; expected name=value`);\n }\n const name = assignment.slice(0, separator);\n const raw = assignment.slice(separator + 1);\n const value = parseScalar(raw);\n const current = result[name];\n result[name] =\n current === undefined\n ? value\n : Array.isArray(current)\n ? [...current, value]\n : [current, value];\n }\n return result;\n}\n\nfunction buildLocationValues(\n operation: OperationDefinition,\n values: Record<string, unknown>,\n): { path: string; query: Map<string, string[]> } {\n let path = operation.path.replace(/^\\/v1(?=\\/|$)/, \"\");\n const query = new Map<string, string[]>();\n const known = new Set(operation.parameters.map((parameter) => parameter.name));\n for (const key of Object.keys(values)) {\n if (!known.has(key)) {\n throw new UsageError(`Unknown parameter \"${key}\" for ${operation.operationId}`);\n }\n }\n for (const parameter of operation.parameters) {\n const value = values[parameter.name];\n if (value === undefined || value === null || value === \"\") {\n if (parameter.required) {\n throw new UsageError(`Missing required parameter \"${parameter.name}\"`);\n }\n continue;\n }\n const rendered = (Array.isArray(value) ? value : [value]).map(String);\n if (parameter.location === \"path\") {\n path = path.replace(`{${parameter.name}}`, encodeURIComponent(rendered[0] ?? \"\"));\n } else if (parameter.location === \"query\") {\n query.set(parameter.name, rendered);\n }\n }\n return { path, query };\n}\n\nfunction prepareOperationRequest(\n config: CliConfig,\n credential: string,\n operation: OperationDefinition,\n input: RequestInput,\n): { url: URL; init: RequestInit } {\n const { path, query } = buildLocationValues(operation, input.parameters ?? {});\n const baseUrl = operation.path.startsWith(\"/v1\")\n ? config.apiUrl\n : config.apiUrl.replace(/\\/v1$/, \"\");\n const url = new URL(`${baseUrl}${path}`);\n for (const [key, values] of query) {\n for (const value of values) url.searchParams.append(key, value);\n }\n const headers = new Headers({\n accept: input.body && isStreamBody(input.body) ? \"text/event-stream\" : \"application/json\",\n authorization: `Bearer ${credential}`,\n ...input.headers,\n });\n let body: string | undefined;\n if (input.body !== undefined) {\n headers.set(\"content-type\", \"application/json\");\n body = JSON.stringify(input.body);\n }\n return {\n url,\n init: {\n method: operation.method,\n headers,\n ...(body ? { body } : {}),\n },\n };\n}\n\nfunction parseScalar(value: string): unknown {\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n if (/^-?\\d+(?:\\.\\d+)?$/.test(value)) {\n return Number(value);\n }\n if (\n (value.startsWith(\"[\") && value.endsWith(\"]\")) ||\n (value.startsWith(\"{\") && value.endsWith(\"}\"))\n ) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return value;\n}\n\nasync function executeRequest<T>(\n config: CliConfig,\n url: URL,\n init: RequestInit,\n refresh?: TokenRefresher,\n): Promise<ApiResponse<T>> {\n let response = await sendRequest(config, url, init);\n if (response.status === 401 && refresh) {\n response = await retryWithRefreshedToken(config, url, init, refresh, response);\n }\n const text = await response.text();\n const data = parseResponse(text, response.headers.get(\"content-type\"));\n if (!response.ok) {\n const detail =\n data && typeof data === \"object\" && \"detail\" in data\n ? String((data as { detail: unknown }).detail)\n : response.statusText;\n throw new ApiError(`AskNews API returned ${response.status}: ${detail}`, response.status, data);\n }\n return { data: data as T, headers: response.headers, status: response.status };\n}\n\nasync function sendRequest(config: CliConfig, url: URL, init: RequestInit): Promise<Response> {\n try {\n return await fetch(url, { ...init, signal: AbortSignal.timeout(config.timeoutMs) });\n } catch (error) {\n throw new NetworkError(describeNetworkError(config, url, error), redact(error));\n }\n}\n\n// On a 401, refresh the token once and retry. If the refresh yields no token (no refresh token, or\n// the refresh itself fails), keep the original 401 response so the caller surfaces it unchanged.\nasync function retryWithRefreshedToken(\n config: CliConfig,\n url: URL,\n init: RequestInit,\n refresh: TokenRefresher,\n unauthorized: Response,\n): Promise<Response> {\n const token = await refresh().catch(() => null);\n if (!token) {\n return unauthorized;\n }\n const headers = new Headers(init.headers);\n headers.set(\"authorization\", `Bearer ${token}`);\n return sendRequest(config, url, { ...init, headers });\n}\n\nfunction describeNetworkError(config: CliConfig, url: URL, error: unknown): string {\n if (error instanceof Error && error.name === \"TimeoutError\") {\n return `Request to ${url.origin} timed out after ${config.timeoutMs} ms; raise --timeout or narrow the query`;\n }\n const cause =\n error instanceof Error && error.cause !== undefined && error.cause !== null\n ? error.cause\n : error;\n const code =\n typeof (cause as { code?: unknown })?.code === \"string\"\n ? (cause as { code: string }).code\n : undefined;\n const reason =\n code ?? (cause instanceof Error ? cause.message : undefined) ?? String(cause ?? error);\n return `Request to ${url.origin} failed: ${reason}`;\n}\n\nfunction parseResponse(text: string, contentType: string | null): unknown {\n if (!text) {\n return null;\n }\n if (contentType?.includes(\"text/event-stream\")) {\n return parseServerSentEvents(text);\n }\n if (contentType?.includes(\"json\")) {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n }\n return text;\n}\n\nexport function parseServerSentEvents(text: string): unknown[] {\n const events: unknown[] = [];\n for (const block of text.split(/\\r?\\n\\r?\\n/)) {\n const data = block\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(5).trimStart())\n .join(\"\\n\");\n if (!data || data === \"[DONE]\") continue;\n try {\n events.push(JSON.parse(data));\n } catch {\n events.push(data);\n }\n }\n return events;\n}\n\nexport async function consumeServerSentEvents(\n stream: ReadableStream<Uint8Array>,\n onEvent: (event: unknown) => void,\n): Promise<void> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value, { stream: !done });\n const blocks = buffer.split(/\\r?\\n\\r?\\n/);\n buffer = blocks.pop() ?? \"\";\n for (const block of blocks) {\n const event = parseEventBlock(block);\n if (event !== undefined) onEvent(event);\n }\n if (done) break;\n }\n const finalEvent = parseEventBlock(buffer);\n if (finalEvent !== undefined) onEvent(finalEvent);\n}\n\nfunction parseEventBlock(block: string): unknown | undefined {\n const data = block\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(5).trimStart())\n .join(\"\\n\");\n if (!data || data === \"[DONE]\") return undefined;\n try {\n return JSON.parse(data);\n } catch {\n return data;\n }\n}\n\nfunction isStreamBody(value: unknown): boolean {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n (value as Record<string, unknown>).stream === true,\n );\n}\n", "const SENSITIVE_KEY = /(?:api[-_]?key|authorization|access[-_]?token|refresh[-_]?token|secret)/i;\nconst BEARER = /Bearer\\s+[A-Za-z0-9._~+/=-]+/gi;\nconst ASKNEWS_KEY = /\\bank_[A-Za-z0-9_-]+\\b/g;\n\nexport function redactString(value: string): string {\n return value.replace(BEARER, \"Bearer [REDACTED]\").replace(ASKNEWS_KEY, \"[REDACTED]\");\n}\n\nexport function redact(value: unknown): unknown {\n if (typeof value === \"string\") {\n return redactString(value);\n }\n if (Array.isArray(value)) {\n return value.map(redact);\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, item]) => [\n key,\n SENSITIVE_KEY.test(key) ? \"[REDACTED]\" : redact(item),\n ]),\n );\n }\n return value;\n}\n", "{\n \"generatedAt\": \"schema-version:0.24.95\",\n \"schemaVersion\": \"0.24.95\",\n \"schemaUrl\": \"https://api.asknews.app/openapi.json\",\n \"schemaSha256\": \"86ac823fdceffb3296c73daad06f235ef458e16f65f6c1af7dbe068c6c97a7a4\",\n \"operations\": [\n {\n \"operationId\": \"create_alert\",\n \"tag\": \"alerts\",\n \"command\": \"create-alert\",\n \"method\": \"POST\",\n \"path\": \"/v1/chat/alerts\",\n \"summary\": \"Create an alert\",\n \"description\": \"Create an alert.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"query\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Query\",\n \"description\": \"The query to run for retrieving information from sources, and for checking the alert. If you have defined one or more reports, specify each report's individual query in the report prompt.\",\n \"example\": \"I want to be alerted if the president of the US says something about the economy\"\n },\n \"sources\": {\n \"anyOf\": [\n {\n \"items\": {\n \"oneOf\": [\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"asknews\",\n \"title\": \"Identifier\",\n \"default\": \"asknews\"\n },\n \"params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"return_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"dicts\",\n \"both\"\n ],\n \"title\": \"Return Type\",\n \"description\": \"Type of return value. 'string' means that the return is prompt-optimized and ready to be immediately injected into any prompt. 'dicts' means that the return is a structured dictionary, containing additional metadata (like a classic news api). Can be 'string' or 'dicts', or 'both'. 'string' guarantees the lowest-latency response 'dicts' requires more I/O, therefore increases latency (very slightly, depending on your network connection).\",\n \"default\": \"dicts\"\n },\n \"historical\": {\n \"type\": \"boolean\",\n \"title\": \"Historical\",\n \"description\": \"Search on archive of historical news. Defaults to False, meaning that the search will only look through the most recent news (48 hours)\",\n \"default\": false\n },\n \"method\": {\n \"type\": \"string\",\n \"enum\": [\n \"nl\",\n \"kw\",\n \"both\"\n ],\n \"title\": \"Method\",\n \"description\": \"Method to use for searching. 'nl' means Natural Language, which is a string that can be any phrase, keyword, question, or paragraph that will be used for semantic search on the news. 'kw' means Keyword, which can also be any keyword(s), phrase, or paragraph, however the search is a direct keyword search on the database. 'both' means both methods will be used and results will be ranked according to IRR. 'both' may reduce latency by 10 pct in exchange for improved accuracy.\",\n \"default\": \"kw\"\n },\n \"similarity_score_threshold\": {\n \"type\": \"number\",\n \"title\": \"Similarity Score Threshold\",\n \"description\": \"Similarity score threshold to determine which articles to return. Lower means less similar results are allowed.\",\n \"default\": 0.5\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"Offset for pagination. The n_articles is your page size, while your offset is the number of articles to skip to get to your page of interest. For example, if you want to get page 3 for n_article page size of 10, you would set offset to 20.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"doc_start_delimiter\": {\n \"type\": \"string\",\n \"title\": \"Doc Start Delimiter\",\n \"description\": \"Document start delimiter for string return.\",\n \"default\": \"<doc>\"\n },\n \"doc_end_delimiter\": {\n \"type\": \"string\",\n \"title\": \"Doc End Delimiter\",\n \"description\": \"Document end delimiter for string return.\",\n \"default\": \"</doc>\"\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"diversify_sources\": {\n \"type\": \"boolean\",\n \"title\": \"Diversify Sources\",\n \"description\": \"Ensure that the return set of articles are selected from diverse sources. This adds latency to the search, but attempts to balance the representation of sources by country and source origins. In summary, a net is cast around your search, then the diversity of sources is analyzed, and your final result matches the large net diversity distribution. This means that your search accuracy is reduced, but you gain more diverse perspectives.\",\n \"default\": false\n },\n \"strategy\": {\n \"type\": \"string\",\n \"enum\": [\n \"latest news\",\n \"news knowledge\",\n \"default\"\n ],\n \"title\": \"Strategy\",\n \"description\": \"Strategy to use for searching. 'latest news' automatically setsmethod='nl', historical=False, and looks within the past 24 hours. 'news knowledge' automatically sets method='kw', historical=True, and looks within the past 60 days. 'news knowledge' will increase latency due to the larger search space in the archive. Use 'default' if you want to control start_timestamp, end_timestamp, historical, and method.\",\n \"default\": \"default\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"return_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Return Graphs\",\n \"description\": \"Return graphs for the articles. Only available to Analyst tier and above.\",\n \"default\": false\n },\n \"return_geo\": {\n \"type\": \"boolean\",\n \"title\": \"Return Geo\",\n \"description\": \"Return GeoCoordinates associated with locations discussed inside the articles. Only available to Analyst tier and above.\",\n \"default\": false\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n },\n \"premium\": {\n \"type\": \"boolean\",\n \"title\": \"Premium\",\n \"description\": \"Include premium sources.\",\n \"default\": false\n }\n },\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"title\": \"FilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The filter params to use\"\n }\n },\n \"type\": \"object\",\n \"title\": \"AskNewsSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"telegram\",\n \"title\": \"Identifier\",\n \"default\": \"telegram\"\n },\n \"params\": {\n \"properties\": {\n \"channel_name\": {\n \"type\": \"string\",\n \"title\": \"Channel Name\",\n \"description\": \"The channel name to use as a source\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"channel_name\"\n ],\n \"title\": \"TelegramSourceParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"TelegramSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"bluesky\",\n \"title\": \"Identifier\",\n \"default\": \"bluesky\"\n },\n \"params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Query\",\n \"description\": \"The search query\"\n }\n },\n \"type\": \"object\",\n \"title\": \"BlueskySourceParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Bluesky source parameters\"\n }\n },\n \"type\": \"object\",\n \"title\": \"BlueskySource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"web\",\n \"title\": \"Identifier\",\n \"default\": \"web\"\n },\n \"params\": {\n \"properties\": {\n \"queries\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"title\": \"Queries\",\n \"description\": \"The queries to use for the web search. This is a list of strings.\"\n },\n \"domains\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domains\",\n \"description\": \"The domains to restrict the web search to.\"\n },\n \"strict\": {\n \"type\": \"boolean\",\n \"title\": \"Strict\",\n \"description\": \"If true, the web search will only return results that have a known publication date and are within the lookback period.\",\n \"default\": true\n },\n \"lookback\": {\n \"type\": \"integer\",\n \"title\": \"Lookback\",\n \"description\": \"The number of hours back to accept for the web search. If not provided, no lookback will be applied.\",\n \"default\": 24\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"queries\"\n ],\n \"title\": \"WebSourceParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"WebSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to gemini-3-flash\",\n \"default\": \"gemini-3-flash\",\n \"example\": \"claude-sonnet-4-5-20250929\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 20,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 1.\",\n \"default\": 1\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 40,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsSourceParams\",\n \"description\": \"Parameters for DeepNews alert source.\\n\\nDeepNews performs deep research using multiple tools.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsSource\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"identifier\",\n \"mapping\": {\n \"asknews\": \"#/components/schemas/AskNewsSource\",\n \"bluesky\": \"#/components/schemas/BlueskySource\",\n \"deepnews\": \"#/components/schemas/DeepNewsSource\",\n \"telegram\": \"#/components/schemas/TelegramSource\",\n \"web\": \"#/components/schemas/WebSource\"\n }\n }\n },\n \"type\": \"array\",\n \"title\": \"Sources\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The sources to use for retrieving information related to the alert query. Available sources are: AskNewsSource, TelegramSource, BlueskySource, WebSource, DeepNewsSource\"\n },\n \"alert_type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"AlwaysAlertWhen\",\n \"AlertOnceIf\",\n \"ReportAbout\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Alert Type\",\n \"description\": \"The type of alert. If specified, overrides `repeat` and `always_trigger`. 'AlwaysAlertWhen': trigger alert actions any time the alert query is satisfied (`repeat=True`, `always_trigger=False`). Add Report model if you want a report when this is triggered. 'AlertOnceIf': trigger alert actions when the alert query is satisfied and then disable the alert (`repeat=False`, `always_trigger=False`). Add Report model if you want a report when this is triggered. 'ReportAbout': always trigger alert actions according to cron schedule and write a report (`repeat=True`, `always_trigger=True`). Defaults to using DeepNews for the report unless specified.\",\n \"example\": \"\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"gpt-4o-mini\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-4o\",\n \"o3-mini\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-nano-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model that is used to check if the alert conditions are satisfied by sources (this is not the same as the model used to write the report.)Defaults to gpt-4o.\",\n \"default\": \"gpt-4o\",\n \"example\": \"gpt-4o-mini\"\n },\n \"cron\": {\n \"type\": \"string\",\n \"title\": \"Cron\",\n \"description\": \"How often or when to check sources for this alert, specified as a cron expression. Examples: '0 * * * *' (hourly), '0 9 * * *' (daily at 9am), '0 9 * * 1' (Mondays at 9am). See https://crontab.run/ for more examples.\",\n \"example\": \"'0 0 * * *' (daily at midnight UTC)\"\n },\n \"triggers\": {\n \"items\": {\n \"oneOf\": [\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"webhook\",\n \"title\": \"Action\",\n \"default\": \"webhook\"\n },\n \"params\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\",\n \"title\": \"Url\",\n \"description\": \"The URL to send the webhook when the alert triggers\"\n },\n \"headers\": {\n \"anyOf\": [\n {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Headers\",\n \"description\": \"The headers to send with the webhook.\"\n },\n \"payload\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Payload\",\n \"description\": \"The payload to send with the webhook.\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"url\"\n ],\n \"title\": \"WebhookParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"WebhookAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"email\",\n \"title\": \"Action\",\n \"default\": \"email\"\n },\n \"params\": {\n \"properties\": {\n \"to\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"title\": \"To\",\n \"description\": \"The email to send the alert to when it triggers\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the email. If not provided, the default subject will be used.\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"to\"\n ],\n \"title\": \"EmailParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"EmailAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"resend_broadcast\",\n \"title\": \"Action\",\n \"default\": \"resend_broadcast\"\n },\n \"params\": {\n \"properties\": {\n \"sender\": {\n \"type\": \"string\",\n \"title\": \"Sender\",\n \"description\": \"The sender email address, use the format: Your Name <sender@domain.com>\"\n },\n \"reply_to\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reply To\",\n \"description\": \"The reply to email address. For multiple addresses, send as a list of strings\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the email. If not provided, the default subject will be used.\"\n },\n \"audience_id\": {\n \"type\": \"string\",\n \"title\": \"Audience Id\",\n \"description\": \"The audience id that the broadcast will be sent to\"\n },\n \"resend_api_key\": {\n \"type\": \"string\",\n \"title\": \"Resend Api Key\",\n \"description\": \"Resend API key to use\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"sender\",\n \"audience_id\",\n \"resend_api_key\"\n ],\n \"title\": \"ResendBroadcastParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"ResendBroadcastAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"google_docs\",\n \"title\": \"Action\",\n \"default\": \"google_docs\"\n },\n \"params\": {\n \"properties\": {\n \"client_json\": {\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"title\": \"Client Json\",\n \"description\": \"The google service account json. This should be a dict. You can get this from the google cloud console. The document will be created in the service account's google drive and shared with the user.\"\n },\n \"emails\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Emails\",\n \"description\": \"The emails to share the doc with\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"client_json\"\n ],\n \"title\": \"GoogleDocsParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"GoogleDocsAction\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"action\",\n \"mapping\": {\n \"email\": \"#/components/schemas/EmailAction\",\n \"google_docs\": \"#/components/schemas/GoogleDocsAction\",\n \"resend_broadcast\": \"#/components/schemas/ResendBroadcastAction\",\n \"webhook\": \"#/components/schemas/WebhookAction\"\n }\n }\n },\n \"type\": \"array\",\n \"title\": \"Triggers\"\n },\n \"always_trigger\": {\n \"type\": \"boolean\",\n \"title\": \"Always Trigger\",\n \"description\": \"Whether to always trigger the actions when sources are scanned. This skips the check for if the alert conditions are satisfied and run triggers immediately. Defaults to False.\",\n \"default\": false\n },\n \"repeat\": {\n \"type\": \"boolean\",\n \"title\": \"Repeat\",\n \"description\": \"Whether to repeat the alert. Default is True. If False, the alert will be disabled after it triggers once.\",\n \"default\": true\n },\n \"active\": {\n \"type\": \"boolean\",\n \"title\": \"Active\",\n \"description\": \"Whether the alert is active or not. Default is True.\",\n \"default\": true\n },\n \"expires_at\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Expires At\",\n \"description\": \"The expiration date for the alert. Default is None. If set, the alert will be disabled after this date.\"\n },\n \"report\": {\n \"anyOf\": [\n {\n \"oneOf\": [\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"legacy\",\n \"title\": \"Identifier\",\n \"default\": \"legacy\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-5\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4o-mini\",\n \"o3-mini\",\n \"claude-3-5-sonnet-latest\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"claude-sonnet-4-6\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the report. Defaults to claude-sonnet-4-6.\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"gpt-4o\"\n }\n },\n \"type\": \"object\",\n \"title\": \"LegacyReportRequest\",\n \"description\": \"DEPRECATED - Use DeepNewsReportRequest instead.\\nLegacy report configuration (original format).\\n\\nThis is the original ReportRequest format that uses a simple model field\\nfor report generation without DeepNews capabilities.\"\n },\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to claude-sonnet-4-6\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"claude-sonnet-4-6\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 190,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 2.\",\n \"default\": 2\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n },\n \"start_citation_number\": {\n \"type\": \"integer\",\n \"title\": \"Start Citation Number\",\n \"description\": \"Starting number for inline citations. Offsets fetched source citation keys. Useful if you are providing the agent outside sources with numbered citation keys. Defaults to 1.\",\n \"default\": 1\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"description\": \"Whether to use journalist mode for more factual reporting. Defaults to True.\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsReportParams\",\n \"description\": \"Parameters for DeepNews alert report.\\n\\nDeepNews performs deep research using multiple tools.\"\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt\",\n \"description\": \"The prompt to use for report generation instructions. This is similar to the alert query but can contain additional instructions on how to format the report.\",\n \"example\": [\n \"Monitor Tesla stock and summarize any major price movements with percentage changes\",\n \"Track the current situation in the Middle East and give me a bullet point list of recent events\"\n ]\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"prompt\"\n ],\n \"title\": \"DeepNewsReportRequest\",\n \"description\": \"DeepNews report configuration.\\n\\nUses DeepNews deep research capabilities for information retrieval and report generation.\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"identifier\",\n \"mapping\": {\n \"deepnews\": \"#/components/schemas/DeepNewsReportRequest\",\n \"legacy\": \"#/components/schemas/LegacyReportRequest\"\n }\n }\n },\n {\n \"items\": {\n \"oneOf\": [\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"legacy\",\n \"title\": \"Identifier\",\n \"default\": \"legacy\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-5\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4o-mini\",\n \"o3-mini\",\n \"claude-3-5-sonnet-latest\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"claude-sonnet-4-6\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the report. Defaults to claude-sonnet-4-6.\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"gpt-4o\"\n }\n },\n \"type\": \"object\",\n \"title\": \"LegacyReportRequest\",\n \"description\": \"DEPRECATED - Use DeepNewsReportRequest instead.\\nLegacy report configuration (original format).\\n\\nThis is the original ReportRequest format that uses a simple model field\\nfor report generation without DeepNews capabilities.\"\n },\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to claude-sonnet-4-6\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"claude-sonnet-4-6\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 190,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 2.\",\n \"default\": 2\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n },\n \"start_citation_number\": {\n \"type\": \"integer\",\n \"title\": \"Start Citation Number\",\n \"description\": \"Starting number for inline citations. Offsets fetched source citation keys. Useful if you are providing the agent outside sources with numbered citation keys. Defaults to 1.\",\n \"default\": 1\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"description\": \"Whether to use journalist mode for more factual reporting. Defaults to True.\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsReportParams\",\n \"description\": \"Parameters for DeepNews alert report.\\n\\nDeepNews performs deep research using multiple tools.\"\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt\",\n \"description\": \"The prompt to use for report generation instructions. This is similar to the alert query but can contain additional instructions on how to format the report.\",\n \"example\": [\n \"Monitor Tesla stock and summarize any major price movements with percentage changes\",\n \"Track the current situation in the Middle East and give me a bullet point list of recent events\"\n ]\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"prompt\"\n ],\n \"title\": \"DeepNewsReportRequest\",\n \"description\": \"DeepNews report configuration.\\n\\nUses DeepNews deep research capabilities for information retrieval and report generation.\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"identifier\",\n \"mapping\": {\n \"deepnews\": \"#/components/schemas/DeepNewsReportRequest\",\n \"legacy\": \"#/components/schemas/LegacyReportRequest\"\n }\n }\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Report\",\n \"description\": \"Configuration for generating a written report when the alert triggers. If report is a list, the individual reports will be concatenated into one report in the order they are defined. If not specified, no report is generated. Use ReportRequest(identifier='deepnews', ...) for DeepNews reports.Use ReportRequest(...) or ReportRequest(identifier='legacy', ...) for legacy reports (DEPRECATED). Requests without identifier default to 'deepnews'. Only DeepNews reports can be used in list.\"\n },\n \"title\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Title\",\n \"description\": \"The title of the alert. If not provided, no title will be used.\",\n \"example\": \"Alert for US President's statements on the economy\"\n },\n \"share_link\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Share Link\",\n \"description\": \"The newsplunker share link to update when the alert triggers.\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"cron\",\n \"triggers\"\n ],\n \"title\": \"CreateAlertRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"delete_alert\",\n \"tag\": \"alerts\",\n \"command\": \"delete-alert\",\n \"method\": \"DELETE\",\n \"path\": \"/v1/chat/alerts/{alert_id}\",\n \"summary\": \"Delete an alert\",\n \"description\": \"Delete an alert.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The alert ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"get_alert\",\n \"tag\": \"alerts\",\n \"command\": \"get-alert\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/alerts/{alert_id}\",\n \"summary\": \"Get an alert\",\n \"description\": \"Get an alert.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The alert ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"user_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The ID of the user to get logs for\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_alert_logs\",\n \"tag\": \"alerts\",\n \"command\": \"get-alert-logs\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/alerts/{alert_id}/logs\",\n \"summary\": \"Get alert logs\",\n \"description\": \"Get alert logs.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The alert ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"user_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The ID of the user to get logs for\",\n \"type\": \"string\"\n },\n {\n \"name\": \"page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The page number to get\",\n \"type\": \"integer\",\n \"defaultValue\": 1\n },\n {\n \"name\": \"per_page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of items per page\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"all\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to get all the alert logs\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"start_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to start search from\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to end search at\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_alerts\",\n \"tag\": \"alerts\",\n \"command\": \"get-alerts\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/alerts\",\n \"summary\": \"Get all created alerts\",\n \"description\": \"Get all created alerts.\",\n \"parameters\": [\n {\n \"name\": \"user_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The ID of the user to get alerts for\",\n \"type\": \"string\"\n },\n {\n \"name\": \"page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The page number to get\",\n \"type\": \"integer\",\n \"defaultValue\": 1\n },\n {\n \"name\": \"per_page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of items per page\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"all\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to get all the alerts\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"include_deleted\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to include soft-deleted alerts\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_all_alert_logs\",\n \"tag\": \"alerts\",\n \"command\": \"get-all-alert-logs\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/alerts/logs\",\n \"summary\": \"Get all alert logs\",\n \"description\": \"Get all alert logs.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The alert ID\",\n \"type\": \"string\"\n },\n {\n \"name\": \"user_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The ID of the user to get logs for\",\n \"type\": \"string\"\n },\n {\n \"name\": \"page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The page number to get\",\n \"type\": \"integer\",\n \"defaultValue\": 1\n },\n {\n \"name\": \"per_page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of items per page\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"all\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to get all the alert logs\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"start_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to start search from\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to end search at\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"put_alert\",\n \"tag\": \"alerts\",\n \"command\": \"put-alert\",\n \"method\": \"PUT\",\n \"path\": \"/v1/chat/alerts/{alert_id}\",\n \"summary\": \"Update an alert\",\n \"description\": \"Update an alert.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The alert ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"query\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Query\",\n \"description\": \"The query to run for retrieving information from sources, and for checking the alert. If you have defined one or more reports, specify each report's individual query in the report prompt.\",\n \"example\": \"I want to be alerted if the president of the US says something about the economy\"\n },\n \"sources\": {\n \"anyOf\": [\n {\n \"items\": {\n \"oneOf\": [\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"asknews\",\n \"title\": \"Identifier\",\n \"default\": \"asknews\"\n },\n \"params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"return_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"dicts\",\n \"both\"\n ],\n \"title\": \"Return Type\",\n \"description\": \"Type of return value. 'string' means that the return is prompt-optimized and ready to be immediately injected into any prompt. 'dicts' means that the return is a structured dictionary, containing additional metadata (like a classic news api). Can be 'string' or 'dicts', or 'both'. 'string' guarantees the lowest-latency response 'dicts' requires more I/O, therefore increases latency (very slightly, depending on your network connection).\",\n \"default\": \"dicts\"\n },\n \"historical\": {\n \"type\": \"boolean\",\n \"title\": \"Historical\",\n \"description\": \"Search on archive of historical news. Defaults to False, meaning that the search will only look through the most recent news (48 hours)\",\n \"default\": false\n },\n \"method\": {\n \"type\": \"string\",\n \"enum\": [\n \"nl\",\n \"kw\",\n \"both\"\n ],\n \"title\": \"Method\",\n \"description\": \"Method to use for searching. 'nl' means Natural Language, which is a string that can be any phrase, keyword, question, or paragraph that will be used for semantic search on the news. 'kw' means Keyword, which can also be any keyword(s), phrase, or paragraph, however the search is a direct keyword search on the database. 'both' means both methods will be used and results will be ranked according to IRR. 'both' may reduce latency by 10 pct in exchange for improved accuracy.\",\n \"default\": \"kw\"\n },\n \"similarity_score_threshold\": {\n \"type\": \"number\",\n \"title\": \"Similarity Score Threshold\",\n \"description\": \"Similarity score threshold to determine which articles to return. Lower means less similar results are allowed.\",\n \"default\": 0.5\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"Offset for pagination. The n_articles is your page size, while your offset is the number of articles to skip to get to your page of interest. For example, if you want to get page 3 for n_article page size of 10, you would set offset to 20.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"doc_start_delimiter\": {\n \"type\": \"string\",\n \"title\": \"Doc Start Delimiter\",\n \"description\": \"Document start delimiter for string return.\",\n \"default\": \"<doc>\"\n },\n \"doc_end_delimiter\": {\n \"type\": \"string\",\n \"title\": \"Doc End Delimiter\",\n \"description\": \"Document end delimiter for string return.\",\n \"default\": \"</doc>\"\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"diversify_sources\": {\n \"type\": \"boolean\",\n \"title\": \"Diversify Sources\",\n \"description\": \"Ensure that the return set of articles are selected from diverse sources. This adds latency to the search, but attempts to balance the representation of sources by country and source origins. In summary, a net is cast around your search, then the diversity of sources is analyzed, and your final result matches the large net diversity distribution. This means that your search accuracy is reduced, but you gain more diverse perspectives.\",\n \"default\": false\n },\n \"strategy\": {\n \"type\": \"string\",\n \"enum\": [\n \"latest news\",\n \"news knowledge\",\n \"default\"\n ],\n \"title\": \"Strategy\",\n \"description\": \"Strategy to use for searching. 'latest news' automatically setsmethod='nl', historical=False, and looks within the past 24 hours. 'news knowledge' automatically sets method='kw', historical=True, and looks within the past 60 days. 'news knowledge' will increase latency due to the larger search space in the archive. Use 'default' if you want to control start_timestamp, end_timestamp, historical, and method.\",\n \"default\": \"default\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"return_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Return Graphs\",\n \"description\": \"Return graphs for the articles. Only available to Analyst tier and above.\",\n \"default\": false\n },\n \"return_geo\": {\n \"type\": \"boolean\",\n \"title\": \"Return Geo\",\n \"description\": \"Return GeoCoordinates associated with locations discussed inside the articles. Only available to Analyst tier and above.\",\n \"default\": false\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n },\n \"premium\": {\n \"type\": \"boolean\",\n \"title\": \"Premium\",\n \"description\": \"Include premium sources.\",\n \"default\": false\n }\n },\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"title\": \"FilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The filter params to use\"\n }\n },\n \"type\": \"object\",\n \"title\": \"AskNewsSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"telegram\",\n \"title\": \"Identifier\",\n \"default\": \"telegram\"\n },\n \"params\": {\n \"properties\": {\n \"channel_name\": {\n \"type\": \"string\",\n \"title\": \"Channel Name\",\n \"description\": \"The channel name to use as a source\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"channel_name\"\n ],\n \"title\": \"TelegramSourceParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"TelegramSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"bluesky\",\n \"title\": \"Identifier\",\n \"default\": \"bluesky\"\n },\n \"params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Query\",\n \"description\": \"The search query\"\n }\n },\n \"type\": \"object\",\n \"title\": \"BlueskySourceParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Bluesky source parameters\"\n }\n },\n \"type\": \"object\",\n \"title\": \"BlueskySource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"web\",\n \"title\": \"Identifier\",\n \"default\": \"web\"\n },\n \"params\": {\n \"properties\": {\n \"queries\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\",\n \"title\": \"Queries\",\n \"description\": \"The queries to use for the web search. This is a list of strings.\"\n },\n \"domains\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domains\",\n \"description\": \"The domains to restrict the web search to.\"\n },\n \"strict\": {\n \"type\": \"boolean\",\n \"title\": \"Strict\",\n \"description\": \"If true, the web search will only return results that have a known publication date and are within the lookback period.\",\n \"default\": true\n },\n \"lookback\": {\n \"type\": \"integer\",\n \"title\": \"Lookback\",\n \"description\": \"The number of hours back to accept for the web search. If not provided, no lookback will be applied.\",\n \"default\": 24\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"queries\"\n ],\n \"title\": \"WebSourceParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"WebSource\"\n },\n {\n \"properties\": {\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to gemini-3-flash\",\n \"default\": \"gemini-3-flash\",\n \"example\": \"claude-sonnet-4-5-20250929\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 20,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 1.\",\n \"default\": 1\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 40,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsSourceParams\",\n \"description\": \"Parameters for DeepNews alert source.\\n\\nDeepNews performs deep research using multiple tools.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsSource\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"identifier\",\n \"mapping\": {\n \"asknews\": \"#/components/schemas/AskNewsSource\",\n \"bluesky\": \"#/components/schemas/BlueskySource\",\n \"deepnews\": \"#/components/schemas/DeepNewsSource\",\n \"telegram\": \"#/components/schemas/TelegramSource\",\n \"web\": \"#/components/schemas/WebSource\"\n }\n }\n },\n \"type\": \"array\",\n \"title\": \"Sources\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The sources to use for retrieving information related to the alert query. Available sources are: AskNewsSource, TelegramSource, BlueskySource, WebSource, DeepNewsSource\"\n },\n \"alert_type\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"AlwaysAlertWhen\",\n \"AlertOnceIf\",\n \"ReportAbout\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Alert Type\",\n \"description\": \"The type of alert. If specified, overrides `repeat` and `always_trigger`. 'AlwaysAlertWhen': trigger alert actions any time the alert query is satisfied (`repeat=True`, `always_trigger=False`). Add Report model if you want a report when this is triggered. 'AlertOnceIf': trigger alert actions when the alert query is satisfied and then disable the alert (`repeat=False`, `always_trigger=False`). Add Report model if you want a report when this is triggered. 'ReportAbout': always trigger alert actions according to cron schedule and write a report (`repeat=True`, `always_trigger=True`). Defaults to using DeepNews for the report unless specified.\",\n \"example\": \"\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"gpt-4o-mini\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-4o\",\n \"o3-mini\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-nano-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Model\",\n \"description\": \"The model that is used to check if the alert conditions are satisfied by sources (this is not the same as the model used to write the report.)\",\n \"example\": \"gpt-4o-mini\"\n },\n \"cron\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cron\",\n \"description\": \"How often or when to check sources for this alert, specified as a cron expression. Examples: '0 * * * *' (hourly), '0 9 * * *' (daily at 9am), '0 9 * * 1' (Mondays at 9am). See https://crontab.run/ for more examples.\",\n \"example\": \"'0 0 * * *' (daily at midnight UTC)\"\n },\n \"triggers\": {\n \"anyOf\": [\n {\n \"items\": {\n \"oneOf\": [\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"webhook\",\n \"title\": \"Action\",\n \"default\": \"webhook\"\n },\n \"params\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\",\n \"title\": \"Url\",\n \"description\": \"The URL to send the webhook when the alert triggers\"\n },\n \"headers\": {\n \"anyOf\": [\n {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Headers\",\n \"description\": \"The headers to send with the webhook.\"\n },\n \"payload\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Payload\",\n \"description\": \"The payload to send with the webhook.\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"url\"\n ],\n \"title\": \"WebhookParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"WebhookAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"email\",\n \"title\": \"Action\",\n \"default\": \"email\"\n },\n \"params\": {\n \"properties\": {\n \"to\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"title\": \"To\",\n \"description\": \"The email to send the alert to when it triggers\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the email. If not provided, the default subject will be used.\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"to\"\n ],\n \"title\": \"EmailParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"EmailAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"resend_broadcast\",\n \"title\": \"Action\",\n \"default\": \"resend_broadcast\"\n },\n \"params\": {\n \"properties\": {\n \"sender\": {\n \"type\": \"string\",\n \"title\": \"Sender\",\n \"description\": \"The sender email address, use the format: Your Name <sender@domain.com>\"\n },\n \"reply_to\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reply To\",\n \"description\": \"The reply to email address. For multiple addresses, send as a list of strings\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the email. If not provided, the default subject will be used.\"\n },\n \"audience_id\": {\n \"type\": \"string\",\n \"title\": \"Audience Id\",\n \"description\": \"The audience id that the broadcast will be sent to\"\n },\n \"resend_api_key\": {\n \"type\": \"string\",\n \"title\": \"Resend Api Key\",\n \"description\": \"Resend API key to use\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"sender\",\n \"audience_id\",\n \"resend_api_key\"\n ],\n \"title\": \"ResendBroadcastParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"ResendBroadcastAction\"\n },\n {\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"const\": \"google_docs\",\n \"title\": \"Action\",\n \"default\": \"google_docs\"\n },\n \"params\": {\n \"properties\": {\n \"client_json\": {\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"title\": \"Client Json\",\n \"description\": \"The google service account json. This should be a dict. You can get this from the google cloud console. The document will be created in the service account's google drive and shared with the user.\"\n },\n \"emails\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Emails\",\n \"description\": \"The emails to share the doc with\"\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"client_json\"\n ],\n \"title\": \"GoogleDocsParams\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"params\"\n ],\n \"title\": \"GoogleDocsAction\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"action\",\n \"mapping\": {\n \"email\": \"#/components/schemas/EmailAction\",\n \"google_docs\": \"#/components/schemas/GoogleDocsAction\",\n \"resend_broadcast\": \"#/components/schemas/ResendBroadcastAction\",\n \"webhook\": \"#/components/schemas/WebhookAction\"\n }\n }\n },\n \"type\": \"array\",\n \"title\": \"Triggers\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Configuration for actions to trigger for the alert. Available actions are: WebhookAction, EmailAction, ResendBroadcastAction, GoogleDocsAction\"\n },\n \"always_trigger\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Always Trigger\",\n \"description\": \"Whether to always trigger the actions when sources are scanned. This skips the check for if the alert conditions are satisfied and run triggers immediately. Defaults to False.\"\n },\n \"repeat\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Repeat\",\n \"description\": \"Whether to repeat the alert. Default is True. If False, the alert will be disabled after it triggers once.\"\n },\n \"active\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Active\",\n \"description\": \"Whether the alert is active or not. Default is True.\"\n },\n \"expires_at\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Expires At\",\n \"description\": \"The expiration date for the alert. Default is None. If set, the alert will be disabled after this date.\"\n },\n \"report\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"legacy\",\n \"title\": \"Identifier\",\n \"default\": \"legacy\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-5\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4o-mini\",\n \"o3-mini\",\n \"claude-3-5-sonnet-latest\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"claude-sonnet-4-6\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the report. Defaults to claude-sonnet-4-6.\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"gpt-4o\"\n }\n },\n \"type\": \"object\",\n \"title\": \"LegacyReportRequest\",\n \"description\": \"DEPRECATED - Use DeepNewsReportRequest instead.\\nLegacy report configuration (original format).\\n\\nThis is the original ReportRequest format that uses a simple model field\\nfor report generation without DeepNews capabilities.\"\n },\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to claude-sonnet-4-6\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"claude-sonnet-4-6\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 190,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 2.\",\n \"default\": 2\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n },\n \"start_citation_number\": {\n \"type\": \"integer\",\n \"title\": \"Start Citation Number\",\n \"description\": \"Starting number for inline citations. Offsets fetched source citation keys. Useful if you are providing the agent outside sources with numbered citation keys. Defaults to 1.\",\n \"default\": 1\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"description\": \"Whether to use journalist mode for more factual reporting. Defaults to True.\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsReportParams\",\n \"description\": \"Parameters for DeepNews alert report.\\n\\nDeepNews performs deep research using multiple tools.\"\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt\",\n \"description\": \"The prompt to use for report generation instructions. This is similar to the alert query but can contain additional instructions on how to format the report.\",\n \"example\": [\n \"Monitor Tesla stock and summarize any major price movements with percentage changes\",\n \"Track the current situation in the Middle East and give me a bullet point list of recent events\"\n ]\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"prompt\"\n ],\n \"title\": \"DeepNewsReportRequest\",\n \"description\": \"DeepNews report configuration.\\n\\nUses DeepNews deep research capabilities for information retrieval and report generation.\"\n },\n {\n \"items\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"legacy\",\n \"title\": \"Identifier\",\n \"default\": \"legacy\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-5\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4o-mini\",\n \"o3-mini\",\n \"claude-3-5-sonnet-latest\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"claude-sonnet-4-6\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the report. Defaults to claude-sonnet-4-6.\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"gpt-4o\"\n }\n },\n \"type\": \"object\",\n \"title\": \"LegacyReportRequest\",\n \"description\": \"DEPRECATED - Use DeepNewsReportRequest instead.\\nLegacy report configuration (original format).\\n\\nThis is the original ReportRequest format that uses a simple model field\\nfor report generation without DeepNews capabilities.\"\n },\n {\n \"properties\": {\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL to use for the report\"\n },\n \"include_appendix\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Include Appendix\",\n \"description\": \"Whether to append thinking and search traces as an appendix to the report.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"identifier\": {\n \"type\": \"string\",\n \"const\": \"deepnews\",\n \"title\": \"Identifier\",\n \"default\": \"deepnews\"\n },\n \"params\": {\n \"properties\": {\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery. Defaults to ['asknews', 'google', 'wiki', 'x'].\",\n \"default\": [\n \"asknews\",\n \"google\",\n \"wiki\",\n \"x\"\n ]\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"default\": \"\"\n },\n \"n_articles\": {\n \"type\": \"integer\",\n \"title\": \"N Articles\",\n \"description\": \"Number of articles to return\",\n \"default\": 10\n },\n \"start_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Start Timestamp\",\n \"description\": \"Timestamp to start search from\"\n },\n \"end_timestamp\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"End Timestamp\",\n \"description\": \"Timestamp to end search at\"\n },\n \"time_filter\": {\n \"type\": \"string\",\n \"enum\": [\n \"crawl_date\",\n \"pub_date\"\n ],\n \"title\": \"Time Filter\",\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"default\": \"crawl_date\"\n },\n \"offset\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"title\": \"Offset\",\n \"description\": \"The number of results to offset for followup queries. Use for pagination. The value to put here is returned in the response.offset from previous searches.\",\n \"default\": 0\n },\n \"categories\": {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"All\",\n \"Business\",\n \"Crime\",\n \"Politics\",\n \"Science\",\n \"Sports\",\n \"Technology\",\n \"Military\",\n \"Health\",\n \"Entertainment\",\n \"Finance\",\n \"Culture\",\n \"Climate\",\n \"Environment\",\n \"World\"\n ]\n },\n \"type\": \"array\",\n \"title\": \"Categories\",\n \"description\": \"Categories of news to filter on\",\n \"default\": [\n \"All\"\n ]\n },\n \"provocative\": {\n \"type\": \"string\",\n \"enum\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ],\n \"title\": \"Provocative\",\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"default\": \"all\"\n },\n \"authors\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Authors\",\n \"description\": \"Authors to filter articles by.\"\n },\n \"reporting_voice\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"Objective\",\n \"Subjective\",\n \"Investigative\",\n \"Narrative\",\n \"Analytical\",\n \"Advocacy\",\n \"Conversational\",\n \"Satirical\",\n \"Emotive\",\n \"Explanatory\",\n \"Persuasive\",\n \"Sensational\",\n \"Unknown\",\n \"all\"\n ]\n }\n ],\n \"title\": \"Reporting Voice\",\n \"description\": \"Type of reporting voice to filer by.\",\n \"default\": [\n \"all\"\n ]\n },\n \"domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Domain Url\",\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"bad_domain_url\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Bad Domain Url\",\n \"description\": \"Domain blacklist.This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\"\n },\n \"page_rank\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Page Rank\",\n \"description\": \"Maximum allowed page rank for returned articles.\"\n },\n \"hours_back\": {\n \"type\": \"integer\",\n \"title\": \"Hours Back\",\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"default\": 24\n },\n \"string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\"\n },\n \"string_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"String Guarantee Op\",\n \"description\": \"Operator to use for string guarantee list.\",\n \"default\": \"AND\"\n },\n \"reverse_string_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse String Guarantee\",\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\"\n },\n \"entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Entity Guarantee\",\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"reverse_entity_guarantee\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reverse Entity Guarantee\",\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\"\n },\n \"entity_guarantee_op\": {\n \"type\": \"string\",\n \"enum\": [\n \"AND\",\n \"OR\"\n ],\n \"title\": \"Entity Guarantee Op\",\n \"description\": \"Operator to use for entity guarantee list.\",\n \"default\": \"OR\"\n },\n \"languages\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"sq\",\n \"ar\",\n \"az\",\n \"ca\",\n \"zh\",\n \"hr\",\n \"cs\",\n \"da\",\n \"nl\",\n \"en\",\n \"eo\",\n \"fi\",\n \"fr\",\n \"gl\",\n \"de\",\n \"el\",\n \"he\",\n \"hi\",\n \"hu\",\n \"is\",\n \"id\",\n \"ia\",\n \"it\",\n \"ja\",\n \"kk\",\n \"km\",\n \"ko\",\n \"ky\",\n \"ms\",\n \"mt\",\n \"mhr\",\n \"mn\",\n \"no\",\n \"or\",\n \"pl\",\n \"pt\",\n \"pa\",\n \"ro\",\n \"ru\",\n \"sr\",\n \"sk\",\n \"sl\",\n \"es\",\n \"sv\",\n \"ta\",\n \"te\",\n \"th\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"unknown\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Languages\",\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\"\n },\n \"countries\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries\",\n \"description\": \"Countries to filter by, this is the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"countries_blacklist\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Countries Blacklist\",\n \"description\": \"Countries to blacklist, this is the two-letter ISO country code. For example: United States is 'US', France is 'FR', Sweden is 'SE'.\"\n },\n \"continents\": {\n \"anyOf\": [\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"Africa\",\n \"Asia\",\n \"Oceania\",\n \"Europe\",\n \"Middle East\",\n \"North America\",\n \"South America\"\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Continents\",\n \"description\": \"Continents to filter by.\"\n },\n \"sentiment\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"negative\",\n \"neutral\",\n \"positive\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sentiment\",\n \"description\": \"Sentiment to filter articles by.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"MCPFilterParams\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent. Defaults to True.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent. Defaults to False.\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent. Defaults to False.\",\n \"default\": false\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\"\n ],\n \"title\": \"Engine\",\n \"description\": \"Legacy vs new DeepNews engine\",\n \"default\": \"v1.5\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"The number of tool calls the agent can run in parallel.\",\n \"default\": 1\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final report. This can help reduce noise in the sources and improve the quality of the report, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to claude-sonnet-4-6\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"claude-sonnet-4-6\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 190,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research. Defaults to 2.\",\n \"default\": 2\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed. Defaults to 4.\",\n \"default\": 4\n },\n \"start_citation_number\": {\n \"type\": \"integer\",\n \"title\": \"Start Citation Number\",\n \"description\": \"Starting number for inline citations. Offsets fetched source citation keys. Useful if you are providing the agent outside sources with numbered citation keys. Defaults to 1.\",\n \"default\": 1\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"description\": \"Whether to use journalist mode for more factual reporting. Defaults to True.\",\n \"default\": true\n }\n },\n \"type\": \"object\",\n \"title\": \"DeepNewsReportParams\",\n \"description\": \"Parameters for DeepNews alert report.\\n\\nDeepNews performs deep research using multiple tools.\"\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt\",\n \"description\": \"The prompt to use for report generation instructions. This is similar to the alert query but can contain additional instructions on how to format the report.\",\n \"example\": [\n \"Monitor Tesla stock and summarize any major price movements with percentage changes\",\n \"Track the current situation in the Middle East and give me a bullet point list of recent events\"\n ]\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"prompt\"\n ],\n \"title\": \"DeepNewsReportRequest\",\n \"description\": \"DeepNews report configuration.\\n\\nUses DeepNews deep research capabilities for information retrieval and report generation.\"\n }\n ]\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Report\",\n \"description\": \"Configuration for generating a written report when the alert triggers. If report is a list, the individual reports will be concatenated into one report in the order they are defined. If not specified, no report is generated. Use ReportRequest(identifier='deepnews', ...) for DeepNews reports.Use ReportRequest(...) or ReportRequest(identifier='legacy', ...) for legacy reports (DEPRECATED). Requests without identifier default to 'deepnews'. Only DeepNews reports can be used in list.\"\n },\n \"title\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Title\",\n \"description\": \"The title of the alert. If not provided, no title will be used.\",\n \"example\": \"Alert for US President's statements on the economy\"\n },\n \"share_link\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Share Link\",\n \"description\": \"The newsplunker share link to update when the alert triggers.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"UpdateAlertRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"run_alert\",\n \"tag\": \"alerts\",\n \"command\": \"run-alert\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/alerts/{alert_id}/run\",\n \"summary\": \"Run an existing alert\",\n \"description\": \"Get an alert.\",\n \"parameters\": [\n {\n \"name\": \"alert_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The alert ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"user_id\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The ID of the user to get logs for\",\n \"type\": \"string\"\n },\n {\n \"name\": \"is_test\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether this is a test run\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n }\n ],\n \"requestBody\": null,\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"get_asset_sentiment\",\n \"tag\": \"analytics\",\n \"command\": \"get-asset-sentiment\",\n \"method\": \"GET\",\n \"path\": \"/v1/analytics/finance/sentiment\",\n \"summary\": \"Get a timeseries of finance news sentiment for assets\",\n \"description\": \"Get the news sentiment for a given asset during a provided period of time.\\n\\nThis endpoint is good for narrow AI, like using in combination with a regressor\\nto forecast prices etc.\",\n \"parameters\": [\n {\n \"name\": \"asset\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"The asset name to query for sentiment.\",\n \"type\": \"string\",\n \"allowedValues\": [\n \"bitcoin\",\n \"ethereum\",\n \"cardano\",\n \"uniswap\",\n \"ripple\",\n \"solana\",\n \"polkadot\",\n \"polygon\",\n \"chainlink\",\n \"tether\",\n \"dogecoin\",\n \"monero\",\n \"tron\",\n \"binance\",\n \"aave\",\n \"tesla\",\n \"microsoft\",\n \"amazon\"\n ]\n },\n {\n \"name\": \"metric\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The metric to obtain. Weighted metrics account for page-rank of original source. Higher page rank sources are weighted more heavily.\",\n \"type\": \"string\",\n \"defaultValue\": \"news_positive\",\n \"allowedValues\": [\n \"news_positive\",\n \"news_negative\",\n \"news_total\",\n \"news_positive_weighted\",\n \"news_negative_weighted\",\n \"news_total_weighted\"\n ]\n },\n {\n \"name\": \"date_from\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The start date in ISO format\",\n \"type\": \"string\"\n },\n {\n \"name\": \"date_to\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The end date in ISO format\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"autofilter\",\n \"tag\": \"autofilter\",\n \"command\": \"autofilter\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/autofilter\",\n \"summary\": \"Generate filter params for AskNews endpoints\",\n \"description\": \"This is a helper endpoint designed to intelligently populate the\\n\\\"parameters of the /news search endpoint of AskNews. It takes a description\\nof the type of news that you want to access, and then maps it to the available\\nparameters automatically.\\n\\nThis endpoint returns the parameters, called filter_params, which can be used\\nin a variety of other AskNews endpoints, for example, /news, /graph, /chat.\",\n \"parameters\": [\n {\n \"name\": \"query\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"A description of what kind of news you want to get.\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"delete_byok_key\",\n \"tag\": \"byok\",\n \"command\": \"delete-byok-key\",\n \"method\": \"DELETE\",\n \"path\": \"/v1/byok/{provider}\",\n \"summary\": \"Delete a stored BYOK API key for a provider\",\n \"description\": \"Delete a stored BYOK API key for a provider.\\nBring your own key is reserved for enterprise clients.\\nIf you want to use this feature, please contact us at contact@asknews.app\",\n \"parameters\": [\n {\n \"name\": \"provider\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The BYOK provider\",\n \"type\": \"string\",\n \"allowedValues\": [\n \"anthropic\",\n \"google\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"get_byok_key\",\n \"tag\": \"byok\",\n \"command\": \"get-byok-key\",\n \"method\": \"GET\",\n \"path\": \"/v1/byok/{provider}\",\n \"summary\": \"Get a stored BYOK API key hint for a provider\",\n \"description\": \"Get the stored BYOK API key hint for a provider.\\nBring your own key is reserved for enterprise clients.\\nIf you want to use this feature, please contact us at contact@asknews.app\",\n \"parameters\": [\n {\n \"name\": \"provider\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The BYOK provider\",\n \"type\": \"string\",\n \"allowedValues\": [\n \"anthropic\",\n \"google\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"upsert_byok_key\",\n \"tag\": \"byok\",\n \"command\": \"upsert-byok-key\",\n \"method\": \"PUT\",\n \"path\": \"/v1/byok/{provider}\",\n \"summary\": \"Store a BYOK API key for a provider\",\n \"description\": \"Store a BYOK API key for a provider.\\nBring your own key is reserved for enterprise clients.\\nIf you want to use this feature, please contact us at contact@asknews.app\",\n \"parameters\": [\n {\n \"name\": \"provider\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The BYOK provider\",\n \"type\": \"string\",\n \"allowedValues\": [\n \"anthropic\",\n \"google\"\n ]\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"api_key\": {\n \"type\": \"string\",\n \"minLength\": 10,\n \"title\": \"Api Key\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"api_key\"\n ],\n \"title\": \"UpsertApiKeyRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"create_charts_endpoint\",\n \"tag\": \"charts\",\n \"command\": \"create-charts-endpoint\",\n \"method\": \"POST\",\n \"path\": \"/v1/chat/charts\",\n \"summary\": \"Create a chart\",\n \"description\": \"Create charts.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"The chart query to create\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"query\"\n ],\n \"title\": \"CreateChartRequest\"\n }\n },\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"deep_news\",\n \"tag\": \"chat\",\n \"command\": \"deep-news\",\n \"method\": \"POST\",\n \"path\": \"/v1/chat/deepnews\",\n \"summary\": \"Deep research into real-time news, archive news, and Google.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"messages\": {\n \"items\": {\n \"properties\": {\n \"role\": {\n \"type\": \"string\",\n \"title\": \"Role\"\n },\n \"content\": {\n \"type\": \"string\",\n \"title\": \"Content\"\n },\n \"name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Name\"\n },\n \"function_call\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Function Call\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"role\",\n \"content\"\n ],\n \"title\": \"CreateDeepNewsRequestMessage\"\n },\n \"type\": \"array\",\n \"title\": \"Messages\",\n \"description\": \"The messages to send to DeepNews. Each message should have 'role' and 'content' keys. Use this to specify what research/monitoring task DeepNews should perform. The 'content' for the final 'user' message should be your Alert query.\",\n \"example\": [\n {\n \"content\": \"What are the latest developments in AI regulation?\",\n \"role\": \"user\"\n }\n ]\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"o1-mini\",\n \"o1\",\n \"o3-mini\",\n \"o3\",\n \"gpt-4o-mini\",\n \"gpt-4o\",\n \"gpt-4.1-2025-04-14\",\n \"gpt-5-mini\",\n \"gpt-5\",\n \"command-nightly\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-7-sonnet-latest\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-nothinking\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-6\",\n \"claude-opus-4-6\",\n \"claude-fable-5\",\n \"deepseek\",\n \"deepseek-basic\",\n \"deepseek-r1-0528\",\n \"meta-llama/Meta-Llama-3-8B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-3-pro\",\n \"gemini-3.1-pro\",\n \"gemini-3-flash\",\n \"gemini-3.5-flash\",\n \"open-source-best\",\n \"kimi-k2p5\"\n ],\n \"title\": \"DeepNewsModel\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"The model to use for DeepNews research. Defaults to claude-sonnet-4-6.\",\n \"default\": \"claude-sonnet-4-6\",\n \"example\": \"claude-sonnet-4-6\"\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Filter Params\",\n \"description\": \"Filter parameters to apply to the AskNews search within DeepNews.\"\n },\n \"search_depth\": {\n \"type\": \"integer\",\n \"maximum\": 190,\n \"minimum\": 1,\n \"title\": \"Search Depth\",\n \"description\": \"The search depth for deep research. Higher values mean more thorough research.\",\n \"default\": 2\n },\n \"max_depth\": {\n \"type\": \"integer\",\n \"maximum\": 200,\n \"minimum\": 1,\n \"title\": \"Max Depth\",\n \"description\": \"The maximum research depth allowed.\",\n \"default\": 6\n },\n \"sources\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n {\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"asknews\",\n \"google\",\n \"graph\",\n \"wiki\",\n \"x\",\n \"reddit\",\n \"charts\",\n \"email\",\n \"full_text_discovery\"\n ]\n },\n \"type\": \"array\"\n }\n ],\n \"title\": \"Sources\",\n \"description\": \"Which data sources DeepNews should use. Can be a single source or a list. Available sources are: asknews, google, graph, wiki, x, reddit, charts, email, full_text_discovery\",\n \"default\": \"asknews\"\n },\n \"inline_citations\": {\n \"type\": \"string\",\n \"enum\": [\n \"markdown_link\",\n \"numbered\",\n \"none\"\n ],\n \"title\": \"Inline Citations\",\n \"description\": \"How to format inline citations in the response. Defaults to: markdown_link. Available options: markdown_link, numbered, none\",\n \"default\": \"markdown_link\"\n },\n \"start_citation_number\": {\n \"type\": \"integer\",\n \"title\": \"Start Citation Number\",\n \"description\": \"Starting number for inline citations. Offsets fetched source citation keys. Useful if you are providing the agent outside sources with numbered citation keys.\",\n \"default\": 1\n },\n \"return_sources\": {\n \"type\": \"boolean\",\n \"title\": \"Return Sources\",\n \"description\": \"Whether return a list of sources used by the agent.\",\n \"default\": true\n },\n \"only_cited_sources\": {\n \"type\": \"boolean\",\n \"title\": \"Only Cited Sources\",\n \"description\": \"Whether to return only of sources that are cited/referenced in the generated response content.\",\n \"default\": true\n },\n \"append_references\": {\n \"type\": \"boolean\",\n \"title\": \"Append References\",\n \"description\": \"Whether to append a 'Cited Articles' section at the end of the response.\",\n \"default\": true\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"description\": \"Whether to use journalist mode for more factual reporting.\",\n \"default\": true\n },\n \"conversational_awareness\": {\n \"type\": \"boolean\",\n \"title\": \"Conversational Awareness\",\n \"description\": \"Whether to use conversational awareness.\",\n \"default\": true\n },\n \"include_entities\": {\n \"type\": \"boolean\",\n \"title\": \"Include Entities\",\n \"description\": \"Whether to provide extracted entities to the agent.\",\n \"default\": true\n },\n \"include_graphs\": {\n \"type\": \"boolean\",\n \"title\": \"Include Graphs\",\n \"description\": \"Whether to provide knowledge graphs to the agent\",\n \"default\": false\n },\n \"include_coordinates\": {\n \"type\": \"boolean\",\n \"title\": \"Include Coordinates\",\n \"description\": \"Whether to provide geo coordinates to the agent.\",\n \"default\": false\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"description\": \"Append 'Generated by AskNews AI' watermark\",\n \"default\": true\n },\n \"stream\": {\n \"type\": \"boolean\",\n \"title\": \"Stream\",\n \"description\": \"Whether to stream the response as server-sent events.\",\n \"default\": false\n },\n \"stop\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Stop\",\n \"description\": \"Sequence(s) where the model will stop generating further tokens.\"\n },\n \"temperature\": {\n \"type\": \"number\",\n \"title\": \"Temperature\",\n \"description\": \"The temperature of the DeepNews agent model. Controls randomness in the output. Higher values (e.g., 1.0) make output more random, lower values (e.g., 0.1) make it more deterministic.\",\n \"default\": 0.9\n },\n \"top_p\": {\n \"type\": \"number\",\n \"title\": \"Top P\",\n \"description\": \"Nucleus sampling parameter. Only tokens with cumulative probability up to top_p are considered.\",\n \"default\": 1\n },\n \"n\": {\n \"type\": \"integer\",\n \"title\": \"N\",\n \"description\": \"Number of completions to generate.\",\n \"default\": 1\n },\n \"max_tokens\": {\n \"type\": \"integer\",\n \"title\": \"Max Tokens\",\n \"description\": \"Maximum number of tokens to generate in the response.\",\n \"default\": 9999\n },\n \"presence_penalty\": {\n \"type\": \"integer\",\n \"title\": \"Presence Penalty\",\n \"description\": \"Penalizes new tokens based on whether they appear in the text so far, encouraging new topics.\",\n \"default\": 0\n },\n \"frequency_penalty\": {\n \"type\": \"integer\",\n \"title\": \"Frequency Penalty\",\n \"description\": \"Penalizes new tokens based on their frequency in the text so far, reducing repetition.\",\n \"default\": 0\n },\n \"user\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"User\",\n \"description\": \"A unique identifier for the end-user, useful for tracking and abuse detection.\"\n },\n \"thread_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Thread Id\",\n \"description\": \"ID of an existing thread to continue the conversation.\"\n },\n \"max_parallel_tool_calls\": {\n \"type\": \"integer\",\n \"maximum\": 4,\n \"minimum\": 1,\n \"title\": \"Max Parallel Tool Calls\",\n \"description\": \"Maximum number of parallel tool calls (e.g., searches) the agent can make during generation. Higher values may speed up responses, but may reduce on-the-fly adaptivity.\",\n \"default\": 1\n },\n \"engine\": {\n \"type\": \"string\",\n \"enum\": [\n \"v1\",\n \"v1.5\",\n \"v2.0\"\n ],\n \"title\": \"Engine\",\n \"description\": \"The engine to use for the DeepNews agent. 'v1' is deprecated while 'v1.5' is our next-generation research agent with access to more tools, better contextual understanding, and improved reasoning capabilities.'v1.5' streams thinking and tool use using tags <think> </think>, <tool_a> </tool_a> Meanwhile, 'v2.0' is the same underlying agent as 'v1.5', but the thinking and tool use chunks are typed content_block_delta's streamed between content_block_start and content_block_stop events, mimicking Anthropic's approach to streaming tool use/thinking events.\",\n \"default\": \"v1.5\"\n },\n \"enable_source_pruning\": {\n \"type\": \"boolean\",\n \"title\": \"Enable Source Pruning\",\n \"description\": \"Whether to enable source pruning, which removes sources that are deemed irrelevant to the final response. This can help reduce noise in the sources and improve the quality of the response, but may also remove some relevant sources if not used carefully.\",\n \"default\": false\n },\n \"cutoff_datetime\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cutoff Datetime\",\n \"description\": \"The knowledge cutoff datetime for the agent prompt and all tool calls.\"\n }\n },\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"required\": [\n \"messages\"\n ],\n \"title\": \"CreateDeepNewsRequest\"\n }\n },\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"get_chat_completions\",\n \"tag\": \"chat\",\n \"command\": \"get-chat-completions\",\n \"method\": \"POST\",\n \"path\": \"/v1/openai/chat/completions\",\n \"summary\": \"Get chat completions from a news-infused AI assistant\",\n \"description\": \"Get the chat completions for a given user message. This endpoint follows the\\nOpenAI API spec. It includes a couple extra params, which include:\\n\\n- **journalist_mode**: Whether to activate an auto prompt that is more keen on AP styling,\\ncitations, and fair reporting. Setting to false, you get a vanilla LLM with the news pre\\nadded to the system prompt. No other prompting.\\n- **inline_citations**: Decides how you want the bot to cite sources. It can use brackets,\\nor it can also include the markdown with URL automatically.\\n- **asknews_watermark**: Whether to include the AskNews watermark in the response.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"model\": {\n \"type\": \"string\",\n \"title\": \"Model\",\n \"default\": \"gpt-4o-mini\"\n },\n \"messages\": {\n \"items\": {\n \"properties\": {\n \"role\": {\n \"type\": \"string\",\n \"title\": \"Role\"\n },\n \"content\": {\n \"type\": \"string\",\n \"title\": \"Content\"\n },\n \"name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Name\"\n },\n \"function_call\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Function Call\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"role\",\n \"content\"\n ],\n \"title\": \"CreateChatCompletionRequestMessage\"\n },\n \"type\": \"array\",\n \"title\": \"Messages\"\n },\n \"temperature\": {\n \"type\": \"number\",\n \"title\": \"Temperature\",\n \"default\": 0.9\n },\n \"top_p\": {\n \"type\": \"number\",\n \"title\": \"Top P\",\n \"default\": 1\n },\n \"n\": {\n \"type\": \"integer\",\n \"title\": \"N\",\n \"default\": 1\n },\n \"stream\": {\n \"type\": \"boolean\",\n \"title\": \"Stream\",\n \"default\": false\n },\n \"stop\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Stop\"\n },\n \"max_tokens\": {\n \"type\": \"integer\",\n \"title\": \"Max Tokens\",\n \"default\": 9999\n },\n \"presence_penalty\": {\n \"type\": \"integer\",\n \"title\": \"Presence Penalty\",\n \"default\": 0\n },\n \"frequency_penalty\": {\n \"type\": \"integer\",\n \"title\": \"Frequency Penalty\",\n \"default\": 0\n },\n \"thread_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Thread Id\"\n },\n \"user\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"User\"\n },\n \"inline_citations\": {\n \"type\": \"string\",\n \"enum\": [\n \"numbered\",\n \"markdown_link\",\n \"none\"\n ],\n \"title\": \"Inline Citations\",\n \"default\": \"markdown_link\"\n },\n \"append_references\": {\n \"type\": \"boolean\",\n \"title\": \"Append References\",\n \"default\": true\n },\n \"journalist_mode\": {\n \"type\": \"boolean\",\n \"title\": \"Journalist Mode\",\n \"default\": true\n },\n \"asknews_watermark\": {\n \"type\": \"boolean\",\n \"title\": \"Asknews Watermark\",\n \"default\": true\n },\n \"conversational_awareness\": {\n \"type\": \"boolean\",\n \"title\": \"Conversational Awareness\",\n \"default\": true\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Filter Params\"\n }\n },\n \"additionalProperties\": true,\n \"type\": \"object\",\n \"required\": [\n \"messages\"\n ],\n \"title\": \"CreateChatCompletionRequest\"\n }\n },\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"list_deepnews_models\",\n \"tag\": \"chat\",\n \"command\": \"list-deepnews-models\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/deepnews-models\",\n \"summary\": \"List available DeepNews models\",\n \"description\": \"List the available DeepNews models with their public type (standard/lite/advanced).\",\n \"parameters\": [],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"find_domains\",\n \"tag\": \"distribution\",\n \"command\": \"find-domains\",\n \"method\": \"GET\",\n \"path\": \"/v1/distribution/domains\",\n \"summary\": \"Find domains\",\n \"description\": \"Find domains with optional filters.\",\n \"parameters\": [\n {\n \"name\": \"page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Page number for pagination\",\n \"type\": \"integer\",\n \"defaultValue\": 1,\n \"minimum\": 1\n },\n {\n \"name\": \"per_page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of items per page\",\n \"type\": \"integer\",\n \"defaultValue\": 10,\n \"minimum\": 1,\n \"maximum\": 100\n },\n {\n \"name\": \"names\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"List of domain names to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"is_tollbit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Filter by tollbit status\",\n \"type\": \"string\"\n },\n {\n \"name\": \"publisher\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Filter by publisher status\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"top_n_domains_by_hits\",\n \"tag\": \"distribution\",\n \"command\": \"top-n-domains-by-hits\",\n \"method\": \"GET\",\n \"path\": \"/v1/distribution/domains/top_n\",\n \"summary\": \"Get the top N domains by hits\",\n \"description\": \"Get the top N domains by hits.\",\n \"parameters\": [\n {\n \"name\": \"limit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of top domains to return\",\n \"type\": \"integer\",\n \"defaultValue\": 10,\n \"minimum\": 1,\n \"maximum\": 100\n },\n {\n \"name\": \"start_date\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Start date to filter by (timestamp in seconds since epoch)\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_date\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"End date to filter by (timestamp in seconds since epoch)\",\n \"type\": \"string\"\n },\n {\n \"name\": \"names\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"List of domain names to filter by\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_forecast\",\n \"tag\": \"forecast\",\n \"command\": \"get-forecast\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/forecast\",\n \"summary\": \"Make an expert forecast for a news event.\",\n \"description\": \"Make an expert forecast for a news event.\\n\\nThis endpoint reaches into the news archive, looking back `lookback` days to\\nextract the most relevant news articles, building a timeline of events, and\\nthen making an expert forecast.\\n\\nThis endpoint is more expensive than the search endpoint, it is calling\\ngpt-4o or claude 3-5 on approx 15k tokens to build the forecast.\\nThis endpoint counts toward \\\"deep\\\" calls in the billing system.\\n\\nIt returns the forecast, the reasoning, and the sources.\",\n \"parameters\": [\n {\n \"name\": \"query\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"The requested forecast.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"lookback\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of days to look back for the forecast.\",\n \"type\": \"integer\",\n \"defaultValue\": 14\n },\n {\n \"name\": \"articles_to_use\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The total number of relevant articles to be extracted from the news archive and used for the forecast.\",\n \"type\": \"integer\",\n \"defaultValue\": 15\n },\n {\n \"name\": \"method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Method to use for the context search Currently only 'kw' is supported.\",\n \"type\": \"string\",\n \"defaultValue\": \"kw\"\n },\n {\n \"name\": \"model\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The model to use for the forecast.\",\n \"type\": \"string\",\n \"defaultValue\": \"gpt-4.1-2025-04-14\",\n \"allowedValues\": [\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-4.1-2025-04-14\",\n \"claude-3-5-sonnet-latest\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-sonnet-4-20250514\",\n \"claude-opus-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-6\",\n \"o1-mini\",\n \"o3-mini\",\n \"o3\"\n ]\n },\n {\n \"name\": \"cutoff_date\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The cutoff date for the forecast. String format is 'YYYY-MM-DD-HH:MM'. This is useful for backtesting forecasts.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"use_reddit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to use Reddit data for the forecast.enterprise customers only.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"additional_context\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Additional context to use for the forecast.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"web_search\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to run a live web search and include results in the forecast. enterprise customers only.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"expert\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The type of expert to use for the forecast.\",\n \"type\": \"string\",\n \"defaultValue\": \"general\",\n \"allowedValues\": [\n \"general\",\n \"sports\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"build_graph\",\n \"tag\": \"graph\",\n \"command\": \"build-graph\",\n \"method\": \"POST\",\n \"path\": \"/v1/news/graph\",\n \"summary\": \"Build a custom mega-news-knowledge graph\",\n \"description\": \"Explore our mega-news-knowledge-graph at which ever level of resolution you need.\\n\\nFully disambiguated and ready to be used in any downstream application.\\n\\nPass a natural language query to get a graph of the latest news. Add parameters\\nto build a graph from our archive, filter your graph by language, country, reporting voice,\\nsentiment, provocative levels, and much more.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": false,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query.\",\n \"default\": \"\"\n },\n \"return_articles\": {\n \"type\": \"boolean\",\n \"title\": \"Return Articles\",\n \"description\": \"Whether to return articles or not.\",\n \"default\": false\n },\n \"min_cluster_probability\": {\n \"type\": \"number\",\n \"title\": \"Min Cluster Probability\",\n \"description\": \"Minimum cluster probability to use for disambiguation\",\n \"default\": 0.9\n },\n \"geo_disambiguation\": {\n \"type\": \"boolean\",\n \"title\": \"Geo Disambiguation\",\n \"description\": \"Whether to use geo disambiguation or not.\",\n \"default\": false\n },\n \"filter_params\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Filter Params\",\n \"description\": \"All parameters available on the search_news endpoint located here: https://docs.asknews.app/en/reference#get-/v1/news/search\"\n },\n \"constrained_disambiguations\": {\n \"anyOf\": [\n {\n \"items\": {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Constrained Disambiguations\",\n \"description\": \"Disambiguation correction parameters.\"\n },\n \"docs_upload\": {\n \"anyOf\": [\n {\n \"items\": {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Docs Upload\",\n \"description\": \"Document upload parameters.\"\n },\n \"visualize_with\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Visualize With\",\n \"description\": \"Request a visualization graph returned in the response.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"Body_build_graph\"\n }\n },\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"index_urls\",\n \"tag\": \"index-urls\",\n \"command\": \"index-urls\",\n \"method\": \"POST\",\n \"path\": \"/v1/news/index_urls\",\n \"summary\": \"Index a list of URLs into AskNews\",\n \"description\": \"Index a list of news article URLs.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"start_time\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"title\": \"Start Time\"\n },\n \"end_time\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"title\": \"End Time\"\n },\n \"urls\": {\n \"items\": {\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"title\": \"Url\"\n },\n \"data\": {\n \"anyOf\": [\n {\n \"properties\": {\n \"scrapes\": {\n \"items\": {\n \"properties\": {\n \"user_agent\": {\n \"type\": \"string\",\n \"title\": \"User Agent\"\n },\n \"count\": {\n \"type\": \"integer\",\n \"title\": \"Count\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"user_agent\",\n \"count\"\n ],\n \"title\": \"ScrapeItem\"\n },\n \"type\": \"array\",\n \"title\": \"Scrapes\"\n },\n \"referrals\": {\n \"items\": {\n \"properties\": {\n \"site\": {\n \"type\": \"string\",\n \"title\": \"Site\"\n },\n \"count\": {\n \"type\": \"integer\",\n \"title\": \"Count\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"site\",\n \"count\"\n ],\n \"title\": \"ReferralItem\"\n },\n \"type\": \"array\",\n \"title\": \"Referrals\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"scrapes\",\n \"referrals\"\n ],\n \"title\": \"ScrapeDataItem\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"skip_dedupe\": {\n \"type\": \"boolean\",\n \"title\": \"Skip Dedupe\",\n \"default\": false\n },\n \"metadata\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Metadata\"\n },\n \"enrichments\": {\n \"anyOf\": [\n {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Enrichments\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"url\"\n ],\n \"title\": \"ScrapedURLItem\"\n },\n \"type\": \"array\",\n \"title\": \"Urls\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"start_time\",\n \"end_time\",\n \"urls\"\n ],\n \"title\": \"URLIndexingRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"get_article\",\n \"tag\": \"news\",\n \"command\": \"get-article\",\n \"method\": \"GET\",\n \"path\": \"/v1/news/{article_id}\",\n \"summary\": \"Get an article by its UUID\",\n \"description\": \"Get a single article given a UUID.\",\n \"parameters\": [\n {\n \"name\": \"article_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"Article ID to retrieve\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_articles\",\n \"tag\": \"news\",\n \"command\": \"get-articles\",\n \"method\": \"GET\",\n \"path\": \"/v1/news\",\n \"summary\": \"Get multiple articles by UUID\",\n \"description\": \"Get articles given a list of UUIDs.\",\n \"parameters\": [\n {\n \"name\": \"article_ids\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"Article UUIDs to fetch.\",\n \"type\": \"array\",\n \"itemType\": \"string\"\n },\n {\n \"name\": \"full_text\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to return the full text of the articles.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_index_counts\",\n \"tag\": \"news\",\n \"command\": \"get-index-counts\",\n \"method\": \"GET\",\n \"path\": \"/v1/index_counts\",\n \"summary\": \"Get the index counts underlying AskNews\",\n \"description\": \"This endpoint is primarly used for the publisher dashboard, to\\nshow the number of articles indexed per source.\",\n \"parameters\": [\n {\n \"name\": \"start_datetime\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Start timestamp to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_datetime\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"End timestamp to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"domains\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Domain or list of domains to get indexing counts for\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sampling\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Sampling to use\",\n \"type\": \"string\",\n \"defaultValue\": \"1d\",\n \"allowedValues\": [\n \"5m\",\n \"1h\",\n \"12h\",\n \"1d\",\n \"1w\",\n \"1m\"\n ]\n },\n {\n \"name\": \"time_filter\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"type\": \"string\",\n \"defaultValue\": \"pub_date\",\n \"allowedValues\": [\n \"crawl_date\",\n \"pub_date\"\n ]\n },\n {\n \"name\": \"categories\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Categories of news to filter on\",\n \"type\": \"string\"\n },\n {\n \"name\": \"provocative\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"reporting_voice\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Type of reporting voice to filer by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bad_domain_url\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"blacklist of domains that must be excluded from resultsThis can be a single domain url or a list of domain urls.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"page_rank\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"maximum allowed pagerank for returned articles\",\n \"type\": \"string\"\n },\n {\n \"name\": \"string_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If defined, the search will only occur on articles that contain this string.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"string_guarantee_op\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Operator to use for string guarantee.\",\n \"type\": \"string\",\n \"defaultValue\": \"AND\",\n \"allowedValues\": [\n \"AND\",\n \"OR\"\n ]\n },\n {\n \"name\": \"reverse_string_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If defined, the search will only occur on articles that do not contain this string.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"entity_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\",\n \"type\": \"string\"\n },\n {\n \"name\": \"entity_guarantee_op\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Operator to use for entity guarantee.\",\n \"type\": \"string\",\n \"defaultValue\": \"OR\",\n \"allowedValues\": [\n \"AND\",\n \"OR\"\n ]\n },\n {\n \"name\": \"languages\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"countries\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Source countries to filter by (this is only for the publisher location, not the locations mentioned in articles. For Locations mentioned in articles, refer to entity_guarantee), countries must be the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"countries_blacklist\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Source countries to blacklist from search (this is only for the publisher location, not the locations mentioned in articles. For Locations mentioned in articles, refer to reverse_entity_guarantee), countries must be the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"continents\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Continents to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sentiment\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Sentiment to filter news articles by.\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_sources_report\",\n \"tag\": \"news\",\n \"command\": \"get-sources-report\",\n \"method\": \"GET\",\n \"path\": \"/v1/sources\",\n \"summary\": \"Get the sources underlying AskNews\",\n \"description\": \"This endpoint is primarly used for transparency and monitoring the\\ndiversity of the data.\\n\\nVisualized at `https://asknews.app/transparency`.\\n\\nGet the distribution of sources/languages/countries underlying AskNews content.\",\n \"parameters\": [\n {\n \"name\": \"n_points\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of points to return\",\n \"type\": \"integer\",\n \"defaultValue\": 100\n },\n {\n \"name\": \"start_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Start timestamp to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"End timestamp to filter by\",\n \"type\": \"string\"\n },\n {\n \"name\": \"metric\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Metric to filter by\",\n \"type\": \"string\",\n \"defaultValue\": \"countries_diversity\",\n \"allowedValues\": [\n \"duplication\",\n \"countries_diversity\",\n \"languages_diversity\",\n \"sources_diversity\",\n \"bucket_loss\"\n ]\n },\n {\n \"name\": \"sampling\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Sampling to use\",\n \"type\": \"string\",\n \"defaultValue\": \"1h\",\n \"allowedValues\": [\n \"5m\",\n \"1h\",\n \"4h\",\n \"1d\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"search_news\",\n \"tag\": \"news\",\n \"command\": \"search-news\",\n \"method\": \"GET\",\n \"path\": \"/v1/news/search\",\n \"summary\": \"Search for enriched real-time news context\",\n \"description\": \"Search for any news, up to the last 5 minutes or in our extensive historical archive\\nfilled with 100s of millions of articles.\\n\\nGeared toward low-latency applications, where time is of the essence. For example, this\\nendpoint is commonly used for quickly getting news context for an LLM.\\n\\nThis endpoint is also commonly used for synthetic data curation. For example, say you\\nare fine-tuning a model for sports. You could filter with `classification=\\\"Sports\\\"`\\nand build a dataset of sports articles.\\n\\nNews articles come with an abundance of valuable metadata, including full summaries, sentiment,\\nentities, reporting voice, page rank, language, and much much more.\\n\\nAn example of this data in action can be found and interacted with at `https://asknews.app/chat`\",\n \"parameters\": [\n {\n \"name\": \"query\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Query string that can be any phrase, keyword, question, or paragraph. If method='nl', then this will be used as a natural language query. If method='kw', then this will be used as a direct keyword query. This is not required, if it is not passed, then the search is based on the remaining filters only.\",\n \"type\": \"string\",\n \"defaultValue\": \"\"\n },\n {\n \"name\": \"n_articles\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of articles to return\",\n \"type\": \"integer\",\n \"defaultValue\": 10,\n \"maximum\": 101\n },\n {\n \"name\": \"start_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to start search from\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Timestamp to end search at\",\n \"type\": \"string\"\n },\n {\n \"name\": \"time_filter\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Control which date type to filter on. 'crawl_date' is the date the article was crawled, 'pub_date' is the date the article was published.\",\n \"type\": \"string\",\n \"defaultValue\": \"crawl_date\",\n \"allowedValues\": [\n \"crawl_date\",\n \"pub_date\"\n ]\n },\n {\n \"name\": \"return_type\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Type of return value. 'string' means that the return is prompt-optimized and ready to be immediately injected into any prompt. 'dicts' means that the return is a structured dictionary, containing additional metadata (like a classic news api). Can be 'string' or 'dicts', or 'both'. 'string' guarantees the lowest-latency response 'dicts' requires more I/O, therefore increases latency (very slightly, depending on your network connection).\",\n \"type\": \"string\",\n \"defaultValue\": \"dicts\",\n \"allowedValues\": [\n \"string\",\n \"dicts\",\n \"both\"\n ]\n },\n {\n \"name\": \"historical\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Search on archive of historical news. Defaults to False, meaning that the search will only look through the most recent news (48 hours)\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Method to use for searching. 'nl' means Natural Language, which is a string that can be any phrase, keyword, question, or paragraph that will be used for semantic search on the news. 'kw' means Keyword, which can also be any keyword(s), phrase, or paragraph, however the search is a direct keyword search on the database. 'both' means both methods will be used and results will be ranked according to IRR. 'both' may reduce latency by 10 pct in exchange for improved accuracy.\",\n \"type\": \"string\",\n \"defaultValue\": \"kw\",\n \"allowedValues\": [\n \"nl\",\n \"kw\",\n \"both\"\n ]\n },\n {\n \"name\": \"similarity_score_threshold\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Similarity score threshold to determine which articles to return. Lower means less similar results are allowed.\",\n \"type\": \"number\",\n \"defaultValue\": 0.5\n },\n {\n \"name\": \"offset\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Offset for pagination. The n_articles is your page size, while your offset is the number of articles to skip to get to your page of interest. For example, if you want to get page 3 for n_article page size of 10, you would set offset to 20.\",\n \"type\": \"string\",\n \"defaultValue\": 0\n },\n {\n \"name\": \"categories\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Categories of news to filter on\",\n \"type\": \"array\",\n \"itemType\": \"string\"\n },\n {\n \"name\": \"doc_start_delimiter\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Document start delimiter for string return.\",\n \"type\": \"string\",\n \"defaultValue\": \"<doc>\"\n },\n {\n \"name\": \"doc_end_delimiter\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Document end delimiter for string return.\",\n \"type\": \"string\",\n \"defaultValue\": \"</doc>\"\n },\n {\n \"name\": \"provocative\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Filter articles based on how provocative they are deemed based on the use of provocative language and emotional vocabulary.\",\n \"type\": \"string\",\n \"allowedValues\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ]\n },\n {\n \"name\": \"reporting_voice\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Type of reporting voice to filer by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"domain_url\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"filter by domain url of interest. This can be a single domain or a list of domains. For example, 'npr.org' or ['nature.com', 'npr.org']\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bad_domain_url\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"blacklist of domains that must be excluded from resultsThis can be a single domain url or a list of domain urls.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"page_rank\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Maximum allowed page rank for returned articles.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"diversify_sources\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Ensure that the return set of articles are selected from diverse sources. This adds latency to the search, but attempts to balance the representation of sources by country and source origins. In summary, a net is cast around your search, then the diversity of sources is analyzed, and your final result matches the large net diversity distribution. This means that your search accuracy is reduced, but you gain more diverse perspectives.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"strategy\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Strategy to use for searching. 'latest news' automatically setsmethod='nl', historical=False, and looks within the past 24 hours. 'news knowledge' automatically sets method='kw', historical=True, and looks within the past 60 days. 'news knowledge' will increase latency due to the larger search space in the archive. Use 'default' if you want to control start_timestamp, end_timestamp, historical, and method.\",\n \"type\": \"string\",\n \"defaultValue\": \"default\",\n \"allowedValues\": [\n \"latest news\",\n \"news knowledge\",\n \"default\"\n ]\n },\n {\n \"name\": \"hours_back\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Can be set to easily control the look back on the search. This is the same as controlling the 'start_timestamp' parameter. The difference is that this is not a timestamp, it is the number of hours back to look from the current time. Defaults to 24 hours.\",\n \"type\": \"integer\",\n \"defaultValue\": 24\n },\n {\n \"name\": \"string_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If defined, the search will only occur on articles that contain strings in this list.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"string_guarantee_op\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Operator to use for string guarantee list.\",\n \"type\": \"string\",\n \"defaultValue\": \"AND\",\n \"allowedValues\": [\n \"AND\",\n \"OR\"\n ]\n },\n {\n \"name\": \"reverse_string_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If defined, the search will only occur on articles that do not contain strings in this list.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"entity_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\",\n \"type\": \"string\"\n },\n {\n \"name\": \"reverse_entity_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Reverse entity guarantee to filter by. This is a list of strings, where each string includes entity type and entity value separated by a colon. The first element is the entity type and the second element is the entity value. For example ['Location:Paris', 'Person:John']\",\n \"type\": \"string\"\n },\n {\n \"name\": \"entity_guarantee_op\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Operator to use for entity guarantee list.\",\n \"type\": \"string\",\n \"defaultValue\": \"OR\",\n \"allowedValues\": [\n \"AND\",\n \"OR\"\n ]\n },\n {\n \"name\": \"return_graphs\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Return graphs for the articles. Only available to Analyst tier and above.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"return_geo\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Return GeoCoordinates associated with locations discussed inside the articles. Only available to Analyst tier and above.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"languages\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Languages to filter by. This is the two-letter 'set 1' of the ISO 639-1 standard. For example: English is 'en'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"countries\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Source countries to filter by (this is only for the publisher location, not the locations mentioned in articles. For Locations mentioned in articles, refer to entity_guarantee), countries must be the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"countries_blacklist\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Source countries to blacklist from search (this is only for the publisher location, not the locations mentioned in articles. For Locations mentioned in articles, refer to reverse_entity_guarantee), countries must be the two-letter ISO country codeFor example: United States is 'US', France is 'FR', Sweden is 'SE'.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"continents\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Continents to filter by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sentiment\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Sentiment to filter articles by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"premium\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Include premium sources.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"authors\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Authors to filter articles by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"try_cache\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Enable response caching with the specified TTL. When a cached response is returned, usage is charged at 0.25x the normal rate. Valid values: '1h' (1 hour), '6h' (6 hours), '12h' (12 hours), '24h' (24 hours), '3d' (3 days), '7d' (7 days).\",\n \"type\": \"string\"\n },\n {\n \"name\": \"geo_lat\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Latitude for geo-radius filter. Must be provided together with geo_lon and geo_radius. Filters articles whose coordinates fall within the specified circle.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"geo_lon\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Longitude for geo-radius filter. Must be provided together with geo_lat and geo_radius.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"geo_radius\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Radius in meters for geo-radius filter. Must be provided together with geo_lat and geo_lon.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"geo_polygon\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"JSON string defining a polygon for geo filtering. Must contain an 'exterior' key with a list of {lon, lat} points. The first and last point must be the same. Optionally include 'interiors' as a list of rings (each a list of {lon, lat} points) to exclude areas. Example: {\\\"exterior\\\": [{\\\"lon\\\": -70, \\\"lat\\\": -70}, {\\\"lon\\\": 60, \\\"lat\\\": -70}, {\\\"lon\\\": 60, \\\"lat\\\": 60}, {\\\"lon\\\": -70, \\\"lat\\\": 60}, {\\\"lon\\\": -70, \\\"lat\\\": -70}]}\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"delete_newsletter\",\n \"tag\": \"newsletters\",\n \"command\": \"delete-newsletter\",\n \"method\": \"DELETE\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}\",\n \"summary\": \"Delete a newsletter\",\n \"description\": \"Delete a newsletter.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"delete_newsletter_contact\",\n \"tag\": \"newsletters\",\n \"command\": \"delete-newsletter-contact\",\n \"method\": \"DELETE\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}/contacts/{contact_id}\",\n \"summary\": \"Delete a newsletter contact\",\n \"description\": \"Delete a newsletter contact.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"contact_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The contact ID\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"get_newsletter\",\n \"tag\": \"newsletters\",\n \"command\": \"get-newsletter\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}\",\n \"summary\": \"Get a newsletter\",\n \"description\": \"Get a newsletter.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_newsletter_contact\",\n \"tag\": \"newsletters\",\n \"command\": \"get-newsletter-contact\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}/contacts/{contact_id}\",\n \"summary\": \"Get a newsletter contact\",\n \"description\": \"Get a newsletter contact.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"contact_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The contact ID\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_newsletter_contacts\",\n \"tag\": \"newsletters\",\n \"command\": \"get-newsletter-contacts\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}/contacts\",\n \"summary\": \"Get newsletter contacts\",\n \"description\": \"Get newsletter contacts.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_newsletters\",\n \"tag\": \"newsletters\",\n \"command\": \"get-newsletters\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/newsletters\",\n \"summary\": \"Get all created newsletters\",\n \"description\": \"Get all created newsletters.\",\n \"parameters\": [],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_public_newsletters\",\n \"tag\": \"newsletters\",\n \"command\": \"get-public-newsletters\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/newsletters/public\",\n \"summary\": \"Get all public newsletters\",\n \"description\": \"Get all public newsletters.\",\n \"parameters\": [\n {\n \"name\": \"page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The page number to get\",\n \"type\": \"integer\",\n \"defaultValue\": 1\n },\n {\n \"name\": \"per_page\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of items per page\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"all\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to get all the public newsletters\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"patch_newsletter_contact\",\n \"tag\": \"newsletters\",\n \"command\": \"patch-newsletter-contact\",\n \"method\": \"PATCH\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}/contacts/{contact_id}\",\n \"summary\": \"Update a newsletter contact\",\n \"description\": \"Update a newsletter contact.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n {\n \"name\": \"contact_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The contact ID\",\n \"type\": \"string\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"title\": \"Email\"\n },\n \"first_name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"First Name\"\n },\n \"last_name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Last Name\"\n },\n \"unsubscribed\": {\n \"type\": \"boolean\",\n \"title\": \"Unsubscribed\",\n \"default\": false\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"email\"\n ],\n \"title\": \"NewsletterContactRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"post_newsletter\",\n \"tag\": \"newsletters\",\n \"command\": \"post-newsletter\",\n \"method\": \"POST\",\n \"path\": \"/v1/chat/newsletters\",\n \"summary\": \"Create a newsletter\",\n \"description\": \"Create a newsletter.\",\n \"parameters\": [],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"title\": \"Name\",\n \"description\": \"The name of the newsletter.\",\n \"example\": \"Daily Economy News\"\n },\n \"query\": {\n \"type\": \"string\",\n \"title\": \"Query\",\n \"description\": \"The natural language query to run for the newsletter.\",\n \"example\": \"Send me the latest news on the economy.\"\n },\n \"cron\": {\n \"type\": \"string\",\n \"title\": \"Cron\",\n \"description\": \"The cron schedule for the newsletter. For example daily at 00:00 UTC is '0 0 * * *'. See https://crontab.run/ for more examples\",\n \"example\": \"0 0 * * *\"\n },\n \"model\": {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"claude-3-5-sonnet-latest\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the newsletter.\",\n \"example\": \"gpt-4o-mini\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the newsletter. If not provided it will be auto generated.\",\n \"example\": \"Your Daily Economy News\"\n },\n \"sender\": {\n \"type\": \"string\",\n \"title\": \"Sender\",\n \"description\": \"The sender of the newsletter.\",\n \"example\": \"Your Name <sender@domain.com>\"\n },\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL for the newsletter.\",\n \"example\": \"https://example.com/logo.png\"\n },\n \"reply_to\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reply To\",\n \"description\": \"The reply-to address for the newsletter. If not provided, the sender will be used.\",\n \"example\": \"Your Name <sender@domain.com>\"\n },\n \"audience_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Audience Id\",\n \"description\": \"The audience ID to use for the newsletter. If not provided a new audience will be created.\",\n \"example\": \"123e4567-e89b-12d3-a456-426614174000\"\n },\n \"resend_api_key\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Resend Api Key\",\n \"description\": \"The resend API key to use for the newsletter. If not provided, the newsletter will not be sent.\",\n \"example\": \"re_123456789\"\n },\n \"public\": {\n \"type\": \"boolean\",\n \"title\": \"Public\",\n \"description\": \"Whether the newsletter is public or not. If not provided, the newsletter will be public. If you make the newsletter public only title and query will be shown.\",\n \"default\": true\n },\n \"active\": {\n \"type\": \"boolean\",\n \"title\": \"Active\",\n \"description\": \"Whether the newsletter is active or not. If not provided, the newsletter will be active. If you make the newsletter inactive, it will not be sent.\",\n \"default\": true\n },\n \"expires_at\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Expires At\",\n \"description\": \"The expiration date for the alert. Default is None. If set, the alert will be disabled after this date.\"\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"query\",\n \"cron\",\n \"model\",\n \"sender\"\n ],\n \"title\": \"CreateNewsletterRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"post_newsletter_contacts\",\n \"tag\": \"newsletters\",\n \"command\": \"post-newsletter-contacts\",\n \"method\": \"POST\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}/contacts\",\n \"summary\": \"Create a newsletter contact\",\n \"description\": \"Create a newsletter contact.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"title\": \"Email\"\n },\n \"first_name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"First Name\"\n },\n \"last_name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Last Name\"\n },\n \"unsubscribed\": {\n \"type\": \"boolean\",\n \"title\": \"Unsubscribed\",\n \"default\": false\n }\n },\n \"type\": \"object\",\n \"required\": [\n \"email\"\n ],\n \"title\": \"NewsletterContactRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"put_newsletter\",\n \"tag\": \"newsletters\",\n \"command\": \"put-newsletter\",\n \"method\": \"PUT\",\n \"path\": \"/v1/chat/newsletters/{newsletter_id}\",\n \"summary\": \"Update a newsletter\",\n \"description\": \"Update a newsletter.\",\n \"parameters\": [\n {\n \"name\": \"newsletter_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The newsletter ID\",\n \"type\": \"string\",\n \"format\": \"uuid\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"contentTypes\": [\n \"application/json\"\n ],\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Name\",\n \"description\": \"The name of the newsletter.\",\n \"example\": \"Daily Economy News\"\n },\n \"query\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Query\",\n \"description\": \"The natural language query to run for the newsletter.\",\n \"example\": \"Send me the latest news on the economy.\"\n },\n \"cron\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Cron\",\n \"description\": \"The cron schedule for the newsletter. For example daily at 00:00 UTC is '0 0 * * *'. See https://crontab.run/ for more examples\",\n \"example\": \"0 0 * * *\"\n },\n \"model\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"claude-3-5-sonnet-latest\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct\",\n \"meta-llama/Meta-Llama-3.3-70B-Instruct\"\n ]\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Model\",\n \"description\": \"The model to use for the newsletter.\",\n \"example\": \"gpt-4o-mini\"\n },\n \"subject\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Subject\",\n \"description\": \"The subject of the newsletter. If not provided it will be auto generated.\",\n \"example\": \"Your Daily Economy News\"\n },\n \"sender\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Sender\",\n \"description\": \"The sender of the newsletter.\",\n \"example\": \"Your Name <sender@domain.com>\"\n },\n \"logo_url\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 2083,\n \"minLength\": 1,\n \"format\": \"uri\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Logo Url\",\n \"description\": \"The logo URL for the newsletter.\",\n \"example\": \"https://example.com/logo.png\"\n },\n \"reply_to\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Reply To\",\n \"description\": \"The reply-to address for the newsletter. If not provided, the sender will be used.\",\n \"example\": \"Your Name <sender@domain.com>\"\n },\n \"audience_id\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Audience Id\",\n \"description\": \"The audience ID to use for the newsletter. If not provided a new audience will be created.\",\n \"example\": \"123e4567-e89b-12d3-a456-426614174000\"\n },\n \"resend_api_key\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Resend Api Key\",\n \"description\": \"The resend API key to use for the newsletter. If not provided, the newsletter will not be sent.\",\n \"example\": \"re_123456789\"\n },\n \"public\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Public\",\n \"description\": \"Whether the newsletter is public or not. If not provided, the newsletter will be public. If you make the newsletter public only title and query will be shown.\"\n },\n \"active\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Active\",\n \"description\": \"Whether the newsletter is active or not. If not provided, the newsletter will be active. If you make the newsletter inactive, it will not be sent.\"\n },\n \"expires_at\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Expires At\",\n \"description\": \"The expiration date for the alert. Default is None. If set, the alert will be disabled after this date.\"\n }\n },\n \"type\": \"object\",\n \"title\": \"UpdateNewsletterRequest\"\n }\n },\n \"safety\": \"mutating\"\n },\n {\n \"operationId\": \"ping\",\n \"tag\": \"ping\",\n \"command\": \"ping\",\n \"method\": \"GET\",\n \"path\": \"/\",\n \"summary\": \"Ping\",\n \"parameters\": [],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_rate_limit_status\",\n \"tag\": \"profile\",\n \"command\": \"get-rate-limit-status\",\n \"method\": \"GET\",\n \"path\": \"/v1/profiles/me/limits\",\n \"summary\": \"Get the current user's rate limit status\",\n \"description\": \"Return the caller's current rate-limit and concurrency-limit state without consuming any tokens.\",\n \"parameters\": [],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_user_profile\",\n \"tag\": \"profile\",\n \"command\": \"get-user-profile\",\n \"method\": \"GET\",\n \"path\": \"/v1/profiles/me\",\n \"summary\": \"Get the current user's profile\",\n \"description\": \"Get the current profile\",\n \"parameters\": [],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"search_reddit\",\n \"tag\": \"reddit\",\n \"command\": \"search-reddit\",\n \"method\": \"GET\",\n \"path\": \"/v1/reddit/search\",\n \"summary\": \"Search Reddit, summarize threads, and return analysis.\",\n \"description\": \"Go to Reddit, search threads, summarize the threads, return analysis.\\n`deep`=True is a live web scrape, AskNews searches Reddit, finds threads,\\nsummarizes them, analyzes them, and returns the results. `deep`=False\\nis a search in AskNews' existing database of Reddit threads.\",\n \"parameters\": [\n {\n \"name\": \"keywords\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"Keywords used to search for relevant Reddit threads.\",\n \"type\": \"array\",\n \"itemType\": \"string\"\n },\n {\n \"name\": \"n_threads\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of Reddit threads to summarize and return\",\n \"type\": \"integer\",\n \"defaultValue\": 5\n },\n {\n \"name\": \"method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The search method. Can be 'nl' or 'kw'. If 'nl', then the query will be used as a natural language query. If 'kw', then the query will be used as a direct keyword query.\",\n \"type\": \"string\",\n \"defaultValue\": \"kw\",\n \"allowedValues\": [\n \"nl\",\n \"kw\"\n ]\n },\n {\n \"name\": \"deep\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Deep means that AskNews goes directly to Reddit, searches live, summarizes the threads live, and returns structured data for you. Deep=False means that AskNews looks in its existing database of Reddit threads and returns the most similar threads \",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"return_type\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The return type. Can be 'dicts', 'string', or 'both'.\",\n \"type\": \"string\",\n \"defaultValue\": \"string\",\n \"allowedValues\": [\n \"dicts\",\n \"string\",\n \"both\"\n ]\n },\n {\n \"name\": \"time_filter\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The time filter.\",\n \"type\": \"string\",\n \"defaultValue\": \"day\",\n \"allowedValues\": [\n \"hour\",\n \"day\",\n \"week\",\n \"month\",\n \"year\",\n \"all\"\n ]\n },\n {\n \"name\": \"sort\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The sort order.\",\n \"type\": \"string\",\n \"defaultValue\": \"relevance\",\n \"allowedValues\": [\n \"relevance\",\n \"hot\",\n \"top\",\n \"new\",\n \"comments\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_stories\",\n \"tag\": \"stories\",\n \"command\": \"get-stories\",\n \"method\": \"GET\",\n \"path\": \"/v1/stories\",\n \"summary\": \"Filter and search for top news narratives\",\n \"description\": \"Filter on our custom, in-house written, stories/events/narratives.\\n\\nThese stories are based on clusters of articles (which come through this\\nendpoint as well, so you can consider this a clustering endpoint). We write\\nstories and track them through time.\\n\\nThe enrichments include a full Reddit overview (including all the thread metadata),\\nas well as descriptions of the reporting voice, the key takeaways, contradictions,\\nall the entities, and much, much more.\\n\\nYou can see this data in action, and filter it similarly at\\n`https://asknews.app/stories`\",\n \"parameters\": [\n {\n \"name\": \"query\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Query to be used for the search. If method='nl', then this will beused as a natural language query. If method='kw', then this willbe used as a direct keyword query.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"categories\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Categories to use for filtering the stories search\",\n \"type\": \"array\",\n \"itemType\": \"string\",\n \"defaultValue\": []\n },\n {\n \"name\": \"uuids\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"A list of UUIDs to retrieve.\",\n \"type\": \"array\",\n \"itemType\": \"string\",\n \"defaultValue\": []\n },\n {\n \"name\": \"start_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Start timestamp to filter results on.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_timestamp\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"End timestamp to filter results on.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sort_by\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Which type of sorting to perform.\\npublished: Sort by published date.\\ncoverage: Sort by coverage.\\nsentiment: Sort by sentiment.\\nrelevance: Sort by relevance of similarity score/ranking.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"sort_type\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to sort results in ascending or descending order.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"continent\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Continents to filter by.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"offset\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Offset to use\",\n \"type\": \"string\",\n \"defaultValue\": 0\n },\n {\n \"name\": \"limit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Limit to use\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"expand_updates\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to expand updates\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"max_updates\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Max updates to use\",\n \"type\": \"integer\",\n \"defaultValue\": 2\n },\n {\n \"name\": \"max_articles\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Max articles to use per update\",\n \"type\": \"integer\",\n \"defaultValue\": 5\n },\n {\n \"name\": \"method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Method to use for query, 'nl' means natural language, and will run a semantic search on the stories database. 'kw' means keyword, and will search by keyword on the stories database. 'both' means that both methods will be used and results will be ranked according to IRR.\",\n \"type\": \"string\",\n \"defaultValue\": \"kw\",\n \"allowedValues\": [\n \"nl\",\n \"kw\",\n \"both\"\n ]\n },\n {\n \"name\": \"obj_type\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Object type to filter by, can be a list with 'story' and/or 'story_update'\",\n \"type\": \"array\",\n \"itemType\": \"string\",\n \"defaultValue\": [\n \"story\"\n ]\n },\n {\n \"name\": \"reddit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether or not to include Reddit analysiswhere the integer indicates the number of threadsto include in the response. 0 is default. Requirespaid plan to access.\",\n \"type\": \"integer\",\n \"defaultValue\": 0\n },\n {\n \"name\": \"citation_method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Method to use for citation filtering.\",\n \"type\": \"string\",\n \"defaultValue\": \"brackets\",\n \"allowedValues\": [\n \"brackets\",\n \"urls\",\n \"none\"\n ]\n },\n {\n \"name\": \"similarity_score_threshold\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Similarity score threshold to use when using query\",\n \"type\": \"number\",\n \"defaultValue\": 0.75\n },\n {\n \"name\": \"provocative\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Filter stories based on how provocative the underlying articles are deemed based on the use of provocative language and emotional vocabulary.\",\n \"type\": \"string\",\n \"defaultValue\": \"all\",\n \"allowedValues\": [\n \"unknown\",\n \"low\",\n \"medium\",\n \"high\",\n \"all\"\n ]\n },\n {\n \"name\": \"strategy\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Strategy to use for automatically controlling the search. 'default' is the default strategy, which follows all filters faithfully. 'topstories' aims to give a diverse look at top news stories that are relevant to the current filter combination.'topstories_categories' aims to give the top stories for each category. 'topstories_continents' aims to give the top stories for each continent.\",\n \"type\": \"string\",\n \"defaultValue\": \"default\",\n \"allowedValues\": [\n \"default\",\n \"topstories\",\n \"topstories_categories\",\n \"topstories_continents\"\n ]\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"get_story\",\n \"tag\": \"stories\",\n \"command\": \"get-story\",\n \"method\": \"GET\",\n \"path\": \"/v1/stories/{story_id}\",\n \"summary\": \"Get a story containing updates\",\n \"description\": \"Get a single news story given its UUID.\",\n \"parameters\": [\n {\n \"name\": \"story_id\",\n \"location\": \"path\",\n \"required\": true,\n \"description\": \"The story UUID, update UUID, or URL safe title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"expand_updates\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to expand updates\",\n \"type\": \"boolean\",\n \"defaultValue\": true\n },\n {\n \"name\": \"max_updates\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Max number of updates to include in the story object\",\n \"type\": \"integer\",\n \"defaultValue\": 10\n },\n {\n \"name\": \"max_articles\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Max articles to include per update\",\n \"type\": \"integer\",\n \"defaultValue\": 25\n },\n {\n \"name\": \"reddit\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Whether to include Reddit analysis\",\n \"type\": \"integer\",\n \"defaultValue\": 0\n },\n {\n \"name\": \"citation_method\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Method to use for citation filtering.\",\n \"type\": \"string\",\n \"defaultValue\": \"brackets\",\n \"allowedValues\": [\n \"brackets\",\n \"urls\",\n \"none\"\n ]\n },\n {\n \"name\": \"condense_auxillary_updates\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"When requesting a particular story update, you can expand the assocaited updates by settined max_updates to the total you would like to get. If you want those updates to by condensed for reduced latency, you can set condense_auxillary_updates to 'False'.\",\n \"type\": \"boolean\",\n \"defaultValue\": true\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n },\n {\n \"operationId\": \"live_web_search\",\n \"tag\": \"websearch\",\n \"command\": \"live-web-search\",\n \"method\": \"GET\",\n \"path\": \"/v1/chat/websearch\",\n \"summary\": \"Run a live websearch.\",\n \"description\": \"Run a live websearch on a set of queries, get back a fully structured and\\nLLM-distilled response (in addition to the raw text if you need that as well).\\n\\nYour response includes as_string and as_dicts, where as_string is a prompt-optimized\\ndistillation of the information, done by an LLM. as_dicts contains all the details\\nnecessary to feed into other parts of your application.\",\n \"parameters\": [\n {\n \"name\": \"queries\",\n \"location\": \"query\",\n \"required\": true,\n \"description\": \"A list of queries to be live searched, analyzed, distilled, and structured.\",\n \"type\": \"array\",\n \"itemType\": \"string\"\n },\n {\n \"name\": \"lookback\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of hours back to allow the websearch to look. Defaults to All time\",\n \"type\": \"string\"\n },\n {\n \"name\": \"start_datetime\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Earliest acceptable publication datetime for results. For v1, acts like the existing lookback filter.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"end_datetime\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Latest acceptable publication datetime for results. \",\n \"type\": \"string\"\n },\n {\n \"name\": \"engine\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Search engine version to use for live websearch results.\",\n \"type\": \"string\",\n \"defaultValue\": \"v1\",\n \"allowedValues\": [\n \"v1\",\n \"v1.5\"\n ]\n },\n {\n \"name\": \"domains\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"A list of domains to search.\",\n \"type\": \"string\"\n },\n {\n \"name\": \"strict\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If true, the websearch will only return results that have a known publication date and are within the lookback period.\",\n \"type\": \"boolean\",\n \"defaultValue\": false\n },\n {\n \"name\": \"offset\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"The number of results to offset for followup queries.\",\n \"type\": \"string\",\n \"defaultValue\": 0\n }\n ],\n \"requestBody\": null,\n \"safety\": \"high-cost\"\n },\n {\n \"operationId\": \"search_wiki\",\n \"tag\": \"wiki\",\n \"command\": \"search-wiki\",\n \"method\": \"GET\",\n \"path\": \"/v1/wiki/search\",\n \"summary\": \"Search for Wikipedia context with natural language\",\n \"description\": \"Search on Wikipedia content with natural language. Find exactly relevant chunks,\\nwith contextual neighbor chunks, and the full articles they came from.\",\n \"parameters\": [\n {\n \"name\": \"query\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Natural language query that can be any phrase, keyword, question, or paragraph. \",\n \"type\": \"string\",\n \"defaultValue\": \"\"\n },\n {\n \"name\": \"neighbor_chunks\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of neighbor chunks to attach and return. If 0, then no neighbor chunks will be returned. \",\n \"type\": \"string\",\n \"defaultValue\": 1\n },\n {\n \"name\": \"n_documents\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Number of documents to return. If 0, then no documents will be returned. \",\n \"type\": \"string\",\n \"defaultValue\": 5\n },\n {\n \"name\": \"full_articles\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If true, then full articles will be returned. If false, then only chunks and their neighbors will be returned. Beware that returning full articles increases data size which increases token usage downstream.\",\n \"type\": \"string\",\n \"defaultValue\": false\n },\n {\n \"name\": \"hybrid_search\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If true, then hybrid search will be used. If false, then only vector search will be used. \",\n \"type\": \"string\",\n \"defaultValue\": false\n },\n {\n \"name\": \"string_guarantee\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"List of strings that must be present in the results. If empty, then no string guarantee will be applied. \",\n \"type\": \"string\"\n },\n {\n \"name\": \"diversify\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"Diversity factor for MMR re-ranking. 0.0 means no diversity (pure relevance), 1.0 means full diversity. \",\n \"type\": \"string\",\n \"defaultValue\": 0\n },\n {\n \"name\": \"include_main_section\",\n \"location\": \"query\",\n \"required\": false,\n \"description\": \"If true, then the main section of the article will be included at the start of each chunk's content. If false, then only the chunk content will be returned. Useful because the main section often contains important context. \",\n \"type\": \"string\",\n \"defaultValue\": false\n }\n ],\n \"requestBody\": null,\n \"safety\": \"read-only\"\n }\n ]\n}\n", "import manifestJson from \"../generated/operations.json\" with { type: \"json\" };\nimport { UsageError } from \"./errors.js\";\nimport type { OperationDefinition, OperationManifest } from \"./types.js\";\n\nexport const manifest = manifestJson as OperationManifest;\n\nconst byId = new Map(manifest.operations.map((operation) => [operation.operationId, operation]));\n\nexport function getOperation(operationId: string): OperationDefinition {\n const operation = byId.get(operationId);\n if (!operation) {\n throw new UsageError(`Unknown AskNews operation \"${operationId}\"`);\n }\n return operation;\n}\n\nexport function operationsByTag(): Map<string, OperationDefinition[]> {\n const grouped = new Map<string, OperationDefinition[]>();\n for (const operation of manifest.operations) {\n const operations = grouped.get(operation.tag) ?? [];\n operations.push(operation);\n grouped.set(operation.tag, operations);\n }\n return grouped;\n}\n", "import chalk, { Chalk } from \"chalk\";\nimport Table from \"cli-table3\";\nimport terminalLink from \"terminal-link\";\nimport YAML from \"yaml\";\nimport schemasJson from \"./table-schemas.json\" with { type: \"json\" };\nimport type { OutputFormat } from \"./types.js\";\n\ninterface ColumnSpec {\n label: string;\n fields: string[];\n width?: number;\n max?: number | null;\n format?: string;\n}\ninterface ShapeCondition {\n arrayKey?: string;\n some?: string[];\n every?: string[];\n}\ninterface ShapeSpec {\n name: string;\n when: ShapeCondition[];\n columns: ColumnSpec[];\n}\ninterface TableSchemas {\n arrayKeys: string[];\n defaults: { width: number; max: number };\n table: ShapeSpec[];\n detail: ShapeSpec[];\n}\ninterface ResolvedColumn {\n label: string;\n width: number;\n max: number;\n preformatted: boolean;\n}\ninterface Projection {\n columns: ResolvedColumn[];\n rows: Record<string, unknown>[];\n}\n\nconst schemas = schemasJson as unknown as TableSchemas;\n\nexport interface OutputWriter {\n stdout: NodeJS.WritableStream;\n stderr: NodeJS.WritableStream;\n format: OutputFormat;\n color: boolean;\n}\n\nexport function writeResult(writer: OutputWriter, value: unknown): void {\n const rendered = renderResult(value, writer.format, writer.color);\n writer.stdout.write(rendered.endsWith(\"\\n\") ? rendered : `${rendered}\\n`);\n}\n\nexport function writeDiagnostic(writer: OutputWriter, message: string): void {\n writer.stderr.write(message.endsWith(\"\\n\") ? message : `${message}\\n`);\n}\n\nexport function renderResult(value: unknown, format: OutputFormat, color = false): string {\n switch (format) {\n case \"json\":\n return JSON.stringify(value, null, 2);\n case \"jsonl\":\n return toJsonLines(value);\n case \"yaml\":\n return YAML.stringify(value).trimEnd();\n case \"table\":\n return renderTabular(value, color);\n case \"human\":\n return renderHuman(value, color);\n }\n}\n\nfunction toJsonLines(value: unknown): string {\n const records = Array.isArray(value) ? value : [value];\n return records.map((record) => JSON.stringify(record)).join(\"\\n\");\n}\n\nfunction renderHuman(value: unknown, color: boolean): string {\n const c = color ? chalk : new Chalk({ level: 0 });\n if (value === null || value === undefined) return c.dim(\"No data\");\n if (typeof value !== \"object\") return String(value);\n if (Array.isArray(value)) return renderRows(value, color);\n\n const record = value as Record<string, unknown>;\n const preferredArray = schemas.arrayKeys.find((key) => Array.isArray(record[key]));\n if (preferredArray) {\n const metadata = Object.entries(record)\n .filter(\n ([key, item]) =>\n key !== preferredArray &&\n item !== null &&\n item !== undefined &&\n item !== \"\" &&\n !isOpaqueMetadata(key, item) &&\n (isScalar(item) || [\"usage\", \"pagination\"].includes(key)),\n )\n .map(([key, item]) => `${c.bold(humanize(key))}: ${summarize(item, 100)}`)\n .join(\" \");\n const body = renderRows(record[preferredArray] as unknown[], color, preferredArray);\n return metadata ? `${metadata}\\n\\n${body}` : body;\n }\n const detail = matchShape(schemas.detail, undefined, [record]);\n if (detail) {\n return detail.columns\n .flatMap((column) => {\n const item = firstValue(record, column.fields);\n return item === undefined\n ? []\n : [`${c.bold(column.label)}: ${summarize(formatColumn(column, item))}`];\n })\n .join(\"\\n\");\n }\n return Object.entries(record)\n .map(([key, item]) => `${c.bold(humanize(key))}: ${summarize(item)}`)\n .join(\"\\n\");\n}\n\nfunction renderTabular(value: unknown, color: boolean): string {\n if (Array.isArray(value)) return renderRows(value, color);\n if (!value || typeof value !== \"object\") return renderHuman(value, color);\n const record = value as Record<string, unknown>;\n const arrayKey = schemas.arrayKeys.find((key) => Array.isArray(record[key]));\n return arrayKey\n ? renderRows(record[arrayKey] as unknown[], color, arrayKey)\n : renderHuman(value, color);\n}\n\nfunction renderRows(values: unknown[], color: boolean, kind?: string): string {\n if (values.length === 0) return color ? chalk.dim(\"No results\") : \"No results\";\n if (!values.every(isRecord)) {\n return values.map((value, index) => `${index + 1}. ${summarize(value, 160)}`).join(\"\\n\");\n }\n return renderTable(projectRecords(values, kind), color);\n}\n\nfunction renderTable(projection: Projection, color: boolean): string {\n const columns = projection.columns.slice(0, 7);\n const table = new Table({\n head: columns.map((column) => column.label),\n wordWrap: true,\n colWidths: fitWidths(columns),\n style: {\n border: color ? [\"grey\"] : [],\n head: color ? [\"cyan\"] : [],\n compact: false,\n },\n });\n for (const row of projection.rows) {\n table.push(\n columns.map((column) =>\n column.preformatted\n ? String(row[column.label] ?? \"\")\n : summarize(row[column.label], column.max),\n ),\n );\n }\n return table.toString();\n}\n\n// Shrink column widths so the rendered table never exceeds the terminal width. An over-wide table\n// wraps in the terminal, which looks like broken borders and blank lines between rows; fitting keeps\n// it dense and intact. Only applies on a real TTY \u2014 when output is piped there is no fixed width to\n// honor, so the configured widths are left untouched. Each column keeps a floor wide enough for its\n// header (so labels are not truncated when there is room), and the remaining budget is shared in\n// proportion to each column's slack, so greedy columns (e.g. URL) give back the most space.\nfunction fitWidths(columns: ResolvedColumn[]): number[] {\n const minWidth = 8;\n const widths = columns.map((column) => column.width);\n const available = process.stdout.columns ?? 0;\n const budget = available - (columns.length + 1);\n if (available <= 0 || widths.reduce((sum, width) => sum + width, 0) <= budget) return widths;\n const floors = columns.map((column) =>\n column.preformatted\n ? Math.min(column.width, 22)\n : Math.min(column.width, Math.max(minWidth, column.label.length + 2)),\n );\n const floorSum = floors.reduce((sum, width) => sum + width, 0);\n if (floorSum >= budget) return scaleToBudget(floors, budget, minWidth);\n const slack = widths.map((width, index) => width - (floors[index] ?? minWidth));\n const slackSum = slack.reduce((sum, value) => sum + value, 0) || 1;\n const extra = budget - floorSum;\n return columns.map(\n (_column, index) =>\n (floors[index] ?? minWidth) + Math.floor(((slack[index] ?? 0) / slackSum) * extra),\n );\n}\n\n// Last-resort proportional scale when even header-sized floors do not fit the terminal.\nfunction scaleToBudget(widths: number[], budget: number, minWidth: number): number[] {\n const total = widths.reduce((sum, width) => sum + width, 0) || 1;\n return widths.map((width) => Math.max(minWidth, Math.floor((width / total) * budget)));\n}\n\nfunction projectRecords(records: Record<string, unknown>[], kind?: string): Projection {\n const shape = matchShape(schemas.table, kind, records);\n if (shape) {\n const visible = shape.columns.filter((column) =>\n records.some((record) => firstValue(record, column.fields) !== undefined),\n );\n return {\n columns: visible.map(resolveColumn),\n rows: records.map((record) =>\n Object.fromEntries(\n visible.map((column) => [\n column.label,\n formatColumn(column, firstValue(record, column.fields)),\n ]),\n ),\n ),\n };\n }\n return fallbackProjection(records);\n}\n\nfunction resolveColumn(column: ColumnSpec): ResolvedColumn {\n return {\n label: column.label,\n width: column.width ?? schemas.defaults.width,\n max: column.max === null ? Number.POSITIVE_INFINITY : (column.max ?? schemas.defaults.max),\n preformatted: column.format === \"url\",\n };\n}\n\n// Generic projection for response shapes not described in table-schemas.json: surface the most\n// useful scalar fields by name and keep the table readable.\nfunction fallbackProjection(records: Record<string, unknown>[]): Projection {\n const priority = [\n \"title\",\n \"headline\",\n \"name\",\n \"subject\",\n \"query\",\n \"summary\",\n \"description\",\n \"content\",\n \"reasoning\",\n \"report\",\n \"status\",\n \"model\",\n \"type\",\n \"source_id\",\n \"source\",\n \"classification\",\n \"categories\",\n \"country\",\n \"published_at\",\n \"pub_date\",\n \"date\",\n \"created_at\",\n \"updated_at\",\n \"active\",\n \"count\",\n \"hit_count\",\n \"uuid\",\n \"id\",\n \"article_id\",\n \"story_id\",\n \"url\",\n ];\n const keys = [\n ...priority.filter((key) => records.some((record) => record[key] !== undefined)),\n ...records.flatMap(Object.keys),\n ]\n .filter((key, index, all) => all.indexOf(key) === index)\n .slice(0, 7);\n return {\n columns: keys.map((key) => {\n const label = humanize(key);\n return {\n label,\n width: fallbackWidth(label),\n max: label === \"Summary\" ? Number.POSITIVE_INFINITY : schemas.defaults.max,\n preformatted: false,\n };\n }),\n rows: records.map((record) =>\n Object.fromEntries(keys.map((key) => [humanize(key), record[key] ?? \"\"])),\n ),\n };\n}\n\nfunction matchShape(\n shapes: ShapeSpec[],\n kind: string | undefined,\n records: Record<string, unknown>[],\n): ShapeSpec | undefined {\n return shapes.find((shape) =>\n shape.when.some((condition) => conditionMatches(condition, kind, records)),\n );\n}\n\nfunction conditionMatches(\n condition: ShapeCondition,\n kind: string | undefined,\n records: Record<string, unknown>[],\n): boolean {\n if (condition.arrayKey !== undefined) return kind === condition.arrayKey;\n if (condition.some) {\n return records.some((record) => condition.some?.every((field) => field in record));\n }\n if (condition.every) {\n return (\n records.length > 0 &&\n records.every((record) => condition.every?.every((field) => field in record))\n );\n }\n return false;\n}\n\nfunction firstValue(record: Record<string, unknown>, paths: string[]): unknown {\n for (const path of paths) {\n let value: unknown = record;\n for (const segment of path.split(\".\")) {\n if (Array.isArray(value)) {\n value = value[Number(segment)];\n } else if (value && typeof value === \"object\") {\n value = (value as Record<string, unknown>)[segment];\n } else {\n value = undefined;\n break;\n }\n }\n if (value !== undefined && value !== null && value !== \"\") return value;\n }\n return undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction isScalar(value: unknown): boolean {\n return value === null || [\"boolean\", \"number\", \"string\", \"undefined\"].includes(typeof value);\n}\n\nfunction isOpaqueMetadata(key: string, value: unknown): boolean {\n return (\n [\"offset\", \"next_page\", \"previous_page\"].includes(key) &&\n typeof value === \"string\" &&\n /^[0-9a-f]{8}-[0-9a-f-]{27,}$/i.test(value)\n );\n}\n\nfunction summarize(value: unknown, maxLength = 240): string {\n const rendered = Array.isArray(value)\n ? value.map((item) => summarize(item, 40)).join(\", \")\n : isScalar(value)\n ? String(value ?? \"\")\n : compactObject(value);\n const normalized = rendered.replace(/\\*\\*/g, \"\").replace(/\\s+/g, \" \").trim();\n return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}\u2026` : normalized;\n}\n\nfunction compactObject(value: unknown): string {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return String(value ?? \"\");\n return Object.entries(value as Record<string, unknown>)\n .slice(0, 4)\n .map(([key, item]) => `${key}: ${summarize(item, 30)}`)\n .join(\", \");\n}\n\nfunction humanize(value: string): string {\n return value.replaceAll(\"_\", \" \").replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n\nfunction fallbackWidth(column: string): number {\n if (column === \"Title\") return 36;\n if (column === \"Summary\") return 58;\n if (column === \"Name\") return 24;\n if (column === \"Email\") return 32;\n if (column === \"Domain\") return 30;\n if (column === \"Source\") return 18;\n if (column === \"Date\") return 18;\n if (column === \"Category\") return 20;\n return schemas.defaults.width;\n}\n\nfunction formatColumn(column: ColumnSpec, value: unknown): unknown {\n if (value === undefined || value === null) return \"\";\n if (column.format === \"date\") return formatDate(value);\n if (column.format === \"url\") return formatLink(value);\n return value;\n}\n\n// Render a URL as a compact cell showing the bare domain. On terminals that support hyperlinks\n// (OSC 8) the domain is clickable and opens the full URL; elsewhere it stays plain text. Either way\n// the cell is narrow and never breaks a long link mid-string \u2014 the full URL remains available in\n// JSON/YAML output. Non-URL values are passed through unchanged.\nfunction formatLink(value: unknown): string {\n const url = String(value);\n let host: string;\n try {\n host = new URL(url).hostname.replace(/^www\\./, \"\");\n } catch {\n return url;\n }\n return terminalLink(host, url, { fallback: () => host });\n}\n\nfunction formatDate(value: unknown): string {\n const date =\n typeof value === \"number\"\n ? new Date(value * 1000)\n : typeof value === \"string\"\n ? new Date(value)\n : null;\n if (!date || Number.isNaN(date.getTime())) return String(value);\n return date.toISOString().replace(\"T\", \" \").slice(0, 16);\n}\n\nexport function writeStreamEvent(writer: OutputWriter, event: unknown): boolean {\n if (writer.format === \"jsonl\") {\n writer.stdout.write(`${JSON.stringify(event)}\\n`);\n return true;\n }\n if (writer.format !== \"human\") {\n writer.stdout.write(`${renderResult(event, writer.format, writer.color)}\\n`);\n return true;\n }\n const text = streamText(event);\n if (!text) return false;\n writer.stdout.write(text);\n return true;\n}\n\nexport function streamText(event: unknown): string {\n if (typeof event === \"string\") return event;\n if (!event || typeof event !== \"object\") return \"\";\n const record = event as Record<string, unknown>;\n for (const candidate of [\n record.text,\n record.content,\n nested(record, [\"delta\", \"text\"]),\n nested(record, [\"delta\", \"content\"]),\n nested(record, [\"choices\", \"0\", \"delta\", \"content\"]),\n nested(record, [\"content_block\", \"text\"]),\n ]) {\n if (typeof candidate === \"string\") return candidate;\n }\n return \"\";\n}\n\nfunction nested(value: unknown, path: string[]): unknown {\n let current = value;\n for (const segment of path) {\n if (Array.isArray(current)) {\n current = current[Number(segment)];\n } else if (current && typeof current === \"object\") {\n current = (current as Record<string, unknown>)[segment];\n } else {\n return undefined;\n }\n }\n return current;\n}\n", "{\n \"_comment\": \"Single source of truth for human/table output columns per AskNews response shape. Each shape is matched by `when` (OR of conditions: arrayKey === unwrapped key, or records.some/every contain the named fields) and projects `columns` (label + ordered field fallbacks). Order matters: the first matching shape wins, so list the most specific shapes first. `max: null` disables truncation (complete wrapped content); omit `max` for the default. `format: \\\"date\\\"` renders epoch/ISO values as UTC. Edit this file to fix or add an endpoint; the renderer in output.ts is a thin consumer.\",\n \"arrayKeys\": [\n \"articles\",\n \"as_dicts\",\n \"stories\",\n \"models\",\n \"alerts\",\n \"items\",\n \"results\",\n \"documents\",\n \"data\"\n ],\n \"defaults\": { \"width\": 18, \"max\": 100 },\n \"table\": [\n {\n \"name\": \"reddit-thread\",\n \"when\": [{ \"some\": [\"subreddit_name\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\", \"topic\"], \"width\": 36 },\n {\n \"label\": \"Summary\",\n \"fields\": [\"summary\", \"key_takeaways\", \"body\"],\n \"width\": 50,\n \"max\": null\n },\n { \"label\": \"Community\", \"fields\": [\"subreddit_name\"], \"width\": 18 },\n { \"label\": \"Upvotes\", \"fields\": [\"upvotes\"], \"width\": 9 },\n { \"label\": \"Date\", \"fields\": [\"date\"], \"width\": 18, \"format\": \"date\" },\n { \"label\": \"URL\", \"fields\": [\"url\"], \"width\": 24, \"format\": \"url\" }\n ]\n },\n {\n \"name\": \"web-search\",\n \"when\": [{ \"some\": [\"raw_text\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\"], \"width\": 32 },\n { \"label\": \"Published\", \"fields\": [\"published\"], \"width\": 18, \"format\": \"date\" },\n { \"label\": \"Key Points\", \"fields\": [\"key_points\"], \"width\": 40, \"max\": null },\n { \"label\": \"Raw Text\", \"fields\": [\"raw_text\"], \"width\": 40, \"max\": 2000 },\n { \"label\": \"URL\", \"fields\": [\"url\"], \"width\": 24, \"format\": \"url\" }\n ]\n },\n {\n \"name\": \"wiki-document\",\n \"when\": [{ \"arrayKey\": \"documents\" }, { \"some\": [\"content\", \"categories\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\"], \"width\": 32 },\n { \"label\": \"Content\", \"fields\": [\"content\"], \"width\": 58, \"max\": null },\n { \"label\": \"Categories\", \"fields\": [\"categories\"], \"width\": 20 },\n { \"label\": \"Date\", \"fields\": [\"timestamp\"], \"width\": 18, \"format\": \"date\" },\n { \"label\": \"URL\", \"fields\": [\"url\"], \"width\": 24, \"format\": \"url\" }\n ]\n },\n {\n \"name\": \"article\",\n \"when\": [{ \"arrayKey\": \"articles\" }, { \"some\": [\"article_id\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\", \"eng_title\", \"headline\"], \"width\": 36 },\n { \"label\": \"Summary\", \"fields\": [\"summary\", \"key_points\"], \"width\": 50, \"max\": null },\n { \"label\": \"Source\", \"fields\": [\"source_id\", \"source_name\", \"domain_url\"], \"width\": 16 },\n {\n \"label\": \"Date\",\n \"fields\": [\"pub_date\", \"published_at\", \"crawl_date\"],\n \"width\": 18,\n \"format\": \"date\"\n },\n { \"label\": \"URL\", \"fields\": [\"article_url\"], \"width\": 24, \"format\": \"url\" }\n ]\n },\n {\n \"name\": \"story\",\n \"when\": [{ \"arrayKey\": \"stories\" }, { \"some\": [\"current_update_uuid\"] }],\n \"columns\": [\n {\n \"label\": \"Title\",\n \"fields\": [\"updates.0.headline\", \"headline\", \"title\", \"story_title\"],\n \"width\": 36\n },\n {\n \"label\": \"Summary\",\n \"fields\": [\"updates.0.story\", \"story\", \"updates.0.key_takeaways\"],\n \"width\": 58,\n \"max\": null\n },\n {\n \"label\": \"Date\",\n \"fields\": [\"updates.0.story_update_ts\", \"story_update_ts\", \"updated_ts\"],\n \"width\": 18,\n \"format\": \"date\"\n },\n { \"label\": \"Category\", \"fields\": [\"updates.0.categories\", \"categories\"], \"width\": 20 }\n ]\n },\n {\n \"name\": \"deepnews-model\",\n \"when\": [{ \"arrayKey\": \"models\" }, { \"every\": [\"model\", \"type\"] }],\n \"columns\": [\n { \"label\": \"Model\", \"fields\": [\"model\"], \"width\": 32 },\n { \"label\": \"Tier\", \"fields\": [\"type\"], \"width\": 16 }\n ]\n },\n {\n \"name\": \"newsletter\",\n \"when\": [{ \"some\": [\"name\", \"cron\", \"sender\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"name\", \"subject\"], \"width\": 30 },\n { \"label\": \"Summary\", \"fields\": [\"query\", \"subject\"], \"width\": 50, \"max\": null },\n { \"label\": \"Schedule\", \"fields\": [\"cron\"], \"width\": 16 },\n { \"label\": \"Sender\", \"fields\": [\"sender\"], \"width\": 18 },\n { \"label\": \"Active\", \"fields\": [\"active\"], \"width\": 8 }\n ]\n },\n {\n \"name\": \"alert\",\n \"when\": [{ \"arrayKey\": \"alerts\" }, { \"some\": [\"cron\", \"active\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\", \"query\"], \"width\": 36 },\n { \"label\": \"Summary\", \"fields\": [\"query\"], \"width\": 50, \"max\": null },\n { \"label\": \"Schedule\", \"fields\": [\"cron\"], \"width\": 16 },\n { \"label\": \"Active\", \"fields\": [\"active\"], \"width\": 8 },\n { \"label\": \"Type\", \"fields\": [\"alert_type\"], \"width\": 16 }\n ]\n },\n {\n \"name\": \"deepnews-log\",\n \"when\": [{ \"some\": [\"reasoning\", \"created_at\"] }],\n \"columns\": [\n { \"label\": \"Date\", \"fields\": [\"created_at\"], \"width\": 18, \"format\": \"date\" },\n { \"label\": \"Summary\", \"fields\": [\"reasoning\", \"report\"], \"width\": 58, \"max\": null },\n { \"label\": \"Report\", \"fields\": [\"report_url\"], \"width\": 30 }\n ]\n },\n {\n \"name\": \"subscriber\",\n \"when\": [{ \"some\": [\"email\", \"unsubscribed\"] }],\n \"columns\": [\n { \"label\": \"Name\", \"fields\": [\"name\", \"first_name\"], \"width\": 24 },\n { \"label\": \"Email\", \"fields\": [\"email\"], \"width\": 32 },\n { \"label\": \"Status\", \"fields\": [\"unsubscribed\"], \"width\": 12 },\n { \"label\": \"Date\", \"fields\": [\"created_at\"], \"width\": 18, \"format\": \"date\" }\n ]\n },\n {\n \"name\": \"domain\",\n \"when\": [{ \"some\": [\"owner\", \"publisher\", \"is_tollbit\"] }],\n \"columns\": [\n { \"label\": \"Domain\", \"fields\": [\"name\"], \"width\": 30 },\n { \"label\": \"Owner\", \"fields\": [\"owner\"], \"width\": 20 },\n { \"label\": \"Publisher\", \"fields\": [\"publisher\"], \"width\": 20 },\n { \"label\": \"Tollbit\", \"fields\": [\"is_tollbit\"], \"width\": 10 },\n { \"label\": \"Date\", \"fields\": [\"updated_at\", \"created_at\"], \"width\": 18, \"format\": \"date\" }\n ]\n },\n {\n \"name\": \"domain-hits\",\n \"when\": [{ \"every\": [\"domain\", \"hit_count\"] }],\n \"columns\": [\n { \"label\": \"Domain\", \"fields\": [\"domain\"], \"width\": 30 },\n { \"label\": \"Hits\", \"fields\": [\"hit_count\"], \"width\": 12 }\n ]\n },\n {\n \"name\": \"timeseries-bucket\",\n \"when\": [{ \"every\": [\"start\", \"end\", \"count\"] }],\n \"columns\": [\n { \"label\": \"Start\", \"fields\": [\"start\"], \"width\": 18 },\n { \"label\": \"End\", \"fields\": [\"end\"], \"width\": 18 },\n { \"label\": \"Count\", \"fields\": [\"count\"], \"width\": 12 }\n ]\n },\n {\n \"name\": \"source-report\",\n \"when\": [{ \"every\": [\"bson_date\", \"n_selected\"] }],\n \"columns\": [\n { \"label\": \"Date\", \"fields\": [\"bson_date\"], \"width\": 18, \"format\": \"date\" },\n { \"label\": \"Selected\", \"fields\": [\"n_selected\"], \"width\": 12 },\n { \"label\": \"Bucket\", \"fields\": [\"n_bucket\"], \"width\": 12 },\n { \"label\": \"Selected %\", \"fields\": [\"selected_pct\"], \"width\": 12 }\n ]\n }\n ],\n \"detail\": [\n {\n \"name\": \"article\",\n \"when\": [{ \"some\": [\"article_id\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\", \"eng_title\"] },\n { \"label\": \"Summary\", \"fields\": [\"summary\", \"key_points\"] },\n { \"label\": \"Source\", \"fields\": [\"source_id\", \"domain_url\"] },\n { \"label\": \"Date\", \"fields\": [\"pub_date\", \"crawl_date\"], \"format\": \"date\" },\n { \"label\": \"Category\", \"fields\": [\"classification\"] },\n { \"label\": \"Country\", \"fields\": [\"country\"] },\n { \"label\": \"URL\", \"fields\": [\"article_url\"] },\n { \"label\": \"ID\", \"fields\": [\"article_id\"] }\n ]\n },\n {\n \"name\": \"story\",\n \"when\": [{ \"some\": [\"current_update_uuid\", \"updates\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"updates.0.headline\", \"headline\"] },\n { \"label\": \"Summary\", \"fields\": [\"updates.0.story\", \"story\", \"updates.0.key_takeaways\"] },\n {\n \"label\": \"Date\",\n \"fields\": [\"updates.0.story_update_ts\", \"updated_ts\"],\n \"format\": \"date\"\n },\n { \"label\": \"Category\", \"fields\": [\"updates.0.categories\", \"categories\"] },\n { \"label\": \"Updates\", \"fields\": [\"n_updates\"] },\n { \"label\": \"ID\", \"fields\": [\"uuid\", \"story_id\"] }\n ]\n },\n {\n \"name\": \"newsletter\",\n \"when\": [{ \"some\": [\"cron\", \"active\", \"sender\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"name\", \"subject\"] },\n { \"label\": \"Summary\", \"fields\": [\"query\", \"subject\"] },\n { \"label\": \"Schedule\", \"fields\": [\"cron\"] },\n { \"label\": \"Sender\", \"fields\": [\"sender\"] },\n { \"label\": \"Active\", \"fields\": [\"active\"] },\n { \"label\": \"ID\", \"fields\": [\"id\"] }\n ]\n },\n {\n \"name\": \"alert\",\n \"when\": [{ \"some\": [\"cron\", \"active\"] }],\n \"columns\": [\n { \"label\": \"Title\", \"fields\": [\"title\", \"query\"] },\n { \"label\": \"Summary\", \"fields\": [\"query\"] },\n { \"label\": \"Schedule\", \"fields\": [\"cron\"] },\n { \"label\": \"Active\", \"fields\": [\"active\"] },\n { \"label\": \"Type\", \"fields\": [\"alert_type\"] },\n { \"label\": \"ID\", \"fields\": [\"id\", \"alert_id\"] }\n ]\n },\n {\n \"name\": \"subscriber\",\n \"when\": [{ \"some\": [\"email\", \"unsubscribed\"] }],\n \"columns\": [\n { \"label\": \"Name\", \"fields\": [\"name\", \"first_name\"] },\n { \"label\": \"Email\", \"fields\": [\"email\"] },\n { \"label\": \"Unsubscribed\", \"fields\": [\"unsubscribed\"] },\n { \"label\": \"Date\", \"fields\": [\"created_at\"], \"format\": \"date\" },\n { \"label\": \"ID\", \"fields\": [\"id\"] }\n ]\n },\n {\n \"name\": \"domain\",\n \"when\": [{ \"some\": [\"owner\", \"publisher\", \"is_tollbit\"] }],\n \"columns\": [\n { \"label\": \"Domain\", \"fields\": [\"name\"] },\n { \"label\": \"Owner\", \"fields\": [\"owner\"] },\n { \"label\": \"Publisher\", \"fields\": [\"publisher\"] },\n { \"label\": \"Tollbit\", \"fields\": [\"is_tollbit\"] },\n { \"label\": \"Date\", \"fields\": [\"updated_at\", \"created_at\"] },\n { \"label\": \"ID\", \"fields\": [\"id\"] }\n ]\n }\n ]\n}\n", "import { type Command, Option } from \"commander\";\nimport { UsageError } from \"./errors.js\";\nimport type { OperationDefinition, OperationParameter } from \"./types.js\";\n\nexport interface JsonSchema {\n type?: string;\n title?: string;\n description?: string;\n default?: unknown;\n enum?: unknown[];\n example?: unknown;\n minimum?: number;\n maximum?: number;\n format?: string;\n items?: JsonSchema;\n properties?: Record<string, JsonSchema>;\n required?: string[];\n anyOf?: JsonSchema[];\n oneOf?: JsonSchema[];\n additionalProperties?: boolean | JsonSchema;\n}\n\nexport interface RegisteredOption {\n apiName: string;\n attributeName: string;\n schema: JsonSchema;\n}\n\nexport function registerParameterOptions(\n command: Command,\n operation: OperationDefinition,\n excluded = new Set<string>(),\n): RegisteredOption[] {\n return operation.parameters\n .filter((parameter) => !excluded.has(parameter.name))\n .map((parameter) => {\n const schema = parameterSchema(parameter);\n return registerSchemaOption(command, parameter.name, schema, {\n required: parameter.required,\n location: parameter.location,\n });\n });\n}\n\nexport function registerBodyOptions(\n command: Command,\n operation: OperationDefinition,\n excluded = new Set<string>(),\n): RegisteredOption[] {\n const schema = operation.requestBody?.schema as JsonSchema | null;\n if (!schema?.properties) return [];\n return Object.entries(schema.properties)\n .filter(([name]) => !excluded.has(name))\n .map(([name, property]) =>\n registerSchemaOption(command, name, property, {\n required: schema.required?.includes(name) ?? false,\n location: \"body\",\n }),\n );\n}\n\nexport function readRegisteredOptions(\n command: Command,\n options: RegisteredOption[],\n): Record<string, unknown> {\n return Object.fromEntries(\n options.flatMap((option) => {\n const raw = command.getOptionValue(option.attributeName);\n return raw === undefined ? [] : [[option.apiName, parseSchemaValue(raw, option.schema)]];\n }),\n );\n}\n\nexport function formatBodyFields(operation: OperationDefinition): string {\n const schema = operation.requestBody?.schema as JsonSchema | null;\n if (!schema?.properties) return \" None.\";\n return Object.entries(schema.properties)\n .map(([name, property]) => {\n const details = schemaDetails(property, schema.required?.includes(name) ?? false);\n const description = property.description\n ? `\\n ${wrap(property.description, 72, 6)}`\n : \"\";\n return ` --${optionName(name)} <value>\\n ${details}${description}`;\n })\n .join(\"\\n\");\n}\n\nexport function schemaDetails(schema: JsonSchema, required: boolean, location?: string): string {\n return [\n location,\n schemaType(schema),\n required ? \"required\" : \"optional\",\n schema.format ? `format: ${schema.format}` : undefined,\n schema.minimum !== undefined ? `min: ${schema.minimum}` : undefined,\n schema.maximum !== undefined ? `max: ${schema.maximum}` : undefined,\n schema.default !== undefined ? `default: ${JSON.stringify(schema.default)}` : undefined,\n enumValues(schema).length > 0 ? `allowed: ${enumValues(schema).join(\"|\")}` : undefined,\n ]\n .filter(Boolean)\n .join(\", \");\n}\n\nexport function enumValues(schema: JsonSchema): string[] {\n if (schema.enum) return schema.enum.map(String);\n const variants = schema.oneOf ?? schema.anyOf ?? [];\n return variants.flatMap((variant) => variant.enum?.map(String) ?? []);\n}\n\nexport function schemaType(schema: JsonSchema): string {\n if (schema.type === \"array\") return `array<${schemaType(schema.items ?? {})}>`;\n if (schema.type) return schema.type;\n const variants = schema.oneOf ?? schema.anyOf ?? [];\n const types = [...new Set(variants.map((variant) => variant.type).filter(Boolean))];\n return types.length > 0 ? types.join(\"|\") : \"object\";\n}\n\nexport function optionName(name: string): string {\n return name.replaceAll(\"_\", \"-\");\n}\n\nfunction registerSchemaOption(\n command: Command,\n apiName: string,\n schema: JsonSchema,\n context: { required: boolean; location: string },\n): RegisteredOption {\n const name = optionName(apiName);\n const boolean = schemaType(schema).split(\"|\").includes(\"boolean\");\n const array = acceptsArray(schema);\n const option = new Option(\n `--${name} ${boolean ? \"[boolean]\" : \"<value>\"}`,\n schema.description ?? `${context.location} ${schemaType(schema)} value`,\n );\n if (array) {\n option.argParser(collect);\n }\n const allowed = enumValues(schema);\n const choices = allowed.length > 0 && !array && !boolean;\n if (choices) option.choices(allowed);\n option.helpGroup(\"API options:\");\n const details = choices\n ? schemaDetails(schema, context.required, context.location).replace(/, allowed: [^,]+$/, \"\")\n : schemaDetails(schema, context.required, context.location);\n if (schema.default !== undefined) {\n option.defaultValueDescription = JSON.stringify(schema.default);\n }\n option.description = `${option.description} [${details}]`;\n command.addOption(option);\n return { apiName, attributeName: option.attributeName(), schema };\n}\n\nfunction parameterSchema(parameter: OperationParameter): JsonSchema {\n return {\n type: parameter.type,\n ...(parameter.itemType ? { items: { type: parameter.itemType } } : {}),\n ...(parameter.description ? { description: parameter.description } : {}),\n ...(parameter.defaultValue !== undefined ? { default: parameter.defaultValue } : {}),\n ...(parameter.allowedValues ? { enum: parameter.allowedValues } : {}),\n ...(parameter.format ? { format: parameter.format } : {}),\n ...(parameter.minimum !== undefined ? { minimum: parameter.minimum } : {}),\n ...(parameter.maximum !== undefined ? { maximum: parameter.maximum } : {}),\n };\n}\n\nfunction collect(value: string, previous: string[] | undefined): string[] {\n return [...(previous ?? []), value];\n}\n\nfunction parseSchemaValue(raw: unknown, schema: JsonSchema): unknown {\n if (acceptsArray(schema)) {\n const values = Array.isArray(raw) ? raw : [raw];\n const parsed = values.flatMap((value) => {\n if (typeof value !== \"string\") return [value];\n const item = parseJson(value);\n if (Array.isArray(item)) return item;\n return value.includes(\",\") ? value.split(\",\").map((part) => part.trim()) : [item];\n });\n if (values.length === 1 && parsed.length === 1 && acceptsNonArray(schema)) return parsed[0];\n return parsed;\n }\n if (typeof raw !== \"string\") return raw;\n if (schema.type === \"boolean\") {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n throw new UsageError(`--${optionName(schema.title ?? \"value\")} expects true or false`);\n }\n if (schema.type === \"integer\" || schema.type === \"number\") {\n const number = Number(raw);\n if (!Number.isFinite(number) || (schema.type === \"integer\" && !Number.isInteger(number))) {\n throw new UsageError(`Expected ${schema.type}, received \"${raw}\"`);\n }\n if (schema.minimum !== undefined && number < schema.minimum) {\n throw new UsageError(`Value must be at least ${schema.minimum}`);\n }\n if (schema.maximum !== undefined && number > schema.maximum) {\n throw new UsageError(`Value must be at most ${schema.maximum}`);\n }\n return number;\n }\n const types = new Set((schema.oneOf ?? schema.anyOf ?? []).map((variant) => variant.type));\n if (types.has(\"boolean\") && (raw === \"true\" || raw === \"false\")) return raw === \"true\";\n if (types.has(\"integer\") || types.has(\"number\")) {\n const number = Number(raw);\n if (Number.isFinite(number)) return number;\n }\n if (schema.type === \"object\" || types.has(\"object\") || raw.startsWith(\"{\")) {\n const parsed = parseJson(raw);\n if (parsed === raw) throw new UsageError(\"Object options must be valid JSON\");\n return parsed;\n }\n if (types.has(\"array\") || raw.startsWith(\"[\")) return parseJson(raw);\n return raw;\n}\n\nfunction acceptsArray(schema: JsonSchema): boolean {\n return (\n schema.type === \"array\" ||\n (schema.oneOf ?? schema.anyOf ?? []).some((variant) => variant.type === \"array\")\n );\n}\n\nfunction acceptsNonArray(schema: JsonSchema): boolean {\n if (schema.type && schema.type !== \"array\" && schema.type !== \"null\") return true;\n return (schema.oneOf ?? schema.anyOf ?? []).some(\n (variant) => variant.type !== \"array\" && variant.type !== \"null\",\n );\n}\n\nfunction parseJson(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction wrap(value: string, width: number, indent: number): string {\n const words = value.replace(/\\s+/g, \" \").trim().split(\" \");\n const lines: string[] = [];\n let line = \"\";\n for (const word of words) {\n if (line && `${line} ${word}`.length > width) {\n lines.push(line);\n line = word;\n } else {\n line = line ? `${line} ${word}` : word;\n }\n }\n if (line) lines.push(line);\n return lines.join(`\\n${\" \".repeat(indent)}`);\n}\n", "import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { z } from \"zod\";\nimport { OUTPUT_FORMATS, type OutputFormat } from \"./types.js\";\n\nconst ConfigSchema = z.object({\n apiUrl: z.string().url(),\n authUrl: z.string().url(),\n oauthClientId: z.string().min(1),\n output: z.enum(OUTPUT_FORMATS),\n configDir: z.string().min(1),\n apiKey: z.string().min(1).optional(),\n timeoutMs: z.number().int().positive(),\n noColor: z.boolean(),\n});\n\nexport interface GlobalOptions {\n apiUrl?: string;\n authUrl?: string;\n oauthClientId?: string;\n output?: OutputFormat;\n json?: boolean;\n apiKey?: string;\n timeout?: string;\n noColor?: boolean;\n}\n\nexport type CliConfig = z.infer<typeof ConfigSchema>;\n\nfunction envBoolean(value: string | undefined): boolean {\n return value === \"1\" || value?.toLowerCase() === \"true\";\n}\n\nexport function defaultConfigDir(platform = process.platform): string {\n if (process.env.ASKNEWS_CONFIG_DIR) {\n return process.env.ASKNEWS_CONFIG_DIR;\n }\n if (platform === \"win32\") {\n return join(process.env.APPDATA ?? join(homedir(), \"AppData\", \"Roaming\"), \"asknews\");\n }\n return join(process.env.XDG_CONFIG_HOME ?? join(homedir(), \".config\"), \"asknews\");\n}\n\nexport function resolveConfig(options: GlobalOptions = {}): CliConfig {\n const output = options.json\n ? \"json\"\n : (options.output ?? process.env.ASKNEWS_OUTPUT ?? (process.stdout.isTTY ? \"human\" : \"json\"));\n\n return ConfigSchema.parse({\n apiUrl: stripTrailingSlash(\n options.apiUrl ?? process.env.ASKNEWS_API_URL ?? \"https://api.asknews.app/v1\",\n ),\n authUrl: stripTrailingSlash(\n options.authUrl ?? process.env.ASKNEWS_AUTH_URL ?? \"https://auth.asknews.app\",\n ),\n oauthClientId: options.oauthClientId ?? process.env.ASKNEWS_OAUTH_CLIENT_ID ?? \"asknews-cli\",\n output,\n configDir: defaultConfigDir(),\n apiKey: options.apiKey ?? process.env.ASKNEWS_API_KEY,\n timeoutMs: Number(options.timeout ?? process.env.ASKNEWS_TIMEOUT_MS ?? \"60000\"),\n noColor:\n Boolean(options.noColor) ||\n envBoolean(process.env.NO_COLOR) ||\n envBoolean(process.env.ASKNEWS_PLAIN_OUTPUT),\n });\n}\n\nexport function stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n", "export const OUTPUT_FORMATS = [\"human\", \"table\", \"json\", \"jsonl\", \"yaml\"] as const;\n\nexport type OutputFormat = (typeof OUTPUT_FORMATS)[number];\n\nexport type HttpMethod = \"DELETE\" | \"GET\" | \"PATCH\" | \"POST\" | \"PUT\";\n\n// Refreshes the stored OAuth access token and returns the new token, or null when no refresh is\n// possible. Used by the HTTP layer to retry once after a 401 (token revoked before its expiry).\nexport type TokenRefresher = () => Promise<string | null>;\n\nexport type ParameterLocation = \"header\" | \"path\" | \"query\";\n\nexport interface OperationParameter {\n name: string;\n location: ParameterLocation;\n required: boolean;\n description?: string;\n type: \"array\" | \"boolean\" | \"integer\" | \"number\" | \"object\" | \"string\";\n itemType?: \"boolean\" | \"integer\" | \"number\" | \"object\" | \"string\";\n defaultValue?: unknown;\n allowedValues?: unknown[];\n format?: string;\n minimum?: number;\n maximum?: number;\n}\n\nexport interface OperationDefinition {\n operationId: string;\n tag: string;\n command: string;\n method: HttpMethod;\n path: string;\n summary: string;\n description?: string;\n parameters: OperationParameter[];\n requestBody: {\n required: boolean;\n contentTypes: string[];\n schema: unknown;\n } | null;\n safety: \"high-cost\" | \"mutating\" | \"read-only\";\n}\n\nexport interface OperationManifest {\n generatedAt: string;\n schemaVersion: string;\n schemaUrl: string;\n operations: OperationDefinition[];\n}\n\nexport interface RequestInput {\n parameters?: Record<string, unknown>;\n body?: unknown;\n headers?: Record<string, string>;\n}\n\nexport interface ApiResponse<T = unknown> {\n data: T;\n headers: Headers;\n status: number;\n}\n", "import type { Command } from \"commander\";\nimport { type CliConfig, type GlobalOptions, resolveConfig } from \"../lib/config.js\";\nimport { type OutputWriter, writeResult } from \"../lib/output.js\";\n\nexport interface CommandContext {\n config: CliConfig;\n writer: OutputWriter;\n}\n\nexport function contextFrom(command: Command): CommandContext {\n const options = command.optsWithGlobals<GlobalOptions>();\n const config = resolveConfig(options);\n return {\n config,\n writer: {\n stdout: process.stdout,\n stderr: process.stderr,\n format: config.output,\n color: !config.noColor && Boolean(process.stdout.isTTY),\n },\n };\n}\n\nexport function outputResponse(command: Command, data: unknown): void {\n writeResult(contextFrom(command).writer, data);\n}\n", "import * as p from \"@clack/prompts\";\nimport type { Command } from \"commander\";\nimport { deviceLogin } from \"../auth/oauth.js\";\nimport { resolveCredential } from \"../auth/resolve.js\";\nimport { CredentialStore } from \"../auth/store.js\";\nimport { executeRawRequest } from \"../lib/http.js\";\nimport { writeDiagnostic, writeResult } from \"../lib/output.js\";\nimport { contextFrom } from \"./context.js\";\n\nexport const DEFAULT_SCOPES = [\n \"openid\",\n \"offline_access\",\n \"news\",\n \"chat\",\n \"stories\",\n \"analytics\",\n \"distribution\",\n \"profile\",\n \"reddit\",\n];\n\nexport function registerAuthCommands(program: Command): void {\n const auth = program.command(\"auth\").description(\"Authenticate the AskNews CLI\");\n\n auth\n .command(\"login\")\n .description(\"Log in with OAuth device flow or an API key\")\n .option(\"--api-key [key]\", \"store an API key instead of using OAuth\")\n .option(\"--no-browser\", \"do not open the verification URL\")\n .option(\"--scope <scope...>\", \"OAuth scopes\", DEFAULT_SCOPES)\n .action(\n async (\n options: { apiKey?: string | boolean; browser: boolean; scope: string[] },\n command,\n ) => {\n const { config, writer } = contextFrom(command);\n const store = new CredentialStore(config.configDir);\n const globalApiKey = (command.optsWithGlobals() as { apiKey?: string }).apiKey;\n if (options.apiKey !== undefined || globalApiKey !== undefined) {\n let apiKey =\n typeof options.apiKey === \"string\"\n ? options.apiKey\n : typeof globalApiKey === \"string\"\n ? globalApiKey\n : undefined;\n if (!apiKey) {\n if (!process.stdin.isTTY) {\n throw new Error(\"Pass --api-key <key> when stdin is not interactive\");\n }\n const answer = await p.password({\n message: \"AskNews API key\",\n validate: (value) => (value ? undefined : \"API key is required\"),\n });\n if (p.isCancel(answer)) {\n process.exitCode = 130;\n return;\n }\n apiKey = answer;\n }\n await store.write({\n type: \"api_key\",\n apiKey,\n createdAt: new Date().toISOString(),\n });\n writeResult(writer, { authenticated: true, method: \"api_key\" });\n return;\n }\n const credential = await deviceLogin(config, {\n openBrowser: options.browser,\n scopes: options.scope,\n onPrompt: ({ verificationUri, userCode, expiresIn }) => {\n writeDiagnostic(writer, `Open ${verificationUri}`);\n writeDiagnostic(writer, `Enter code: ${userCode}`);\n writeDiagnostic(writer, `The code expires in ${Math.ceil(expiresIn / 60)} minutes.`);\n },\n });\n await store.write(credential);\n writeResult(writer, { authenticated: true, method: \"oauth\" });\n },\n );\n\n auth\n .command(\"status\")\n .description(\"Show the active authentication method and verify it against AskNews\")\n .option(\"--offline\", \"inspect local state without an API request\")\n .action(async (options: { offline?: boolean }, command) => {\n const { config, writer } = contextFrom(command);\n const store = new CredentialStore(config.configDir);\n const stored = await store.read();\n if (options.offline) {\n writeResult(writer, {\n authenticated: Boolean(config.apiKey || stored),\n method: config.apiKey ? \"environment\" : (stored?.type ?? null),\n expiresAt: stored?.type === \"oauth\" ? (stored.expiresAt ?? null) : null,\n });\n return;\n }\n const credential = await resolveCredential(config);\n const response = await executeRawRequest(\n config,\n credential.token,\n \"GET\",\n \"/profiles/me\",\n undefined,\n credential.refresh,\n );\n writeResult(writer, {\n authenticated: true,\n method: credential.source,\n profile: response.data,\n });\n });\n\n auth\n .command(\"logout\")\n .description(\"Remove locally stored AskNews credentials\")\n .action(async (_options, command) => {\n const { config, writer } = contextFrom(command);\n const removed = await new CredentialStore(config.configDir).clear();\n writeResult(writer, { authenticated: false, removed });\n });\n}\n", "import type { Command } from \"commander\";\nimport { UsageError } from \"../lib/errors.js\";\nimport { parseBodyInput } from \"../lib/http.js\";\nimport { getOperation } from \"../lib/operations.js\";\nimport {\n readRegisteredOptions,\n registerBodyOptions,\n registerParameterOptions,\n} from \"../lib/schema-options.js\";\nimport { confirmMutation, invokeOperation, invokeStreamingOperation } from \"./api.js\";\n\nexport function registerCuratedCommands(program: Command): void {\n registerNews(program);\n registerStories(program);\n registerResearch(program);\n registerSearch(program);\n registerAlerts(program);\n}\n\nfunction registerNews(program: Command): void {\n const news = program.command(\"news\").description(\"Search and inspect AskNews articles\");\n const search = news\n .command(\"search\")\n .description(\"Search enriched real-time or historical news\")\n .argument(\"[query]\", \"natural-language or keyword query\", \"\")\n .option(\"-n, --limit <number>\", \"alias for --n-articles\", \"10\");\n const options = registerParameterOptions(\n search,\n getOperation(\"search_news\"),\n new Set([\"query\", \"n_articles\"]),\n );\n addUnderlyingHelp(search, \"search_news\");\n search.action(async (query: string, values: { limit: string }, command) => {\n await invokeOperation(command, \"search_news\", {\n ...readRegisteredOptions(command, options),\n query,\n n_articles: Number(values.limit),\n });\n });\n\n const get = news\n .command(\"get\")\n .description(\"Get an article by ID\")\n .argument(\"<article-id>\", \"AskNews article UUID\");\n addUnderlyingHelp(get, \"get_article\");\n get.action(async (articleId: string, _options, command) => {\n await invokeOperation(command, \"get_article\", { article_id: articleId });\n });\n}\n\nfunction registerStories(program: Command): void {\n const stories = program.command(\"stories\").description(\"Search and inspect news stories\");\n const list = stories\n .command(\"list\")\n .description(\"List or search stories\")\n .option(\"-q, --query <query>\", \"story search query\")\n .option(\"-n, --limit <number>\", \"number of stories\", \"10\")\n .option(\"--hours-back <hours>\", \"convenience alias for --start-timestamp\");\n const listOptions = registerParameterOptions(\n list,\n getOperation(\"get_stories\"),\n new Set([\"query\", \"limit\"]),\n );\n addUnderlyingHelp(list, \"get_stories\");\n list.action(\n async (values: { query?: string; limit: string; hoursBack?: string }, command: Command) => {\n const parameters = readRegisteredOptions(command, listOptions);\n if (values.hoursBack && parameters.start_timestamp === undefined) {\n parameters.start_timestamp =\n Math.floor(Date.now() / 1000) - Number(values.hoursBack) * 60 * 60;\n }\n parameters.expand_updates ??= true;\n parameters.max_updates ??= 1;\n parameters.max_articles ??= 0;\n await invokeOperation(command, \"get_stories\", {\n ...parameters,\n limit: Number(values.limit),\n ...(values.query ? { query: values.query } : {}),\n });\n },\n );\n\n const get = stories\n .command(\"get\")\n .description(\"Get a story or story update\")\n .argument(\"<story-id>\", \"story or update UUID\");\n const getOptions = registerParameterOptions(\n get,\n getOperation(\"get_story\"),\n new Set([\"story_id\"]),\n );\n addUnderlyingHelp(get, \"get_story\");\n get.action(async (storyId: string, _options, command) => {\n await invokeOperation(command, \"get_story\", {\n ...readRegisteredOptions(command, getOptions),\n story_id: storyId,\n });\n });\n}\n\nfunction registerResearch(program: Command): void {\n const research = program\n .command(\"research\")\n .description(\"Run DeepNews research\")\n .argument(\"[query]\", \"research task or question\");\n const bodyOptions = registerBodyOptions(\n research,\n getOperation(\"deep_news\"),\n new Set([\"messages\"]),\n );\n addUnderlyingHelp(research, \"deep_news\", [\n \"asknews research models\",\n 'asknews research \"What changed in AI regulation?\" --model claude-sonnet-4-6',\n 'asknews research \"Compare policy reactions\" --sources asknews --sources reddit --stream',\n ]);\n research.action(async (query: string | undefined, _options, command) => {\n if (!query) throw new UsageError(\"Research query is required; see `asknews research --help`\");\n const body: Record<string, unknown> = {\n messages: [{ role: \"user\", content: query }],\n ...readRegisteredOptions(command, bodyOptions),\n };\n if (body.stream === true) {\n await invokeStreamingOperation(command, \"deep_news\", {}, body);\n return;\n }\n await invokeOperation(command, \"deep_news\", {}, body);\n });\n\n research\n .command(\"models\")\n .description(\"List DeepNews models available to the authenticated account\")\n .addHelpText(\n \"after\",\n `\nThe OpenAPI schema lists every accepted model identifier in \\`asknews research --help\\`.\nThis command calls the account-aware model endpoint and shows the currently available tier.\n`,\n )\n .action(async (_options, command) => {\n await invokeOperation(command, \"list_deepnews_models\", {});\n });\n}\n\nfunction registerSearch(program: Command): void {\n const web = program\n .command(\"web\")\n .description(\"Search the live web\")\n .argument(\"<query>\", \"web search query\")\n .option(\"--hours-back <hours>\", \"compatibility alias for --lookback\");\n const webOptions = registerParameterOptions(\n web,\n getOperation(\"live_web_search\"),\n new Set([\"queries\"]),\n );\n addUnderlyingHelp(web, \"live_web_search\");\n web.action(async (query: string, values: { hoursBack?: string }, command) => {\n const parameters = readRegisteredOptions(command, webOptions);\n if (values.hoursBack && parameters.lookback === undefined) {\n parameters.lookback = Number(values.hoursBack);\n }\n await invokeOperation(command, \"live_web_search\", {\n ...parameters,\n queries: [query],\n });\n });\n\n const reddit = program\n .command(\"reddit\")\n .description(\"Search Reddit threads\")\n .argument(\"<query>\", \"Reddit search query\")\n .option(\"-n, --limit <number>\", \"alias for --n-threads\", \"10\");\n const redditOptions = registerParameterOptions(\n reddit,\n getOperation(\"search_reddit\"),\n new Set([\"keywords\", \"n_threads\"]),\n );\n addUnderlyingHelp(reddit, \"search_reddit\");\n reddit.action(async (query: string, values: { limit: string }, command) => {\n await invokeOperation(command, \"search_reddit\", {\n ...readRegisteredOptions(command, redditOptions),\n keywords: [query],\n n_threads: Number(values.limit),\n });\n });\n\n const wiki = program\n .command(\"wiki\")\n .description(\"Search Wikipedia\")\n .argument(\"<query>\", \"Wikipedia search query\")\n .option(\"-n, --limit <number>\", \"alias for --n-documents\", \"10\");\n const wikiOptions = registerParameterOptions(\n wiki,\n getOperation(\"search_wiki\"),\n new Set([\"query\", \"n_documents\"]),\n );\n addUnderlyingHelp(wiki, \"search_wiki\");\n wiki.action(async (query: string, values: { limit: string }, command) => {\n await invokeOperation(command, \"search_wiki\", {\n ...readRegisteredOptions(command, wikiOptions),\n query,\n n_documents: Number(values.limit),\n });\n });\n}\n\nfunction registerAlerts(program: Command): void {\n const alerts = program.command(\"alerts\").description(\"Create and manage AskNews alerts\");\n\n const list = alerts.command(\"list\").description(\"List alerts\");\n const listOptions = registerParameterOptions(list, getOperation(\"get_alerts\"));\n addUnderlyingHelp(list, \"get_alerts\");\n list.action(async (_options, command) => {\n await invokeOperation(command, \"get_alerts\", readRegisteredOptions(command, listOptions));\n });\n\n const get = alerts\n .command(\"get\")\n .description(\"Get an alert\")\n .argument(\"<alert-id>\", \"alert UUID\");\n const getOptions = registerParameterOptions(\n get,\n getOperation(\"get_alert\"),\n new Set([\"alert_id\"]),\n );\n addUnderlyingHelp(get, \"get_alert\");\n get.action(async (alertId: string, _options, command) => {\n await invokeOperation(command, \"get_alert\", {\n ...readRegisteredOptions(command, getOptions),\n alert_id: alertId,\n });\n });\n\n registerAlertWrite(alerts, \"create\", \"create_alert\");\n registerAlertWrite(alerts, \"update\", \"put_alert\", true);\n\n const remove = alerts\n .command(\"delete\")\n .description(\"Delete an alert\")\n .argument(\"<alert-id>\", \"alert UUID\")\n .option(\"-y, --yes\", \"confirm alert deletion\");\n addUnderlyingHelp(remove, \"delete_alert\");\n remove.action(async (alertId: string, values: { yes?: boolean }, command) => {\n await confirmMutation(getOperation(\"delete_alert\"), Boolean(values.yes));\n await invokeOperation(command, \"delete_alert\", { alert_id: alertId });\n });\n\n const run = alerts\n .command(\"run\")\n .description(\"Run an existing alert\")\n .argument(\"<alert-id>\", \"alert UUID\")\n .option(\"-y, --yes\", \"confirm billable alert run\");\n const runOptions = registerParameterOptions(\n run,\n getOperation(\"run_alert\"),\n new Set([\"alert_id\"]),\n );\n addUnderlyingHelp(run, \"run_alert\");\n run.action(async (alertId: string, values: { yes?: boolean }, command) => {\n await confirmMutation(getOperation(\"run_alert\"), Boolean(values.yes));\n await invokeOperation(command, \"run_alert\", {\n ...readRegisteredOptions(command, runOptions),\n alert_id: alertId,\n });\n });\n}\n\nfunction registerAlertWrite(\n alerts: Command,\n name: \"create\" | \"update\",\n operationId: \"create_alert\" | \"put_alert\",\n hasId = false,\n): void {\n const operation = getOperation(operationId);\n const command = alerts.command(name).description(operation.summary);\n if (hasId) command.argument(\"<alert-id>\", \"alert UUID\");\n command\n .option(\"--body <json-or-file>\", \"complete alert JSON or @file.json\")\n .option(\"-y, --yes\", `confirm alert ${name}`);\n const fields = registerBodyOptions(command, operation);\n addUnderlyingHelp(command, operationId);\n command.action(async (...args: unknown[]) => {\n const actionCommand = args.at(-1) as Command;\n const values = args.at(-2) as { body?: string; yes?: boolean };\n const alertId = hasId ? (args[0] as string) : undefined;\n await confirmMutation(operation, Boolean(values.yes));\n const bodyInput = await parseBodyInput(values.body);\n const body = {\n ...(isRecord(bodyInput) ? bodyInput : {}),\n ...readRegisteredOptions(actionCommand, fields),\n };\n if (Object.keys(body).length === 0) {\n throw new UsageError(`Pass alert fields or --body; see \\`asknews alerts ${name} --help\\``);\n }\n await invokeOperation(actionCommand, operationId, alertId ? { alert_id: alertId } : {}, body);\n });\n}\n\nfunction addUnderlyingHelp(command: Command, operationId: string, examples: string[] = []): void {\n const operation = getOperation(operationId);\n const safety =\n operation.safety === \"mutating\"\n ? \"state-changing; confirmation required\"\n : operation.safety === \"high-cost\"\n ? \"read-only but potentially billable/high-cost\"\n : \"read-only\";\n command.addHelpText(\n \"after\",\n `\nAPI CONTRACT\n Operation: ${operation.operationId}\n Request: ${operation.method} ${operation.path}\n Safety: ${safety}\n${examples.length > 0 ? `\\nEXAMPLES\\n${examples.map((example) => ` ${example}`).join(\"\\n\")}` : \"\"}\n`,\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n", "import { cp, mkdir, stat } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { Command } from \"commander\";\nimport { UsageError } from \"../lib/errors.js\";\nimport { writeResult } from \"../lib/output.js\";\nimport { contextFrom } from \"./context.js\";\n\ntype InstallScope = \"all\" | \"global\" | \"project\";\n\nexport function registerSkillCommands(program: Command): void {\n const cli = program.command(\"cli\").description(\"Manage the AskNews CLI installation\");\n cli\n .command(\"setup\")\n .description(\"Install embedded AskNews skills into detected agent directories\")\n .option(\"--scope <scope>\", \"global, project, or all\", \"global\")\n .option(\"--directory <path>\", \"project directory\", process.cwd())\n .option(\"--no-agent-skills\", \"skip agent skill installation\")\n .option(\"--quiet\", \"suppress human setup messages\")\n .action(\n async (\n options: {\n scope: InstallScope;\n directory: string;\n agentSkills: boolean;\n quiet?: boolean;\n },\n command,\n ) => {\n const { writer } = contextFrom(command);\n if (!options.agentSkills) {\n writeResult(writer, { installed: [], skipped: \"agent skills disabled\" });\n return;\n }\n if (![\"all\", \"global\", \"project\"].includes(options.scope)) {\n throw new UsageError(\"--scope must be global, project, or all\");\n }\n const installed = await installAgentSkills(options.scope, resolve(options.directory));\n if (!options.quiet || writer.format !== \"human\") {\n writeResult(writer, { installed });\n }\n },\n );\n}\n\nexport async function installAgentSkills(\n scope: InstallScope,\n projectDirectory: string,\n): Promise<string[]> {\n const source = await findSkillSource();\n const targets = new Set<string>();\n if (scope === \"global\" || scope === \"all\") {\n const agentHome =\n process.env.ASKNEWS_AGENT_HOME ?? process.env.npm_config_asknews_agent_home ?? homedir();\n targets.add(join(agentHome, \".agents\", \"skills\", \"asknews-cli\"));\n const claudeRoot = join(agentHome, \".claude\");\n if (await exists(claudeRoot)) targets.add(join(claudeRoot, \"skills\", \"asknews-cli\"));\n }\n if (scope === \"project\" || scope === \"all\") {\n targets.add(join(projectDirectory, \".agents\", \"skills\", \"asknews-cli\"));\n if (await exists(join(projectDirectory, \".claude\"))) {\n targets.add(join(projectDirectory, \".claude\", \"skills\", \"asknews-cli\"));\n }\n }\n const installed: string[] = [];\n for (const target of targets) {\n await mkdir(dirname(target), { recursive: true });\n await cp(source, target, { recursive: true, force: true });\n installed.push(target);\n }\n return installed.sort();\n}\n\nasync function findSkillSource(): Promise<string> {\n let current = dirname(fileURLToPath(import.meta.url));\n for (let depth = 0; depth < 5; depth += 1) {\n const candidate = join(current, \"skills\", \"asknews-cli\");\n if (await exists(candidate)) {\n return candidate;\n }\n current = dirname(current);\n }\n throw new UsageError(\"Embedded AskNews skill could not be found\");\n}\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch {\n return false;\n }\n}\n", "import chalk from \"chalk\";\n\n// Two AskNews banners:\n// * a faithful \"logo art\" rendering with the gradient sail and wordmark (~98 cols), shown on wide\n// terminals, with light/dark variants for the sail shading; and\n// * a compact figlet \"ANSI Shadow\" wordmark (~59 cols) used as the fallback on narrow terminals\n// and when output is piped.\n// The leading sail columns are tinted with the logo's navy\u2192cyan gradient; the wordmark uses the\n// terminal's default bold foreground so it stays legible on light and dark backgrounds. With color\n// disabled, both render as plain monochrome ASCII.\n\nconst TAGLINE = \"News, when quality matters.\";\nconst ACCENT: [number, number, number] = [125, 222, 255];\n\n// Sail columns get the gradient tint; the wordmark begins after this column in the logo art.\nconst SAIL_COLS = 17;\n// Width tiers: full logo art when it fits, the figlet wordmark when that fits, else a tiny banner.\nconst LOGO_MIN_WIDTH = 100;\nconst WORDMARK_MIN_WIDTH = 62;\n\nconst LOGO_DARK = [\n \" @@%% @@@ @@@ @@\",\n \" @@%## @@@ @@@@ @@\",\n \" @@%%##* @@@@@@@@ @@@ @@@@ @@ @@@ @@ @@@@@@@@@ @@ @@@ @@ @@@@@@@@\",\n \" @@%%# **+ @@@ @@@ @@@ @@@ @@ @@ @@ @@ @@ @@ @@@@ @@ @@ @@\",\n \" @@@%##**++= @@@@@@ @@@@@@@ @@ @@@ @@ @@@@@@@@@@@@ @@@ @@ @@ @@ @@@@@\",\n \" @@@ %#**++ =- @@@@@ @@@@@@@ @@ @@ @@ @@@ @@ @@ @@ @@ @@@@\",\n \" @@@ **+===-- @@@ @@@@ @@@ @@@@ @@ @@@@ @@@ @@ @@@@ @@@ @@ @@\",\n \"@@@ =--- @@@@@@@@ @@@ @@@@ @@ @@ @@@@@@@ @@ @@@ @@@@@@@@\",\n];\n\nconst LOGO_LIGHT = [\n \" @@@@ @@@ @@@ @@@\",\n \" @@@@@% @@@ @@@@@ @@@\",\n \" @@@@@%%% @@@@@@@@@ @@@ @@@@ @@@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@@@@@@@@\",\n \" @@@@@%%%## @@@ @@@@ @@@ @@@@@ @@@ @@@@ @@@ @@ @@ @@ @@@@@ @@ @@ @@\",\n \" @@@@@@%% ### @@@@@@@@ @@@@@@@ @@@ @@@ @@@ @@@@@@@@@@@@ @@@ @@@ @@ @@ @@@@@@@\",\n \" @@@@@%%%## ** @@@@@@@ @@@@@@@ @@@ @@@ @@@ @@@ @@@@@ @@@@@@ @@@@\",\n \"@@@@ %###***+ @@@@ @@@@ @@@ @@@@ @@@ @@@@@ @@ @@ @@@@ @@@@ @@ @@\",\n \"@@@@ ***++= @@@@@@@@@ @@@ @@@@ @@@ @@@@ @@@@@@@ @@@ @@ @@@@@@@@\",\n];\n\n// figlet \"ANSI Shadow\" wordmark \u2014 compact fallback.\nconst WORDMARK = [\n \" \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\",\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2588\u2557\u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2554\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\",\n \"\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u255D\u255A\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\",\n];\nconst WORDMARK_SAIL = 8;\n\n// Tiny banner for narrow windows: a gradient sail wedge beside the plain wordmark. Fits ~34 cols and\n// never wraps where the figlet wordmark would.\nconst COMPACT = [\"\u2588\", \"\u2588\u2588 AskNews\", \"\u2588\u2588\u2588\"];\nconst COMPACT_SAIL = 3;\n\n// The help banner is opt-in: set ASKNEWS_BANNER=1 (or true/on/yes) to show it. Default is disabled.\nexport function bannerEnabled(): boolean {\n const value = process.env.ASKNEWS_BANNER?.trim().toLowerCase();\n return value === \"1\" || value === \"true\" || value === \"on\" || value === \"yes\";\n}\n\nexport function renderBanner(useColor: boolean): string {\n const width = process.stdout.columns ?? 0;\n const [rows, sailCols] =\n width >= LOGO_MIN_WIDTH\n ? [logoFor(useTheme()), SAIL_COLS]\n : width >= WORDMARK_MIN_WIDTH\n ? [WORDMARK, WORDMARK_SAIL]\n : [COMPACT, COMPACT_SAIL];\n return [\"\", ...colorize(rows, sailCols, useColor), \"\", tagline(useColor), \"\"].join(\"\\n\");\n}\n\n// Tint each row's leading sail columns with a top\u2192bottom navy\u2192cyan gradient; render the rest in the\n// terminal's default bold foreground. Returns the rows unchanged when color is disabled.\nfunction colorize(rows: string[], sailCols: number, useColor: boolean): string[] {\n if (!useColor) return rows;\n return rows.map((row, index) => {\n const [r, g, b] = gradient(index, rows.length);\n return chalk.rgb(r, g, b)(row.slice(0, sailCols)) + chalk.bold(row.slice(sailCols));\n });\n}\n\nfunction gradient(index: number, total: number): [number, number, number] {\n const top: [number, number, number] = [37, 99, 160];\n const bottom: [number, number, number] = [125, 222, 255];\n const t = total <= 1 ? 1 : index / (total - 1);\n return [\n Math.round(top[0] + (bottom[0] - top[0]) * t),\n Math.round(top[1] + (bottom[1] - top[1]) * t),\n Math.round(top[2] + (bottom[2] - top[2]) * t),\n ];\n}\n\nfunction tagline(useColor: boolean): string {\n if (!useColor) return ` ${TAGLINE}`;\n return ` ${chalk.rgb(...ACCENT)(\"News\")}${chalk.dim(\", when quality matters.\")}`;\n}\n\nfunction logoFor(theme: \"light\" | \"dark\"): string[] {\n return theme === \"light\" ? LOGO_LIGHT : LOGO_DARK;\n}\n\n// Pick the sail-shading variant: explicit override first, then a best-effort read of the terminal\n// background via COLORFGBG, defaulting to the dark-background art.\nfunction useTheme(): \"light\" | \"dark\" {\n const override = process.env.ASKNEWS_BANNER_THEME?.toLowerCase();\n if (override === \"light\" || override === \"dark\") return override;\n const background = process.env.COLORFGBG?.split(\";\").pop();\n if (background !== undefined) {\n const value = Number(background);\n if (Number.isFinite(value) && value >= 11) return \"light\";\n }\n return \"dark\";\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["chalk", "Option", "z", "readFile", "readFile", "join", "z", "z", "join", "collect", "command", "isRecord", "p", "isRecord", "mkdir", "homedir", "join", "homedir", "join", "mkdir", "chalk", "Option", "chalk"]
7
+ }