nimble-web-search
nimble-web-search skill for OpenClaw agents
Installation
npx clawhub@latest install nimble-web-searchView the full skill documentation and source below.
Documentation
Nimble Web Search
Real-time web intelligence using Nimble Search API with specialized focus modes and AI-powered result synthesis.
Prerequisites
Nimble API Key Required - Get your key at
Configuration
Set the NIMBLE_API_KEY environment variable using your platform's method:
Claude Code:
// ~/.claude/settings.json
{
"env": {
"NIMBLE_API_KEY": "your-api-key-here"
}
}
VS Code/GitHub Copilot:
- Add to
.github/skills/directory in your repository - Or use GitHub Actions secrets for the copilot environment
Shell/Terminal:
export NIMBLE_API_KEY="your-api-key-here"
Any Platform:
The skill checks for the NIMBLE_API_KEY environment variable regardless of how you set it.
API Key Validation
IMPORTANT: Before making any search request, verify the API key is configured:
# Check if API key is set
if [ -z "$NIMBLE_API_KEY" ]; then
echo "❌ Error: NIMBLE_API_KEY not configured"
echo ""
echo "Get your API key: "
echo ""
echo "Configure using your platform's method:"
echo "- Claude Code: Add to ~/.claude/settings.json"
echo "- GitHub Copilot: Use GitHub Actions secrets"
echo "- Shell: export NIMBLE_API_KEY=\"your-key\""
echo ""
echo "Do NOT fall back to other search tools - guide the user to configure first."
exit 1
fi
Overview
Nimble Search provides real-time web intelligence with 8 specialized focus modes optimized for different types of queries. Get instant access to current web data with AI-powered answer generation, deep content extraction, URL discovery, and smart filtering by domain and date.
IMPORTANT: Always Specify These Parameters
When using this skill, always explicitly set the following parameters in your requests:
deep_search: Default tofalsefor 5-10x faster responses
false (FAST MODE - 1-3 seconds): For 95% of use cases - URL discovery, research, comparisons, answer generation
- Use true (DEEP MODE - 5-15 seconds): Only when you specifically need full page content extracted for archiving or detailed analysis
focus: Default to"general"for broad searches
coding, news, academic, shopping, social, geo, location) for targeted results
max_results: Default to10- Balanced speed and coverage
deep_search: false, you're choosing fast mode and should expect results in 1-3 seconds. If you set deep_search: true, expect 5-15 seconds response time.
Quick Start
Use the wrapper script for the simplest experience:
# ALWAYS specify deep_search explicitly
./scripts/search.sh '{
"query": "React hooks",
"deep_search": false
}'
The script automatically handles authentication, tracking headers, and output formatting.
When to Use Each Mode
Use deep_search: false (FAST MODE - 1-3 seconds) - Default for 95% of cases:
- ✅ Finding URLs and discovering resources
- ✅ Research and topic exploration
- ✅ Answer generation and summaries
- ✅ Product comparisons
- ✅ News monitoring
- ✅ Any time you DON'T need full article text
Use
deep_search: true (DEEP MODE - 5-15 seconds) - Only when specifically needed:- 📄 Archiving full article content
- 📄 Extracting complete documentation
- 📄 Building text datasets
- 📄 Processing full page content for analysis
Decision Rule: If you're not sure, use
deep_search: false. You can always re-run with true if needed.
Core Capabilities
Focus Modes
Choose the appropriate focus mode based on your query type:
Search Features
LLM Answer Generation
- Request AI-generated answers synthesized from search results
- Powered by Claude for high-quality summaries
- Include citations to source URLs
- Best for: Research questions, topic overviews, comparative analysis
URL Discovery
- Extract 1-20 most relevant URLs for a query
- Useful for building reading lists and reference collections
- Returns URLs with titles and descriptions
- Best for: Resource gathering, link building, research preparation
Deep Content Extraction
- Default (Recommended):
deep_search=false- Fastest response, returns titles, descriptions, and URLs - Optional:
deep_search=true- Slower, extracts full page content - Important: Most use cases work perfectly with
deep_search=false(the default) - Available formats when deep_search=true: markdown, plain_text, simplified_html
- Only enable deep search for: Detailed content analysis, archiving, or comprehensive text extraction needs
Domain Filtering
- Include specific domains (e.g., github.com, stackoverflow.com)
- Exclude domains to remove unwanted sources
- Combine multiple domains for focused searches
- Best for: Targeted research, brand monitoring, competitive analysis
Time Filtering
- Recommended: Use
time_rangefor real-time recency filtering (hour, day, week, month, year) - Alternative: Use
start_date/end_datefor precise date ranges (YYYY-MM-DD) - Note:
time_rangeand date filters are mutually exclusive - Best for: Real-time news monitoring, recent developments, temporal analysis
Usage Patterns
All examples below use the ./scripts/search.sh wrapper for simplicity. For raw API usage, see the API Integration section.
Basic Search
Quick search in fast mode (ALWAYS specify deep_search explicitly):
./scripts/search.sh '{
"query": "React Server Components tutorial",
"deep_search": false
}'
For technical content, specify coding focus (still fast mode):
./scripts/search.sh '{
"query": "React Server Components tutorial",
"focus": "coding",
"deep_search": false
}'
Research with AI Summary
Get synthesized insights from multiple sources (fast mode works great with answer generation):
./scripts/search.sh '{
"query": "impact of AI on software development 2026",
"deep_search": false,
"include_answer": true
}'
Domain-Specific Search
Target specific authoritative sources (fast mode):
./scripts/search.sh '{
"query": "async await patterns",
"focus": "coding",
"deep_search": false,
"include_domains": ["github.com", "stackoverflow.com", "dev.to"],
"max_results": 8
}'
Real-Time News Monitoring
Track current events and breaking news as they happen (fast mode):
./scripts/search.sh '{
"query": "latest developments in quantum computing",
"focus": "news",
"deep_search": false,
"time_range": "week",
"max_results": 15,
"include_answer": true
}'
Academic Research - Fast Mode (Recommended)
Find and synthesize scholarly content using fast mode:
./scripts/search.sh '{
"query": "machine learning interpretability methods",
"focus": "academic",
"deep_search": false,
"max_results": 20,
"include_answer": true
}'
When to use deep mode: Only use "deep_search": true if you need full paper content extracted for archiving:
./scripts/search.sh '{
"query": "machine learning interpretability methods",
"focus": "academic",
"deep_search": true,
"max_results": 5,
"output_format": "markdown"
}'
Note: Deep mode is 5-15x slower. Use only when specifically needed.
Real-Time Shopping Research
Compare products and current prices (fast mode):
./scripts/search.sh '{
"query": "best mechanical keyboards for programming",
"focus": "shopping",
"deep_search": false,
"max_results": 10,
"include_answer": true
}'
Parallel Search Strategies
When to Use Parallel Searches
Run multiple real-time searches in parallel when:
- Comparing perspectives: Search the same topic across different focus modes
- Multi-faceted research: Investigate different aspects of a topic simultaneously
- Competitive analysis: Search multiple domains or competitors at once
- Real-time monitoring: Track multiple topics or keywords concurrently
- Cross-validation: Verify information across different source types in real-time
Implementation Methods
Method 1: Background Processes (Recommended)
Run multiple searches concurrently using the wrapper script:
# Start multiple searches in parallel
./scripts/search.sh '{"query": "React", "focus": "coding"}' > react_coding.json &
./scripts/search.sh '{"query": "React", "focus": "news"}' > react_news.json &
./scripts/search.sh '{"query": "React", "focus": "academic"}' > react_academic.json &
# Wait for all to complete
wait
# Combine results
jq -s '.' react_*.json > combined_results.json
Method 2: Loop with xargs (Controlled Parallelism)
Process multiple queries with rate limiting:
# Create queries file
cat > queries.txt <<EOF
{"query": "AI frameworks", "focus": "coding"}
{"query": "AI regulation", "focus": "news"}
{"query": "AI research", "focus": "academic"}
EOF
# Run with max 3 parallel processes
cat queries.txt | xargs -n1 -P3 -I{} ./scripts/search.sh '{}'
Method 3: Focus Mode Comparison
Search the same query across different focus modes:
QUERY="artificial intelligence trends"
for focus in "general" "coding" "news" "academic"; do
(
./scripts/search.sh "{\"query\": \"$QUERY\", \"focus\": \"$focus\"}" \
> "${focus}_results.json"
) &
done
wait
echo "All searches complete!"
Best Practices for Parallel Execution
- Use
xargs -P3 to set maximum concurrent requests- Check your API tier limits before increasing parallelism
./scripts/search.sh '{"query": "test"}' || echo "Search failed" >> errors.log
# Wait for all searches
wait
# Merge JSON results
jq -s 'map(.results) | flatten' result*.json > combined.json
echo "Running 5 parallel searches..."
for i in {1..5}; do
./scripts/search.sh "{\"query\": \"query$i\"}" > "result$i.json" &
done
wait
echo "All searches complete!"
Example: Multi-Perspective Research
#!/bin/bash
# Research a topic across multiple focus modes simultaneously
QUERY="artificial intelligence code generation"
OUTPUT_DIR="./search_results"
mkdir -p "$OUTPUT_DIR"
# Run searches in parallel across different focus modes
for focus in "general" "coding" "news" "academic"; do
(
./scripts/search.sh "{
\"query\": \"$QUERY\",
\"focus\": \"$focus\",
\"max_results\": 10
}" > "$OUTPUT_DIR/${focus}_results.json"
) &
done
# Wait for all searches to complete
wait
# Aggregate and analyze results
jq -s '{
general: .[0].results,
coding: .[1].results,
news: .[2].results,
academic: .[3].results
}' "$OUTPUT_DIR"/*.json > "$OUTPUT_DIR/combined_analysis.json"
echo "✓ Multi-perspective search complete"
Performance Considerations
- Optimal Parallelism: 3-5 concurrent requests balances speed and API limits
- Memory Usage: Each parallel request consumes memory; monitor for large result sets
- Network Bandwidth: Parallel requests can saturate bandwidth on slow connections
- API Costs: More parallel requests = faster API quota consumption
When NOT to Use Parallel Searches
- Single, focused query with one clear answer
- Sequential research where each search informs the next
- API quota is limited or expensive
- Results need to be processed before next search
- Simple URL collection that doesn't require multiple perspectives
API Integration
Note: For most use cases, use the ./scripts/search.sh wrapper script shown in Usage Patterns. The raw API examples below are for advanced users who need direct API access or custom integration.
Required Configuration
Before making any API request, always validate the API key is configured:
# Validate API key is set
if [ -z "$NIMBLE_API_KEY" ]; then
echo "❌ Nimble API key not configured."
echo "Get your key at "
echo ""
echo "Set NIMBLE_API_KEY environment variable using your platform's method."
exit 1
fi
The skill requires the NIMBLE_API_KEY environment variable. See Prerequisites for platform-specific setup instructions.
Get your API key at:
API Endpoint
POST
Request Format
{
"query": "search query string", // REQUIRED
"focus": "general", // OPTIONAL: default "general" | coding|news|academic|shopping|social|geo|location
"max_results": 10, // OPTIONAL: default 10 (range: 1-100)
"include_answer": false, // OPTIONAL: default false
"deep_search": false, // OPTIONAL: default false (RECOMMENDED: keep false for speed)
"output_format": "markdown", // OPTIONAL: default "markdown" | plain_text|simplified_html
"include_domains": ["domain1.com"], // OPTIONAL: default [] (no filter)
"exclude_domains": ["domain3.com"], // OPTIONAL: default [] (no filter)
"time_range": "week", // OPTIONAL: hour|day|week|month|year
"start_date": "2026-01-01", // OPTIONAL: Use time_range OR start_date/end_date (not both)
"end_date": "2026-12-31" // OPTIONAL
}
Key Defaults:
focus:"general"- Change to specific mode for targeted resultsdeep_search:false- Keep false unless you need full page contentmax_results:10- Balanced speed and coverage
Response Format
{
"results": [
{
"url": "",
"title": "Page Title",
"description": "Page description",
"content": "Full page content (if deep_search=true)",
"published_date": "2026-01-15"
}
],
"include_answer": "AI-generated summary (if include_answer=true)",
"urls": ["url1", "url2", "url3"],
"total_results": 10
}
Best Practices
Focus Mode Selection
Use coding for:
- Programming questions
- Technical documentation
- Code examples and tutorials
- API references
- Framework guides
Use
news for:- Real-time current events
- Breaking stories as they happen
- Recent announcements
- Trending topics
- Time-sensitive information
Use
academic for:- Research papers
- Scholarly articles
- Scientific studies
- Academic journals
- Citations and references
Use
shopping for:- Product searches
- Price comparisons
- E-commerce research
- Product reviews
- Buying guides
Use
social for:- Real-time social media monitoring
- Live community discussions
- Current user-generated content
- Trending hashtags and topics
- Real-time public sentiment
Use
geo for:- Geographic information
- Regional data
- Maps and locations
- Area-specific queries
Use
location for:- Local business searches
- Place-specific information
- Nearby services
- Regional recommendations
Result Limits
- Quick searches: 5-10 results for fast overview
- Comprehensive research: 15-20 results for depth
- Answer generation: 10-15 results for balanced synthesis
- URL collection: 20 results for comprehensive resource list
When to Use LLM Answers
✅ Use LLM answers when:
- You need a synthesized overview of a topic
- Comparing multiple sources or approaches
- Summarizing recent developments
- Answering specific questions
- Creating research summaries
❌ Skip LLM answers when:
- You just need a list of URLs
- Building a reference collection
- Speed is critical
- You want to analyze sources manually
- Original source text is needed
Content Extraction
Default (Recommended): deep_search=false
The default setting works for 95% of use cases:
- ✅ Fastest response times
- ✅ Returns titles, descriptions, URLs
- ✅ Works perfectly with
include_answer=true - ✅ Sufficient for research, comparisons, and URL discovery
Only use
deep_search=true when you specifically need:- Full page content extraction
- Archiving complete articles
- Processing full text for analysis
- Building comprehensive datasets
Performance impact:
deep_search=false: ~1-3 secondsdeep_search=true: ~5-15 seconds (significantly slower)
Error Handling
Common Issues
Authentication Failed
- Verify NIMBLE_API_KEY is set correctly
- Check API key is active at nimbleway.com
- Ensure key has search API access
Rate Limiting
- Reduce max_results
- Add delays between requests
- Check your plan limits
- Consider upgrading API tier
No Results
- Try different focus mode
- Broaden search query
- Remove domain filters
- Adjust date filters
Timeout Errors
- Reduce max_results
- Disable deep content extraction
- Simplify query
- Try again after brief delay
Performance Tips
deep_search=false (default) for 5-10x faster responses{"query": "..."} - defaults work greatdeep_search=true when you truly need full contentIntegration Examples
See the examples/ directory for detailed integration patterns:
basic-search.md- Simple search implementationdeep-research.md- Multi-step research workflowcompetitive-analysis.md- Domain-specific research pattern
See
references/ directory for detailed documentation:focus-modes.md- Complete focus mode guidesearch-strategies.md- Advanced search patternsapi-reference.md- Full API documentation
Scripts
search.sh - Main Search Wrapper
The recommended way to use the Nimble Search API:
./scripts/search.sh '{"query": "your search", "focus": "coding"}'
Features:
- Automatic authentication with
$NIMBLE_API_KEY - Platform detection (claude-code, github-copilot, vscode, cli)
- Request tracking headers for analytics
- JSON validation and error handling
- Formatted output with
jq
Usage:
# Basic search
./scripts/search.sh '{"query": "React hooks"}'
# With all options
./scripts/search.sh '{
"query": "AI frameworks",
"focus": "coding",
"max_results": 15,
"include_answer": true,
"include_domains": ["github.com"]
}'
validate-query.sh - API Configuration Test
Test your API configuration and connectivity:
./scripts/validate-query.sh "test query" general
This verifies:
- API key is configured
- Endpoint is accessible
- Response format is correct
- Focus mode is supported