FanOracle
Provides access to eBay's Browse API to fetch real sold listings for comic book pricing, including min/max/avg prices and sample listings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FanOraclegrade this comic from the photo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FanOracle: Comic Book Edition
AI-powered comic book authentication, grading, and valuation — secured on the Casper blockchain.
Built for the Casper Network Hackathon | MCP + Odra/Rust Smart Contract
Contract repo: https://github.com/ffffffffhugfadil/fanoracle-comic
🏆 What is FanOracle?
FanOracle is a Model Context Protocol (MCP) server that brings AI intelligence to comic book collecting. Upload a photo of any comic — raw or CGC-slabbed — and FanOracle will:
Identify the comic title, issue, publisher, and year from the cover or CGC label
Grade the condition using the CGC 0.5–10.0 scale
Verify CGC/CBCS slab authenticity (detect fakes)
Check if it's a key issue (first appearances, deaths, origins)
Price it using real eBay sold listings
Store it permanently on the Casper blockchain
Related MCP server: Casper Agentic Portfolio Copilot
🛠️ Tech Stack
Layer | Technology |
Smart Contract | Rust + Odra Framework 2.7.0 |
Blockchain | Casper Network Testnet |
AI Vision | Groq Llama 4 Scout (Vision) |
Market Data | eBay Browse API (Production) |
Comic Database | Comic Vine API |
Interface | MCP Server + Claude Desktop |
📦 Smart Contract
Deployed on Casper Testnet:
Field | Value |
Contract Hash |
|
Package Hash |
|
Deploy Hash (v2) |
|
Network |
|
Entry Points:
init— Initialize contractadd_comic(title, issue, grade_x10, is_key, value_cents)— Add comic to collectionget_count()— Get total comics in collectionget_comic_title(id)— Get comic title by IDget_comic_grade(id)— Get comic grade by IDget_comic_value(id)— Get comic estimated value by IDget_comic_is_key(id)— Check if comic is key issue
🔧 MCP Tools (5 Tools)
1. grade_comic
AI-powered comic grading from photo. Reads CGC/CBCS label automatically.
Input: image_url or image_base64
Output: grade (0.5-10.0), condition, defects, slab detection, creator credits2. verify_slab
Fake CGC/CBCS slab detector using AI visual analysis.
Input: image_url + cert_number
Output: authenticity score (0-100), red flags, green flags, verdict, CGC lookup URL3. fetch_comic_price
Real market prices from eBay sold listings.
Input: title, issue_number, grade (optional)
Output: min/max/avg price, sample listings, sales count4. detect_key_issue
Key issue detection via Comic Vine database.
Input: title, issue_number, publisher
Output: is_key_issue, key_reasons, first_appearances, cover_date5. collection_value
Casper blockchain collection tracker + value estimator.
Input: action (get_count | add_comic | value_estimate), comics[]
Output: on-chain count, deploy_hash, total value, breakdown🎬 Demo Flow
1. 📸 Upload CGC slab photo
↓
2. 🤖 grade_comic → "Wolverine #76, CGC 8.5, White Pages, Authentic"
↓
3. 🔍 verify_slab → "AUTHENTIC — Score 98/100, Hologram ✅"
↓
4. 🔑 detect_key_issue → "Lady Deathstrike & Puck appearance"
↓
5. 💰 fetch_comic_price → "Avg $40 | 20 eBay sales"
↓
6. ⛓️ collection_value (add_comic) → "Stored on Casper blockchain ✅"🚀 Setup
Prerequisites
Node.js 18+
Claude Desktop
API Keys: Groq, eBay (Production), Comic Vine
Install
git clone https://github.com/your-repo/fanoracle-mcp
cd fanoracle-mcp
npm install
cp .env.example .env
# Fill in API keys in .env
npm run buildClaude Desktop Config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"fanoracle": {
"command": "node",
"args": ["/path/to/fanoracle-mcp/dist/index.js"],
"env": {
"CASPER_RPC": "https://node.testnet.casper.network/rpc",
"CASPER_CHAIN": "casper-test",
"CONTRACT_HASH": "contract-24ca090961cafb32c6cb39bd6034d175c8e47002e1e32c20e8cf54ca9abb8d40",
"GROQ_API_KEY": "your_groq_key",
"EBAY_CLIENT_ID": "your_ebay_client_id",
"EBAY_CLIENT_SECRET": "your_ebay_client_secret",
"COMIC_VINE_API_KEY": "your_comic_vine_key"
}
}
}
}📊 Example Outputs
grade_comic
{
"detected_title": "Amazing Spider-Man",
"detected_issue_number": "300",
"is_slabbed": true,
"grading_company": "CGC",
"certified_grade": 9.2,
"grade_label": "Near Mint-",
"confidence": "high",
"hologram_detected": true,
"slab_integrity": "intact",
"notable_features": ["White Pages", "1st Full Venom Appearance"]
}verify_slab
{
"verdict": "AUTHENTIC",
"authenticity_score": 98,
"confidence": "high",
"green_flags": ["Correct label font", "Hologram present", "Grade position correct"],
"red_flags": [],
"cgc_lookup_url": "https://www.cgccomics.com/certlookup/details/?certInput=3944834002"
}fetch_comic_price
{
"title": "Amazing Spider-Man",
"issue_number": "300",
"grade": "9.2",
"sales_found": 20,
"price_avg": 774.85,
"price_min": 349.99,
"price_max": 3300.00,
"currency": "USD"
}🔗 Links
Casper Explorer: https://testnet.cspr.live/deploy/2d624cd2e18b98c321e5799c24b52e90695cd2cb6ec8c1fd6c6caead9ef677ca
CGC Cert Lookup: https://www.cgccomics.com/certlookup/
Comic Vine: https://comicvine.gamespot.com/api/
🌐 Live Demo
Built with ❤️ for the Casper Network Hackathon*
Available Tools
5 toolscollection_valueA
Calculate the total estimated value of a comic collection stored on the Casper blockchain. Optionally add or query comics from the on-chain registry.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | get_count: read comic count from chain | add_comic: add a comic to blockchain | value_estimate: estimate total collection value | |
| comics | No | List of comics to value (required for value_estimate) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions actions (get_count, add_comic, value_estimate) but lacks details on behavioral traits like write effects of add_comic, required authentication, or potential side effects. Basic transparency but insufficient for a tool with write operations.
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?
Two sentences, front-loaded with main purpose. No redundant information. Efficiently conveys core functionality.
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 three distinct actions and no output schema, the description lacks information about return values, prerequisites, and how add_comic interacts with the blockchain. Incomplete for a multi-action tool without richer context.
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 100% with enum descriptions for action and field descriptions for comics. The tool description adds minimal extra meaning beyond the schema, so baseline 3 is appropriate.
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 it calculates total estimated value of a comic collection on Casper blockchain, with optional add/query. It distinguishes from sibling tools (e.g., fetch_comic_price, grade_comic) by focusing on collection-level valuation.
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?
Description implies usage for collection valuation but does not explicitly state when to use this tool vs alternatives (e.g., fetch_comic_price for individual prices). No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_key_issueC
Check whether a comic issue is a 'key issue' (first appearance, origin, death, etc.) using the Comic Vine database.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Comic series title, e.g. 'Amazing Spider-Man' | |
| publisher | No | Publisher name, e.g. 'Marvel' | |
| issue_number | Yes | Issue number, e.g. '300' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states use of Comic Vine database but does not disclose return type, potential failures, auth needs, or performance implications.
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?
Single sentence with no wasted words, but could be restructured to front-load key information more effectively.
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?
Lacks output description; a 'check' tool likely returns a boolean or explanation, but it's not stated. No output schema exists to compensate. Missing context about data freshness or external dependencies.
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 covers 100% of parameters with clear descriptions. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
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 specifies the action ('check whether') and the resource ('comic issue is a key issue'), with examples of events. It is clear and distinct from sibling tools like fetch_comic_price or grade_comic.
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 on when to use this tool over alternatives. It does not mention prerequisites, limitations, or appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_comic_priceA
Fetch recent sold prices for a comic book from eBay. Returns min, max, and average sale price.
| Name | Required | Description | Default |
|---|---|---|---|
| grade | No | CGC/CBCS grade, e.g. '9.8'. Omit for raw copies. | |
| title | Yes | Comic title, e.g. 'Amazing Spider-Man' | |
| issue_number | Yes | Issue number, e.g. '300' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It specifies the data source (eBay) and output fields (min, max, average), which is transparent. However, it omits important details like rate limits, staleness of data, or authentication requirements, leaving gaps for a production tool.
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, front-loaded sentence of 19 words that conveys purpose and output with zero waste. Every word 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?
Given no output schema, the description explains return values (min, max, average). It lacks currency and time range details but covers the essential functionality. The three parameters are fully described in the schema.
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 100% (all three parameters described). The description adds no extra meaning beyond the schema; it only mentions return values. Baseline score of 3 is appropriate.
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 verb ('Fetch'), the resource ('recent sold prices for a comic book from eBay'), and the output (min, max, average sale price). It distinguishes from sibling tools like 'grade_comic' or 'verify_slab' by its specific focus on pricing data.
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 price research but provides no explicit guidance on when to use this tool versus alternatives (e.g., 'collection_value' for portfolio pricing). No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grade_comicA
Analyze a comic book image and estimate its condition grade (0.5–10.0 CGC scale). Provide a base64-encoded image or a public image URL.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Any known defects or context for the grader | |
| image_url | No | Public URL of the comic cover image | |
| image_base64 | No | Base64-encoded image (JPEG or PNG) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It accurately describes the analytical behavior but does not disclose error handling, requirements (e.g., need at least one image), or edge cases like providing both image inputs.
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 that front-loads the purpose and input method. No extraneous words; every phrase 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?
Given the tool's moderate complexity (input image to output grade), the description covers the input format but omits details on the output format, which would help the agent interpret results. Sibling tools exist but no comparison is made.
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 100%, and the description adds value by clarifying that either a base64-encoded image or a public URL is required. However, it does not elaborate on the 'notes' parameter 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: analyzing a comic book image to estimate its condition grade on the 0.5–10.0 CGC scale. It distinguishes itself from sibling tools like 'fetch_comic_price' and 'verify_slab' by focusing on grading.
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 when to use (to grade a comic image) but does not explicitly state when not to use or compare to alternatives like 'detect_key_issue'. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_slabB
Verify authenticity of a CGC/CBCS graded comic slab from a photo. Detects fake, tampered, or fraudulent slabs using AI visual analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | Public URL of the slab image | |
| cert_number | No | CGC certification number from the label, e.g. 3944834002 | |
| image_base64 | No | Base64-encoded image | |
| claimed_grade | No | Grade claimed on the slab, e.g. '9.8' | |
| claimed_title | No | Comic title claimed on the slab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions AI visual analysis but doesn't disclose behavior details like handling of poor images, authentication process, or failure modes.
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?
Two concise sentences front-loaded with main purpose. No unnecessary words, efficient communication.
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?
With 5 parameters and no output schema, the description lacks context on return values, error states, or what constitutes a successful verification. Incomplete for a tool of this complexity.
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 100% with descriptions for each parameter, but the tool description adds no extra meaning beyond listing the tool's purpose. It doesn't clarify parameter usage, format, or dependencies.
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?
Description clearly states the tool verifies authenticity of graded comic slabs, using AI visual analysis to detect fakes. Verb and resource are specific, and it distinguishes from sibling tools like grade_comic or fetch_comic_price.
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, no prerequisites mentioned. Users might confuse with grade_comic or collection_value, but description doesn't clarify.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool addresses a distinct facet of comic book evaluation: collection value estimation, key issue detection, price fetching, grading, and slab verification. There is no overlap or confusion between tool purposes.
Four of five tools follow a clear verb_noun pattern (detect_key_issue, fetch_comic_price, grade_comic, verify_slab). 'collection_value' uses a noun_noun structure, which is a minor deviation but still intuitively clear.
With five tools, the server covers essential comic book operations without being overwhelming or sparse. Each tool serves a clear purpose and contributes to a coherent workflow.
Core functionalities are well-covered, but there are minor gaps: no explicit tool for removing comics from a collection or for searching comics by metadata. However, the existing tools handle the primary use cases effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-native art catalogue. Catalogue works, parse provenance, and generate signed RAIs.
Confidential AI execution with a post-quantum receipt on every job — verifiable by anyone.
AI-powered threat intelligence, smart contract auditing, and cybersecurity OSINT.
Create, test and play AI-native games through server-authoritative contracts.
Related MCP Servers
- AlicenseAqualityBmaintenanceOn-chain TCG price oracle for the LitecoinVM ecosystem. 6 tools: search 433K+ trading cards, 60-day price history, Merkle proof verification on LiteForge (Chain 4441), Monte Carlo simulation, and AI card grading via Qwen 2.5 VL.7Business Source 1.1
- FlicenseNot gradedqualityBmaintenanceAI-driven portfolio dashboard and MCP server for the Casper blockchain, enabling wallet monitoring, validator staking analysis, RWA compliance checks, and on-chain transaction generation.
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to interact with the Casper blockchain through MCP tools for reading node state, inspecting blocks, querying global state, and evaluating treasury policies. Includes a Treasury Guard reference agent that autonomously enforces DeFi treasury policies on Casper Testnet.MIT

EVIDIQ Notary MCPofficial
AlicenseNot gradedqualityBmaintenanceCryptographic receipt layer for AI inferences. Enables notarization and verification of AI outputs with on-chain proofs via x402 payment.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ffffffffhugfadil/fanoracle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server