Connect any model
The same news tool, wired into 30 model families. Our side needs no key, so the only credential in any example below is the one for the model itself.
Four formats cover everything. Most providers copied OpenAI's function calling, so one schema works across the majority of this table. Anthropic, Gemini and Cohere have their own shapes, and each has its own example.
Chinese models
Every one of these is OpenAI-compatible, so the integration is a base URL and a model name. The differences that matter are in the quirks on each page — and there is at least one per vendor that will cost you an afternoon if you do not know it.
| Model | Vendor | Format | Model id |
|---|---|---|---|
| Qwen | Alibaba | openai | qwen-max |
| DeepSeek | DeepSeek | openai | deepseek-chat |
| MiniMax | MiniMax | openai | MiniMax-Text-01 |
| Kimi | Moonshot AI | openai | moonshot-v1-32k |
| GLM | Zhipu AI | openai | glm-4-plus |
| Doubao | ByteDance | openai | |
| Hunyuan | Tencent | openai | hunyuan-turbos-latest |
| ERNIE | Baidu | openai | ernie-4.5-turbo-128k |
| Yi | 01.AI | openai | yi-large |
| Step | StepFun | openai | step-2-16k |
Everything else
| Model | Vendor | Format | Model id |
|---|---|---|---|
| GPT | OpenAI | openai | gpt-4o |
| Claude | Anthropic | anthropic | claude-opus-5 |
| Gemini | gemini | gemini-2.5-flash | |
| Grok | xAI | openai | grok-4 |
| Mistral | Mistral AI | openai | mistral-large-latest |
| Llama | Meta | openai | llama-3.3-70b-versatile |
| Command | Cohere | cohere | command-a-03-2025 |
| Nova | Amazon | openai | amazon.nova-pro-v1:0 |
| Phi | Microsoft | openai | Phi-4 |
| Jamba | AI21 Labs | openai | jamba-large |
| Sonar | Perplexity | openai | sonar-pro |
| OpenRouter | OpenRouter | openai | anthropic/claude-opus-5 |
| Ollama | local | openai | qwen3 |
| vLLM | self-hosted | openai | |
| Together | Together AI | openai | meta-llama/Llama-3.3-70B-Instruct-Turbo |
| Fireworks | Fireworks AI | openai | accounts/fireworks/models/llama-v3p3-70b-instruct |
| NIM | NVIDIA | openai | meta/llama-3.3-70b-instruct |
| Granite | IBM | openai | ibm/granite-3-3-8b-instruct |
| Databricks | Databricks | openai | databricks-meta-llama-3-3-70b-instruct |
| LM Studio | local | openai | |
The tool, once
This is the whole integration. Everything else on these pages is boilerplate around it:
{
"type": "function",
"function": {
"name": "search_news",
"description": "Search worldwide news published in the last 30 days. Free, no API key.",
"parameters": {
"type": "object",
"properties": {
"q": {"type": "string", "description": "2-5 keywords, not a question."},
"date": {"type": "string", "enum": ["today","yesterday","24h","48h","7d","30d"]},
"lang": {"type": "string", "description": "ISO 639-1, e.g. en"},
"size": {"type": "integer", "description": "1-100, default 20"}
},
"required": ["q"]
}
}
}curl "https://freenewsapi.ai/v1/search?q=grain+exports&date=7d&size=10"Three rules that apply to every model
- Keywords, not questions. The search is AND across all terms, so a natural-language question matches nothing. Say so in the system prompt — every model defaults to conversational phrasing. Smaller models need it repeated.
- Scan before reading. Never let a model set
full_text=truewith a largesize. See token costs. - Cap the tool result. Truncate the JSON you feed back, in code. A 100-result response with bodies will overflow most context windows.
Models with their own search
Gemini, Grok, GLM and Perplexity ship built-in web search. When you add this tool on top, be explicit in the prompt about which source answers what — otherwise you cannot tell where a citation came from, and the point of grounding is lost.