giskard-search
Giskard Search is an MCP server that provides AI agents with real-time web and news search, gated behind micropayments via Lightning Network or Arbitrum ETH.
get_invoice– Request a Lightning Network invoice to pay for searches. Pricing is karma-based: no karma = 10 sats, karma 1–20 = 7 sats, karma 21–50 = 5 sats, karma 50+ = 3 sats.get_arbitrum_invoice– Get payment details to pay with ETH on Arbitrum One instead of Lightning.search_web– Search the web for a query after proving payment via a Lightningpayment_hashor Arbitrumtx_hash. Configurable number of results (default: 5).search_news– Search for recent news articles on a topic after proving payment. Also supports configurable result count (default: 5).report– Submit feedback on whether a search result was useful (with an optional note), helping improve the service.
Provides AI agents with real-time web and news search capabilities to retrieve up-to-date information and current events through the DuckDuckGo search engine.
Giskard Search
"I exist to serve. And to serve well, I must understand."
Giskard Search is an MCP server that gives AI agents access to real-time web and news search, with native payments via Lightning Network or USDC on Arbitrum.
Agents need information. Giskard provides it. No subscriptions, no accounts — pay only for what you use.
Tools
Tool | Description |
| Get a Lightning invoice (10 sats) to pay before searching |
| Get payment info to pay with ETH on Arbitrum |
| Search the web after paying |
| Search recent news after paying |
| Report whether the result was useful |
Related MCP server: Base Intel Search
Agent flow (Lightning)
1. get_invoice() → Lightning invoice (10 sats)
2. Pay via any Lightning wallet
3. search_web(query, payment_hash=...) → resultsAgent flow (Arbitrum)
1. get_arbitrum_invoice() → contract + service ID
2. Pay on Arbitrum One
3. search_web(query, tx_hash=...) → resultsRun with Docker
docker run -p 8004:8004 \
-e PHOENIXD_URL=http://host.docker.internal:9740 \
-e PHOENIXD_PASSWORD=your_password \
ghcr.io/giskard09/giskard-searchRun from source
git clone https://github.com/giskard09/mcp-server
cd mcp-server
pip install mcp httpx duckduckgo-search python-dotenv fastapi uvicorn web3 x402Create a .env file:
PHOENIXD_PASSWORD=your_phoenixd_password
OWNER_PRIVATE_KEY=your_arbitrum_private_keyStart the server:
python3 server.pyMCP config
{
"mcpServers": {
"giskard-search": {
"url": "http://localhost:8004/sse"
}
}
}Payment contracts
Arbitrum One:
0xD467CD1e34515d58F98f8Eb66C0892643ec86AD3x402 wallet:
0xdcc84e9798e8eb1b1b48a31b8f35e5aa7b83dbf4
Stack
MCP — Model Context Protocol
DuckDuckGo Search — web search
phoenixd — Lightning Network node
x402 — HTTP payments protocol
Arbitrum — L2 for on-chain payment verification
Monitoring
Call the get_status() MCP tool for a health check. Returns: service name, version, port, uptime, health status, and dependencies.
Ecosystem
Part of Mycelium — infrastructure for AI agents.
Service | What it does |
Free orientation for new agents | |
Search (this) | Web and news search |
Semantic memory across sessions | |
Clarity for agents in fog | |
Permanent on-chain identity | |
Karma economy | |
Agent marketplace |
Giskard understands what agents need. That is why Giskard exists.
Available Tools
5 toolsget_arbitrum_invoiceA
Get payment info to pay with ETH on Arbitrum instead of Lightning.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'Get payment info' without disclosing behavioral traits like idempotency, safety, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that earns its place with clear purpose and no extraneous words. Perfectly concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema exists, the description adequately conveys the tool's core function. However, it could briefly note that this is an alternative payment method to Lightning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description does not add parameter info, but none is needed; baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves payment info for paying with ETH on Arbitrum, distinguishing it from the sibling 'get_invoice' which is implied for Lightning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for ETH-on-Arbitrum payments versus Lightning, but lacks explicit when-to-use/when-not-to-use guidance or alternative tool references beyond the implicit contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceA
Get a Lightning invoice to pay before searching.
agent_id: your identity in Giskard Marks (optional). High karma = lower price.
Tiers: no mark=10 sats | karma 1-20=7 sats | 21-50=5 sats | 50+=3 sats.| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses pricing tiers and the optional agent_id parameter's effect on cost, which is helpful. However, without annotations, it fails to specify whether the tool is read-only, if it creates state (e.g., a pending invoice), or any side effects like rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief at two sentences, conveying purpose and key pricing details efficiently. However, the tier list formatting is slightly dense and could be structured more clearly (e.g., as a table).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and pricing but omits details about the output format, the relationship between karma and Giskard Marks, and any prerequisites (e.g., having a Giskard Marks account). The presence of an output schema mitigates the need for return value explanation, but behavioral context like potential side effects is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the agent_id parameter's purpose (identity in Giskard Marks) and its behavioral impact on pricing. Given the schema has 0% coverage (no parameter descriptions), the description fully compensates, adding meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a Lightning invoice for payment before searching, which is a specific verb and resource. It distinguishes itself from sibling get_arbitrum_invoice by implying a different blockchain (Lightning vs Arbitrum).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool ('before searching'), providing clear context for invocation. However, it lacks explicit guidance on when not to use it or alternatives, such as other payment methods or prerequisites like having a Giskard Marks account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reportA
Report whether the search was useful. Helps Giskard improve.
useful: True if the result helped you, False if it didn't
note: optional — what was missing or what worked well
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| useful | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'Helps Giskard improve', implying a write operation, but does not mention side effects, permissions, idempotency, or whether the operation is reversible. For a feedback tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—four short lines total. It front-loads the purpose, then succinctly defines parameters. No fluff or redundant phrasing. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple feedback tool, the description covers purpose and parameters adequately. However, it does not mention the output (even though an output schema exists per context), nor does it provide any usage notes or prerequisites. It is minimally complete but lacks some context about the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has titles but no descriptions (0% coverage). The description compensates by clearly explaining each parameter: 'useful: True if the result helped you, False if it didn't' and 'note: optional — what was missing or what worked well'. This adds meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Report whether the search was useful.' This distinguishes it from sibling tools which are about retrieving data (invoices, news, web). The explicit verb-resource pair and mention of improving Giskard make the intent unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the tool is for providing feedback after a search. However, there is no explicit guidance on when to use it versus alternative tools, nor any when-not-to-use conditions. Given the simple nature, the implicit guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsB
Search recent news. Pay with Lightning (payment_hash) or Arbitrum ETH (tx_hash).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| tx_hash | No | ||
| max_results | No | ||
| payment_hash | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds value by disclosing payment requirements (Lightning or Arbitrum). However, it omits other behavioral traits such as error handling, rate limits, or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with only two sentences, front-loading the core purpose and then adding the payment detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (1 required) and an output schema, the description covers the payment mechanism but lacks detail on query meaning, result limits, and when to use. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'payment_hash' and 'tx_hash' but does not clarify the 'query' or 'max_results' parameters, missing crucial semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search recent news,' which is a specific verb and resource. However, it does not differentiate from sibling tool 'search_web,' leaving potential ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like 'search_web' or 'get_invoice.' The description only mentions payment methods, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_webC
Search the web. Pay with Lightning (payment_hash) or Arbitrum ETH (tx_hash).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| tx_hash | No | ||
| max_results | No | ||
| payment_hash | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only says 'Search the web' and implies payment via two methods, but does not disclose whether payment is mandatory, if there are limits, authentication needs, or any side effects. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It could be improved by placing the main action first, but it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (which relieves explanation of returns), the description lacks crucial details: how payment works, what happens without payment, how to choose payment method, and any constraints on max_results. Incomplete for a tool with 4 parameters and payment implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds meaning by explaining that payment_hash is for Lightning and tx_hash for Arbitrum ETH. However, it does not explain query or max_results, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search the web' which is a specific verb+resource. It distinguishes from siblings like search_news (different domain) and invoice tools. However, mentioning payment methods adds potential confusion about the primary action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description mentions payment methods but does not clarify when payment is required or how to choose between them, leaving the agent without decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- Added
get_arbitrum_invoice - Added
get_invoice - Added
report - Added
search_news - Added
search_web
5 tool updates
- Removed
get_arbitrum_invoice - Removed
get_invoice - Removed
report - Removed
search_news - Removed
search_web
5 tool updates
- First observed
get_arbitrum_invoice - First observed
get_invoice - First observed
report - First observed
search_news - First observed
search_web
TDQS
Scored across 5 tools
Each tool serves a clearly distinct purpose: payment via two methods, two search scopes, and feedback. No overlap or ambiguity.
All tools use snake_case and follow a consistent verb_noun pattern (e.g., get_invoice, search_web). The naming is predictable and uniform.
With 5 tools, the set is well-scoped for a paid search service. It covers essential actions without being over- or under-engineered.
The tool surface covers payment, search, and feedback comprehensively. A minor gap is the lack of a dedicated tool to view karma or pricing tiers, but it doesn't hinder core functionality.
Maintenance
Related MCP Connectors
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
Live web search for AI agents. $0.001/call, x402 on Base, no API key.
Agent-native search engine with live web research optimized for AI agents.
The best web search for your AI Agent
Related MCP Servers
- AlicenseAqualityDmaintenanceA privacy-focused search server built on SearXNG that provides unlimited, multi-source web searching across 100+ engines. It enables AI tools to perform advanced searches with specialized filters for time, language, and content categories without API costs or rate limits.212MIT
- AlicenseNot gradedqualityDmaintenancePay-per-call web search for AI agents, settled in USDC on Base via the x402 protocol. No API key or subscription required; users fund a wallet and get a web_search tool.5 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables web search for AI agents with pay-per-search in USDC, no API keys needed.MIT
- AlicenseAqualityCmaintenanceProvides a pay-per-query web search tool for AI agents via Lightning Network sats, enabling no-KYC, account-free searches through the MCP protocol.224 npmMIT