vybsly_search
Find comprehensive web content across 29M+ pages. Retrieve up to 30K characters per result with strict filters for research, news, or educational sources.
Instructions
Full-content web search across 29M+ pages. Returns up to 30K chars per result — perfect for RAG and agent context. Supports strict-mode filters (research/news/educational) and federation with encyclopedia.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (required) | |
| limit | No | Max results (1-50, default 10) | |
| mode | No | agent = structured output with key_facts and entities | |
| strict | No | Enforce filter allowlists instead of fuzzy matching | |
| research | No | Only research papers (arxiv, nature, pubmed) | |
| news | No | Only news outlets (Reuters, AP, BBC) | |
| educational | No | Only tutorials/docs (MDN, MIT OCW) | |
| source | No | Restrict to a specific domain, e.g. wikipedia.org | |
| lang | No | Language filter (en, es, fr, de, ja, zh) | |
| strict_fallback | No | Auto-retry relaxed when strict returns too few |
Implementation Reference
- index.js:34-53 (registration)Tool registration in TOOLS array with name 'vybsly_search', description, and inputSchema.
const TOOLS = [ { name: 'vybsly_search', description: 'Full-content web search across 29M+ pages. Returns up to 30K chars per result — perfect for RAG and agent context. Supports strict-mode filters (research/news/educational) and federation with encyclopedia.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query (required)' }, limit: { type: 'number', description: 'Max results (1-50, default 10)', default: 10 }, mode: { type: 'string', enum: ['default', 'agent'], description: 'agent = structured output with key_facts and entities' }, strict: { type: 'boolean', description: 'Enforce filter allowlists instead of fuzzy matching' }, research: { type: 'boolean', description: 'Only research papers (arxiv, nature, pubmed)' }, news: { type: 'boolean', description: 'Only news outlets (Reuters, AP, BBC)' }, educational: { type: 'boolean', description: 'Only tutorials/docs (MDN, MIT OCW)' }, source: { type: 'string', description: 'Restrict to a specific domain, e.g. wikipedia.org' }, lang: { type: 'string', description: 'Language filter (en, es, fr, de, ja, zh)' }, strict_fallback: { type: 'string', enum: ['relaxed'], description: 'Auto-retry relaxed when strict returns too few' } }, required: ['query'] } - index.js:36-53 (schema)Input schema for vybsly_search: query (required), limit, mode, strict, research, news, educational, source, lang, strict_fallback.
name: 'vybsly_search', description: 'Full-content web search across 29M+ pages. Returns up to 30K chars per result — perfect for RAG and agent context. Supports strict-mode filters (research/news/educational) and federation with encyclopedia.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query (required)' }, limit: { type: 'number', description: 'Max results (1-50, default 10)', default: 10 }, mode: { type: 'string', enum: ['default', 'agent'], description: 'agent = structured output with key_facts and entities' }, strict: { type: 'boolean', description: 'Enforce filter allowlists instead of fuzzy matching' }, research: { type: 'boolean', description: 'Only research papers (arxiv, nature, pubmed)' }, news: { type: 'boolean', description: 'Only news outlets (Reuters, AP, BBC)' }, educational: { type: 'boolean', description: 'Only tutorials/docs (MDN, MIT OCW)' }, source: { type: 'string', description: 'Restrict to a specific domain, e.g. wikipedia.org' }, lang: { type: 'string', description: 'Language filter (en, es, fr, de, ja, zh)' }, strict_fallback: { type: 'string', enum: ['relaxed'], description: 'Auto-retry relaxed when strict returns too few' } }, required: ['query'] } - index.js:433-446 (handler)Handler implementation: calls Vybsly API /search endpoint with all parameters from args, returns JSON result.
case 'vybsly_search': result = await vybslyCall('/search', { q: args.query, limit: args.limit || 10, ...(args.mode && { mode: args.mode }), ...(args.strict && { strict: 'true' }), ...(args.research && { research: 'true' }), ...(args.news && { news: 'true' }), ...(args.educational && { educational: 'true' }), ...(args.source && { source: args.source }), ...(args.lang && { lang: args.lang }), ...(args.strict_fallback && { strict_fallback: args.strict_fallback }) }); break; - index.js:21-32 (helper)Helper function vybslyCall() used to make HTTP requests to the Vybsly API, handling auth headers and error responses.
async function vybslyCall(path, params = {}) { const qs = new URLSearchParams(params).toString(); const url = `${VYBSLY_BASE}${path}${qs ? '?' + qs : ''}`; const headers = { 'Accept': 'application/json' }; if (API_KEY) headers['X-API-Key'] = API_KEY; const res = await fetch(url, { headers }); if (!res.ok) { const text = await res.text(); throw new Error(`Vybsly API ${res.status}: ${text.slice(0, 300)}`); } return res.json(); }