AgentSkillsCN

Scryfall Mtg

利用Scryfall API搜索并检索《万智牌》卡牌数据。当用户询问MTG卡牌、希望按卡牌名称、类型、颜色、法术力费用、oracle文本、系列或其他任意卡牌属性进行搜索时,可使用此技能。此外,还可用于获取卡牌图像、价格、规则说明、合法状态信息,或随机抽取卡牌。触发条件包括提及MTG、Magic、《万智牌》,或涉及卡牌名称、套牌构筑问题,亦或是对卡牌信息的查询请求。

SKILL.md
--- frontmatter
category: Lifestyle
id: scryfall-mtg
name: Scryfall Mtg
description: "Search and retrieve Magic: The Gathering card data using the Scryfall API. Use this skill when the user asks about MTG cards, wants to search for cards by name, type, color, mana cost, oracle text, set, or any other card attribute. Also use for getting card images, prices, rulings, legality information, or random cards. Triggers include mentions of MTG, Magic, Magic: The Gathering, card names, deck building questions, or requests for card information."

Scryfall MTG Card Search

Search for Magic: The Gathering cards using the Scryfall API.

API Overview

Base URL: https://api.scryfall.com

Required Headers:

python
headers = {
    "User-Agent": "OpenClawMTGSkill/1.0",
    "Accept": "application/json"
}

Rate Limiting: Insert 50-100ms delay between requests (max 10 req/sec).

Core Endpoints

Search Cards

code
GET /cards/search?q={query}

Parameters:

  • q (required): Fulltext search query
  • unique: cards|art|prints (default: cards)
  • order: name|set|released|rarity|color|usd|tix|eur|cmc|power|toughness|edhrec|penny|artist|review
  • dir: auto|asc|desc
  • page: Page number for pagination

Named Card Lookup

code
GET /cards/named?exact={name}
GET /cards/named?fuzzy={name}

Use fuzzy for partial matches (e.g., "jac bele" → "Jace Beleren"). Add &set={code} to limit to specific set.

Random Card

code
GET /cards/random
GET /cards/random?q={query}

Card by ID

code
GET /cards/{id}
GET /cards/{set_code}/{collector_number}

Autocomplete

code
GET /cards/autocomplete?q={partial_name}

Returns up to 20 card name suggestions.

Search Syntax Reference

See references/search_syntax.md for the complete search syntax guide.

Quick examples:

  • c:red pow=3 - Red cards with power 3
  • t:merfolk t:legend - Legendary merfolk
  • o:"draw a card" - Cards with "draw a card" in text
  • cmc=3 r:rare - 3-mana rares
  • e:dom - Cards from Dominaria
  • f:standard - Standard legal cards
  • usd<1 - Cards under $1

Implementation

Use the provided script for common operations:

bash
python3 scripts/scryfall_search.py search "lightning bolt"
python3 scripts/scryfall_search.py named --exact "Black Lotus"
python3 scripts/scryfall_search.py random
python3 scripts/scryfall_search.py random --query "t:dragon"

Or make direct API calls with proper headers and rate limiting.

Card Object Key Fields

When displaying card info, prioritize these fields:

  • name, mana_cost, type_line
  • oracle_text, power, toughness
  • image_uris.normal (for card image)
  • prices.usd, prices.usd_foil
  • legalities (format legality)
  • set_name, rarity

For double-faced cards, check card_faces array.

Error Handling

  • 404: Card not found
  • 422: Invalid search query
  • 429: Rate limited (wait and retry)

Always validate responses have object field; if object: "error", check details for message.