زیرساخت جستجوی تصویر برای ایجنت‌های هوش مصنوعی: بازار عملاً چه چیزی ارائه می‌دهد

Getty این ماه یک سرور MCP عرضه کرد؛ کتابخانه‌های رایگان اصلاً چنین چیزی ندارند. یک بنچمارک قابل بازتولید، یک سرشماری رجیستری و شرایط چهار API بزرگ عکس — از زاویه دید ماشینی که باید از آن‌ها پیروی کند.

اشتراک‌گذاری
یک ربات سفید سه‌بعدی که ذره‌بینی را بالای سرش گرفته، روی پس‌زمینه صورتی.
عکس از طریق Unsplash

هر فریم‌ورک ایجنتی که امسال عرضه شده می‌تواند بنویسد، برنامه‌ریزی کند، ابزار فراخوانی کند و یک pull request باز کند. از یکی از آن‌ها یک عکس بخواهید و کل قضیه تبدیل به شانه بالا انداختن می‌شود: یک URL استوک که از حافظه اختراع شده، یک هات‌لینک شکسته، یا تصویری تولیدشده چون جست‌وجوی یک عکس واقعی سخت‌تر از ساختن یکی جدید بوده است. مدل‌ها حلقه‌ی ضعیف نیستند. لایه‌ی تصویری زیر آن‌ها ضعیف است — و به شکلی بسیار خاص و قابل‌اندازه‌گیری غایب است.

این یک مطالعه‌ی بازار است، نه یک مانیفست. هر آنچه در ادامه می‌آید در تاریخ ۱۸ آگوست ۲۰۲۶ اندازه‌گیری یا از یک منبع اصلی خوانده شده است: سرشماری رجیستری رسمی MCP، شرایط منتشرشده‌ی چهار API عکس رایگان بزرگ، شرایط دسترسی دو ارائه‌دهنده‌ی پولی سنتی که همین ماه کانکتور ایجنتی عرضه کردند، و یک بنچمارک کوچک و قابل تکرار که می‌توانید در یک دقیقه بدون هیچ کلید API دوباره اجرا کنید.

یک مرزبندی، تا اگر این پرسش شما نیست، بتوانید زودتر خواندن را متوقف کنید: این مقاله درباره‌ی لایه‌ی دسترسی است — بازیابی، قابلیت دسترسی، شرایط، سهمیه‌ها. این پایپ‌لاین انتشار نیست. اگر آنچه نیاز دارید این است که چگونه یک پیش‌نویس را به صفحاتی مصور، دارای اعتبار و نشانه‌گذاری‌شده تبدیل کنید — پرامپت مسیریاب، بریف‌های تصویری، مونتاژ، نشانه‌گذاری ImageObject — آن موضوع جداگانه در پایپ‌لاینی که مقالات نوشته‌شده با هوش مصنوعی را مصور می‌کند نوشته شده است.

وقتی فراخوان‌کننده یک ماشین است چه چیزی تغییر می‌کند

انسانی که به دنبال یک عکس می‌گردد دو یا سه کلمه تایپ می‌کند، یک شبکه از تصاویر را نگاه می‌کند، و وقتی عکس خوبی را می‌بیند آن را می‌شناسد. هر موتور جست‌وجوی استوک که تابه‌حال ساخته شده، این چرخه را فرض می‌گیرد. یک ایجنت هر سه فرض را به‌طور همزمان می‌شکند:

  1. جمله می‌نویسد، نه کلیدواژه. مدلی که تازه بخشی درباره‌ی اسناد وام مسکن نوشته، کلمه‌ی mortgage را تولید نمی‌کند؛ بلکه «زنی که در حال امضای سند وام مسکن روی میز آشپزخانه است در حالی که یک مشاور بانکی شرایط را توضیح می‌دهد» را تولید می‌کند. این خروجی طبیعی یک مدل زبانی است، و دقیقاً چیزی است که یک ایندکس مبتنی بر تطبیق توکن نمی‌تواند پاسخ دهد.
  2. نمی‌تواند یک شبکه‌ی تصویری را اسکن کند. هر چیزی که ابزار برمی‌گرداند، همان چیزی است که ایجنت می‌داند. اگر پاسخ فهرستی از URLها بدون توضیح، ابعاد یا اعتبار باشد، ایجنت باید هر تصویر را واکشی و نگاه کند — یا، بسیار بیشتر اوقات، حدس بزند.
  3. دست ندارد. نمی‌تواند اسکرین‌شات‌ها را به صف بازبینی آپلود کند، شرایط را بپذیرد، کلید را چرخش دهد، یا سه روز کاری برای تأیید تولید صبر کند. هر مرحله‌ی انسانی در فرآیند ورود یک API، دیواری است که ایجنت پشت آن متوقف می‌شود.

پس «زیرساخت جست‌وجوی تصویر برای ایجنت‌های هوش مصنوعی» یک عبارت بازاریابی نیست. یک چک‌لیست است: بازیابی زبان طبیعی، نتایج قابل خواندن توسط ماشین که به اندازه‌ی کافی غنی برای استدلال باشند، و مدلی برای احراز هویت و سهمیه که یک برنامه بتواند به‌تنهایی تکمیل کند.

آزمون: یک جمله در برابر یک ایندکس کلیدواژه‌ای

ارزان‌ترین راه برای دیدن مشکل، ارسال کلمات خودِ یک ایجنت به یک موتور کلیدواژه‌ای است. آزمون زیر از Openverse استفاده می‌کند، موتور جست‌وجوی رسانه‌ی آزادانه مجوزدار که توسط WordPress.org اداره می‌شود، زیرا API آن عمومی است، نیازی به کلید ندارد، و هرکسی که این را می‌خواند می‌تواند آن را در کمتر از یک دقیقه دوباره اجرا کند. چهار بریف، از نوعی که یک مدل هنگام مصورسازی چیزی که تازه نوشته، می‌نویسد:

openverse_briefs.py — بدون کلید، بدون ثبت‌نام، ۲۰ خط
import json, urllib.request, urllib.parse

BRIEFS = [
  "a woman signing a mortgage document at a kitchen table while a bank"
  " adviser explains the terms, warm morning light",
  "An elderly couple enjoying a peaceful retirement together",
  "a child discovering snow for the first time in a suburban garden",
  "a delivery cyclist waiting at a red light in heavy rain",
]

def count(q):
    u = "https://api.openverse.org/v1/images/?" + urllib.parse.urlencode({"q": q})
    r = urllib.request.Request(u, headers={"User-Agent": "benchmark/1.0"})
    return json.load(urllib.request.urlopen(r))["result_count"]

for b in BRIEFS:
    print(count(b), "|", b[:48])
# ۰ | a woman signing a mortgage document at a kitchen
# ۰ | An elderly couple enjoying a peaceful retirement
# ۰ | a child discovering snow for the first time in a
# ۰ | a delivery cyclist waiting at a red light in hea

چهار بریف، چهار مجموعه‌نتیجه‌ی خالی. حالا هر بریف را به دو کلیدواژه‌ای که یک انسان تایپ می‌کرد کاهش دهید — signing document، elderly couple، child snow، cyclist rain — و هرکدام یک صفحه‌ی کامل از عکس‌ها برمی‌گردانند (API عدد ۲۴۰ را گزارش می‌دهد، جایی که سقف شمارش برای فراخوان‌کنندگان ناشناس است). کاتالوگ عکس‌ها را دارد. این جمله است که کاتالوگ نمی‌تواند تجزیه کند.

بریفی که یک ایجنت واقعاً می‌نویسد موتور کلیدواژه‌ایOpenverse، جمله‌ی کامل موتور کلیدواژه‌ایکاهش‌یافته به ۲ کلیدواژه موتور معناییPexafy، جمله‌ی کامل
«زنی که در حال امضای سند وام مسکن روی میز آشپزخانه است در حالی که یک مشاور بانکی شرایط را توضیح می‌دهد…» ۰ نتیجه ۲۴۰ (سقف) ۱۶ نتیجه · ۱۴۸ میلی‌ثانیه
«یک زوج مسن که در آرامش کنار هم بازنشستگی را سپری می‌کنند» ۰ نتیجه ۲۴۰ (سقف) ۱۶ نتیجه · ۱۳۵ میلی‌ثانیه
«کودکی که برای اولین بار برف را در باغی حومه‌ای کشف می‌کند» ۰ نتیجه ۲۴۰ (سقف) ۱۶ نتیجه · ۱۴۷ میلی‌ثانیه
«پیک تحویل دوچرخه‌سوار که در باران شدید پشت چراغ قرمز منتظر است» ۰ نتیجه ۲۴۰ (سقف) ۱۶ نتیجه · ۱۴۹ میلی‌ثانیه

ستون Pexafy همان چهار جمله است که بدون تغییر به search_photos روی سرور MCP میزبانی‌شده ارسال شده، با تأخیری که خود سرور گزارش داده است. این مقایسه‌ی شکل کوئری است، نه کیفیت کاتالوگ — و کاتالوگ قاطعانه مشکل نیست. نقطه‌ی پایانی آمار خودِ Openverse در روز آزمون ۹۱۵ میلیون تصویر در ۵۲ منبع را گزارش می‌کند، و در کاری که برایش ساخته شده عالی است: جست‌وجوی کلیدواژه‌ای، برای انسان‌ها. هیچ چیز آن خراب نیست. صرفاً هرگز برای فراخوان‌کننده‌ای که با جمله فکر می‌کند طراحی نشده است. چرا تطبیق برچسب روی یک صحنه‌ی توصیف‌شده شکست می‌خورد — و بازیابی معنایی به‌جای آن چه کاری انجام می‌دهد — از سمت خواننده در جست‌وجو با یک جمله به‌جای کلیدواژه‌ها استدلال شده است؛ آنچه اینجا تازه است، اندازه‌گیری است، و اینکه وقتی فراخوان‌کننده یک برنامه است نه یک انسان، این موضوع چه معنایی دارد.

«یک زوج مسن که در آرامش کنار هم بازنشستگی را سپری می‌کنند» · ۱۶ نتیجه در ۱۳۵ میلی‌ثانیه · سه‌تا از آن‌ها
یک کوئری، سه کتابخانه‌ی متفاوت، اعتبارها متصل. هیچ کلمه‌ای در آن جمله یک برچسب نیست: peaceful و together هستند که نیمکت‌ها، باغ‌ها و آب آرام را به‌جای یک پرتره‌ی استوک از دو نفر بالای شصت سال در بالای فهرست قرار می‌دهند.

بازار، تا تاریخ ۱۸ آگوست ۲۰۲۶

بازیابی نیمی از ماجراست. نیمه‌ی دیگر قابلیت دسترسی است: آیا اصلاً یک ایجنت می‌تواند به کاتالوگ برسد، و با چه شرایطی؟ از زمانی که Model Context Protocol به راهی تبدیل شد که دستیارها به سیستم‌های بیرونی متصل می‌شوند — مشخصات فعلی آن، مورخ ۲۸ ژوئیه ۲۰۲۶، پروتکل را به یک هسته‌ی بی‌حالت درخواست/پاسخ منتقل کرد تا سرورها پشت لود بالانسرهای معمولی قرار بگیرند1 — راه صادقانه برای بررسی این بازار این است که به آنچه واقعاً منتشر شده نگاه کنیم، نه آنچه اعلام شده.

ارائه‌دهندگان پولی سنتی همین ماه وارد شدند

Getty Images سرور MCP خود را در تاریخ ۱۲ آگوست ۲۰۲۶، شش روز پیش از این مقاله، راه‌اندازی کرد و جست‌وجو و دانلود محتوای خلاقانه، خبری و آرشیوی را به گردش‌کارهای هوش مصنوعی در دسترس گذاشت.2 این برای تیم‌های سازمانی و سازندگان پلتفرم هدف‌گذاری شده، و صفحه‌ی دسترسی خودش درباره‌ی قیمت ورودی صریح است: شما به یک قرارداد فعال Getty Images نیاز دارید، مانند Premium Access، به‌علاوه پذیرش شرایط Web Service. هیچ ردیف رایگانی وجود ندارد. محتوای Shutterstock نیز از طریق یک سرور MCP در دسترس است — ۲۴ ابزار شامل جست‌وجو، مجموعه‌ها و مجوزدهی — با دانلودهایی که پشت حسابی با اشتراک فعال قفل شده‌اند.3

هر دو حرکت منطقی هستند و هر دو برای یک خریدار خاص هستند. Getty در سال ۲۰۲۵ درآمدی معادل ۹۸۱.۳ میلیون دلار ثبت کرد4 در بازار عکاسی استوکی که برای سال ۲۰۲۶ حدود ۵.۴ میلیارد دلار ارزش‌گذاری شده است5؛ کانکتورهایی که نیازمند قرارداد هستند، آن درآمد را حفظ می‌کنند نه اینکه آن را باز کنند. اگر شما یک بانک یا یک شبکه‌ی پخش هستید، این دقیقاً همان چیزی است که می‌خواهید. اگر شما توسعه‌دهنده‌ای هستید که یک پروژه‌ی جانبی را سیم‌کشی می‌کنید — یا یک ایجنت که نباید متوقف شود و از انسانی بخواهد چیزی را امضا کند — این یک درِ بسته است.

کتابخانه‌های رایگان اصلاً هیچ‌کدام را عرضه نکرده‌اند

Unsplash، Pexels و Pixabay سه کاتالوگی هستند که بیشتر سازندگان به سراغ آن‌ها می‌روند، و هیچ‌کدام سرور MCP رسمی منتشر نمی‌کنند. آنچه به‌جای آن وجود دارد، قفسه‌ای از رَپرهای جامعه‌محور است. ما کل رجیستری رسمی MCP را خزیدیم — ۲۲٬۶۰۷ سرور، ۷۵٬۴۸۷ نسخه‌ی منتشرشده — و هر ورودی که نام یا توضیح آن درباره‌ی جست‌وجوی عکس یا تصویر استوک بود را نگه داشتیم. الگو یکنواخت است:

رجیستری رسمی MCP، ۱۸ آگوست ۲۰۲۶ تعداد این برای یک ایجنت چه معنایی دارد
سرورهای فهرست‌شده در رجیستری، همه‌ی دسته‌بندی‌ها ۲۲٬۶۰۷ کل اکوسیستمی که یک ایجنت می‌تواند از آن ابزار بگیرد
سرورهای منطبق با photo / image / stock / picture و نام کتابخانه‌ها ۱۳۷ بیشتر آن‌ها ویرایشگر، تولیدکننده یا ابزار عکس شخصی هستند، نه جست‌وجو
…که واقعاً عکاسی استوک یا با مجوز رایگان را جست‌وجو می‌کنند ۱۱ کل قفسه‌ی قابل خطاب
…که خود Unsplash، Pexels، Pixabay یا Openverse منتشر کرده‌اند ۰ هرکدام یک رَپر شخص ثالث است؛ یکی در توضیح خودش «غیررسمی» برچسب خورده
…که به‌صورت محلی اجرا می‌شوند و به کلید API شخص ثالث شما نیاز دارند ۷ UNSPLASH_ACCESS_KEY، PEXELS_API_KEY، PIXABAY_API_KEY… یک انسان باید ابتدا هرکدام را به دست آورد
…قابل دسترسی به‌عنوان سرور راه‌دور میزبانی‌شده ۴ هر چهارتا دروازه‌های تک‌منبعی از یک اپراتور شخص ثالث هستند، جلوی همان APIهای کلیدواژه‌ای
ورودی‌های Getty یا Shutterstock ۰ سرورهای آن‌ها وجود دارند، اما خارج از رجیستری عمومی، به دارندگان حساب توزیع می‌شوند
census.py — خزیدن رجیستری پشت آن جدول
import json, urllib.request, urllib.parse

def crawl(term):                      # رجیستری با `nextCursor` صفحه‌بندی می‌شود
    out, cursor = {}, None
    while True:
        p = {"limit": "100", "search": term} | ({"cursor": cursor} if cursor else {})
        d = json.load(urllib.request.urlopen(
            "https://registry.modelcontextprotocol.io/v0/servers?" + urllib.parse.urlencode(p)))
        for e in d["servers"]: out[e["server"]["name"]] = e["server"]
        cursor = (d.get("metadata") or {}).get("nextCursor")
        if not cursor or not d["servers"]: return out

servers = {}
for t in ["photo", "image", "stock", "picture", "unsplash",
          "pexels", "pixabay", "getty", "shutterstock", "openverse"]:
    servers |= crawl(t)

# ۱۳۷ سرور یکتا · remote در برابر local در `server["remotes"]` است
# کلیدهای شخص ثالث لازم در packages[].environmentVariables هستند

هرکدام از آن رَپرها یک کلاینت نازک از همان سه API کلیدواژه‌ای هستند، به این معنا که بنچمارک بالا در مورد همه‌ی آن‌ها صدق می‌کند: ترابری تغییر کرد، بازیابی تغییر نکرد. یک رَپر نمی‌تواند یک ایندکس برچسبی را وادار به فهم یک جمله کند.

بندی که یک ماشین را متوقف می‌کند، سهمیه نیست

سهمیه‌ها و شرایط کتابخانه‌های رایگان در یک واحد مشترک، کنار هم، در مقایسه‌ی API رایگان عکس استوک مقایسه شده‌اند — صف‌های تأیید، فراخوانی اجباری دانلود، الزام کش ۲۴ ساعته، قوانین اعتباردهی. آن مقاله آن‌ها را از دید توسعه‌دهنده‌ای که ارائه‌دهنده انتخاب می‌کند می‌خواند. آن‌ها را دوباره از دید برنامه‌ای بخوانید که باید از آن‌ها اطاعت کند و یک خط پدیدار می‌شود که هیچ ربطی به حجم ندارد:

فیلد کوئری Pixabay فقط ۱۰۰ کاراکتر می‌پذیرد. چهار بریف در بنچمارک بالا به‌طور میانگین ۷۲ کاراکتر هستند، و بریف وام مسکن به ۱۱۴ کاراکتر می‌رسد — این کاملاً رد می‌شود، نه اینکه ضعیف رتبه‌بندی شود. Pexels و Unsplash هیچ محدودیت طولی منتشر نمی‌کنند چون هرگز انتظار نداشتند به آن نیاز باشد: نمونه‌های مستندشده‌ی آن‌ها Ocean، Tigers، Pears هستند. فیلدی که برای دو کلمه اندازه‌گذاری شده، بیانیه‌ای درباره‌ی این است که فراخوان‌کننده انتظار می‌رفت چه کسی باشد، و هیچ مقدار سهمیه‌ای آن را اصلاح نمی‌کند. نقطه‌ی پایانی معنایی که یک ایجنت با آن صحبت می‌کند ۵۰۰ کاراکتر می‌پذیرد، چون بند انتهایی — «…در حالی که یک مشاور بانکی شرایط را توضیح می‌دهد» — بخشی است که بازیابی را خوب می‌کند.

همین خوانش برای فرآیند ورود هم صدق می‌کند. یک ردیف دمو که تنها پس از بررسی اسکرین‌شات‌های اپلیکیشن شما توسط یک انسان به تولید تبدیل می‌شود، محدودیت نرخی نیست که یک ایجنت بتواند از آن عقب‌نشینی کند؛ این مرحله‌ای است که اصلاً نمی‌تواند انجام دهد. Pixabay این نیت را صراحتاً بیان می‌کند — API برای مصرف انسانی مشروع است، و دانلود انبوه خودکار ممنوع است. هیچ‌کدام از این‌ها غیرمعقول نیست: عکاسان کار را رایگان می‌دهند و کسی هزینه‌ی پهنای باند را می‌پردازد. این صرفاً APIای را توصیف می‌کند که فراخوان‌کننده‌اش فرض شده صفحه و جفت دستی دارد.

چهار الزام، و چه کسی آن‌ها را برآورده می‌کند

دو نیمه را کنار هم بگذارید و مشخصات یک لایه‌ی تصویری که یک ایجنت واقعاً می‌تواند از آن استفاده کند، کوتاه و قابل آزمون بیرون می‌آید. این عمداً یک مقایسه‌ی ارائه‌دهندگان نیست — اندازه‌ی کاتالوگ، قیمت‌گذاری و شرایط مجوز در مقاله‌ی مقایسه کنار هم چیده شده‌اند. این چهار مورد فقط درباره‌ی این هستند که آیا یک برنامه اصلاً می‌تواند به عکس‌ها برسد یا نه:

  1. بازیابی معنایی — یک جمله‌ی کامل یک صفحه‌ی رتبه‌بندی‌شده برمی‌گرداند، نه یک مجموعه‌ی خالی.
  2. مجوزهای رایگان، چند منبع — چیزی برای مجوزدهی به‌ازای هر عکس وجود ندارد، و سلیقه‌ی هیچ کتابخانه‌ی منفردی هر صفحه‌ای که منتشر می‌کنید را تعریف نمی‌کند.
  3. یک سرور میزبانی‌شده با ورود مخصوص خودش — راه‌دور، OAuth، بدون پردازش محلی برای نصب و بدون کلید API شخص ثالثی برای چسباندن در فایل پیکربندی.
  4. یک ردیف رایگان که یک ماشین بتواند به‌تنهایی تکمیل کند — بدون بررسی اسکرین‌شات، بدون قرارداد، یک سهمیه‌ی ماهانه و یک محدودیت نرخ در دقیقه که یک ورکر بتواند خود را با آن هماهنگ کند.
تا ۱۸ آگوست ۲۰۲۶ معنایی مجوزهای رایگان، چندمنبعی سرور میزبانی‌شده + OAuth ردیف رایگان خودخدمت
Getty Images MCP جست‌وجوی زبان طبیعی کاتالوگ مجوزدار، به‌ازای هر قرارداد بله، برای دارندگان حساب خیر — قرارداد فعال لازم است
Shutterstock از طریق MCP مبتنی بر کلیدواژه کاتالوگ مجوزدار، اشتراکی بله، با احراز هویت حساب خیر — اشتراک برای دانلود لازم است
رَپرهای Unsplash / Pexels / Pixabay خیر — APIهای کلیدواژه‌ای زیر آن هرکدام تک‌منبعی خیر — پردازش محلی، کلید خودتان وابسته به فرآیند ورود انسانی API میزبان
Openverse خیر — ایندکس کلیدواژه‌ای بله، کاتالوگ CC بسیار گسترده بدون سرور MCP رسمی بله، API باز
Pexafy بله — جملات، تا ۵۰۰ کاراکتر ۹ منبع با مجوز رایگان، بیش از ۹ میلیون عکس بله — mcp.pexafy.com/mcp، OAuth 2.1 بله — 5,000 درخواست در ماه، 20 در دقیقه، بدون کارت

ما Pexafy را می‌سازیم، پس آن ردیف آخر را با تردیدی که سزاوارش است بخوانید — و سپس آن را بررسی کنید: سرشماری رجیستری در یک اسکریپت قابل بازتولید است، شرایط دسترسی Getty و Shutterstock در صفحات خودشان هستند، و محدودیت‌های سه API عکس در مستندات خودشان هستند، همه در پایین لینک شده‌اند. ادعا محدود و قابل ابطال است: در تاریخ ۱۸ آگوست ۲۰۲۶ ما نتوانستیم سرویس دومی پیدا کنیم که هر چهار مورد را برآورده کند. اگر یکی را می‌شناسید، آن را به این جدول اضافه خواهیم کرد — نکته‌ی نوشتن این الزامات این است که هرکسی می‌تواند آن‌ها را در برابر هر محصولی، از جمله محصول خودمان، اجرا کند.

یک سرور تصویری خوب روی MCP چه کاری انجام می‌دهد

یک کانکتور یک نقطه‌ی پایانی REST با پوششی جدید نیست. دو کاربرد این لایه در جای دیگری نوشته شده و اینجا تکرار نمی‌شود — مصورسازی یک پیش‌نویس، در مقاله‌ی پایپ‌لاین، و حفظ انسجام بصری یک سری طولانی، در مقاله‌ی مربوط به حجم. آنچه به زیرساخت تعلق دارد، چیزی است که هر دو به آن وابسته‌اند و هیچ‌کدام نمی‌تواند بعداً اضافه کند: سه تصمیم سمت‌سرور، یک‌بار گرفته‌شده، برای هر ایجنتی که تابه‌حال متصل شده.

۱. اشیائی برگردانید که یک ایجنت بتواند درباره‌ی آن‌ها استدلال کند. هر آنچه ابزار برمی‌گرداند، همه‌ی چیزی است که مدل می‌داند — نمی‌تواند یک شبکه‌ی تصویری را اسکن کند. تفاوت بین دو شکل زیر، تفاوت بین دستیاری است که درباره‌ی عکس‌ها استدلال می‌کند و دستیاری که فقط لینک منتقل می‌کند:

همان عکس، به‌عنوان دو نتیجه‌ی ابزاری متفاوت
# رَپر کلیدواژه‌ای معمولی: ایجنت باید واکشی کند و نگاه کند، یا حدس بزند
[{ "url": "https://…/photo-8795398.jpeg" }, { "url": "https://…/366611.jpg" }]

# یک نتیجه، همان‌طور که برگردانده می‌شود — اینجا کوتاه شده، چیزی اضافه نشده
{
  "rank": 1,                       // دسته‌ای که یک انسان استفاده می‌کند: "بیشتر شبیه #1"
  "photo_id": "019e14d9-e821-…",   // چیزی که get_similar_photos می‌گیرد
  "width": 6424, "height": 4283, "orientation": "landscape",
  "color_hex": "#918872", "blur_hash": "LPI#Px?aDikCGwW?M{kD-VR*s.fl",
  "source": "Pexels", "license_type": "free",
  "alt_description": "Older couple sits together on wooden bench in a park",
  "attribution": { "plain": "Photo by Anastasia Shuraeva on Pexels", "html": "…" },
  "urls": { "thumb": "…", "small": "…", "regular": "…", "large": "…" }
}

با شکل دوم یک ایجنت می‌تواند بگوید «#۳ عمودی است، اسلات اصلی شما را خراب می‌کند»، یک عکاس تکراری را حذف کند، خط اعتباردهی را تولید کند، و به قالب شما یک جفت width/height بدهد که تغییر چیدمان را از بین می‌برد — بدون واکشی حتی یک عکس. با شکل اول، هرکدام از این تصمیمات یک حدس یا یک رفت‌وبرگشت است.

۲. نتایج را شماره‌گذاری کنید، تا یک شخص بتواند اشاره کند. نتایج به‌صورت رتبه‌بندی‌شده #1, #2, #3… بازمی‌گردند، که این همان روشی است که هرکسی در مکالمه به یک عکس اشاره می‌کند — «بیشتر شبیه #۳» — بدون هیچ شناسه‌ای که به‌صورت دستی کپی شده باشد. در کلاینت‌هایی که از MCP Apps پشتیبانی می‌کنند، تصاویر بندانگشتی به‌صورت درون‌خطی رندر می‌شوند، و باز کردن یکی متادیتایی را نشان می‌دهد که از قبل در نتیجه‌ی ابزار بوده، بدون فراخوانی اضافه.

۳. فقط‌خواندنی بمانید، و درباره‌اش صریح باشید. سه ابزار، بدون دامنه‌ی نوشتن، بدون تغییر حساب. یکی از آن‌ها هیچ معادل کلیدواژه‌ای در هیچ جا ندارد: search_photos_by_image یک تصویر مرجع می‌گیرد — تصویر شاخص موجود یک کلاینت، اسکرین‌شاتی که در چت چسبانده شده — به‌علاوه یک جمله‌ی اختیاری برای خم کردن آن («شبیه این، اما در شب»). هیچ فیلدی در یک API مبتنی بر تطبیق برچسب وجود ندارد که آن درخواست حتی بتواند در آن تایپ شود. و ایجنتی که نمی‌تواند چیزی را تغییر دهد، ایجنتی است که بدترین پیامدش یک مجموعه‌ی نتیجه‌ی خالی است نه یک تیکت پشتیبانی.

دو سطح، و کدام‌یک را می‌خواهید

دقیقاً دو راه ورود وجود دارد، و انتخاب درباره‌ی این است که چه کسی در حلقه است نه درباره‌ی قابلیت‌ها — ابزارها و کاتالوگ در هر دو یکسان هستند.

کانکتور، وقتی یک شخص در حلقه است. یک URL، https://mcp.pexafy.com/mcp، یک‌بار در تنظیمات کانکتور یک دستیار اضافه می‌شود؛ ورود در یک پنجره‌ی مرورگر اتفاق می‌افتد و کلاینت اعتبارنامه‌ی خودش را دریافت می‌کند، پس هیچ کلیدی برای چسباندن در یک فایل پیکربندی وجود ندارد و هیچ‌کدام برای چرخش بعدی. کلاینت‌هایی که OAuth را پیاده‌سازی نمی‌کنند، یک کلید API Pexafy را به‌عنوان توکن حامل در برابر همان نقطه‌ی پایانی ارسال می‌کنند — که این همان چیزی است که کانکتور را از یک کار cron روی سرور بیلد قابل‌استفاده می‌کند، جایی که هیچ‌کس نیست تا روی «Allow» کلیک کند. سیم‌کشی مرحله‌به‌مرحله برای Claude، ChatGPT و یک فایل پیکربندی ناوگان در مقاله‌ی پایپ‌لاین است؛ آن تغییر نکرده است.

API HTTP، وقتی کسی نیست. یک کار دسته‌ای که یک استخر را برای ۸۰۰ خوشه‌ی موضوعی پر می‌کند نباید وانمود کند که یک کلاینت چت است: همان حساب، همان کلید، HTTP ساده، ۱۰۰ نتیجه در هر فراخوانی. قوانین سرعت‌دهی که همراه آن است — هدرهای محدودیت نرخ، اینکه چرا یک 429 در دقیقه ارزش تلاش دوباره را دارد و یک 429 سهمیه‌ی ماهانه ندارد، هزینه‌ی یک ورکر در حجم — به مقاله‌ی مصورسازی در مقیاس تعلق دارد، جایی که آن ورکر به‌طور کامل نوشته شده است.

نکته‌ای که ارزش نگه داشتن در اینجا را دارد باریک‌تر است، و همان چیزی است که مطالعه‌ی بازار حول آن می‌چرخد: هر دو سطح در همان روزی که نوشته شده‌اند، بدون هیچ صف و بدون قراردادی، توسط یک برنامه قابل دسترسی هستند.

این چه چیزی را حل نمی‌کند

فهرستی صادقانه، چون هرکدام از این‌ها به کسی هزینه‌ی یک رول‌بک را تحمیل کرده است.

  • مجوز همچنان بر تصویر حاکم است. اعتباردهی توسط شرایط API Pexafy الزامی نیست و هر نتیجه یک رشته‌ی اعتباردهی آماده برای رندر ارسال می‌کند — اما مجوزی که توسط کتابخانه‌ی اصلی الصاق شده، در مورد استفاده‌ی شما از آن عکس اعمال می‌شود. اعتبار را به‌صورت خودکار رندر کنید؛ ارزان‌تر از حسابرسی بعدی است.
  • کاتالوگ‌های مجوز رایگان آرشیوهای خبری نیستند. بدون خبر، بدون ورزش، بدون برندهای شناخته‌شده یا افراد عمومی به تقاضا. اگر صفحه‌ی شما به عکسی از یک رویداد یا شخص خاص نیاز دارد، همان جایی است که ارائه‌دهندگان سنتی مجوزدار برای آن هستند، و کانکتورهای آن‌ها اکنون وجود دارند.
  • این بازیابی است، و فقط بازیابی. نمودارها، چارت‌ها و اسکرین‌شات‌ها از کد رندر می‌شوند، نه جست‌وجو؛ حذف تکرار در صفحات شما یک ستون در پایگاه داده‌ی شماست، نه یک پارامتر روی نقطه‌ی پایانی؛ و هیچ عکسی یک صفحه‌ی نازک را رتبه‌بندی نمی‌کند — سیاست‌های اسپم گوگل سوءاستفاده‌ی محتوای مقیاس‌پذیر را چه صفحات مصور باشند چه نباشند، یکسان در نظر می‌گیرند.6 آن سه مورد مشکلات پایپ‌لاین با پاسخ‌های پایپ‌لاین هستند، که در مقاله‌ی پایپ‌لاین و مقاله‌ی مربوط به حجم کار شده‌اند.

از کجا شروع کنیم

  1. بنچمارک را دوباره اجرا کنید. بیست خط، بدون کلید. هر API تصویری که امروز استفاده می‌کنید، سه تا از بریف‌های ایجنت خودتان را کلمه‌به‌کلمه به آن بفرستید و مجموعه‌نتیجه‌های خالی را بشمارید.
  2. یک کانکتور را متصل کنید به دستیاری که همین حالا استفاده می‌کنید و در یک جمله از آن یک عکسی بخواهید که واقعاً این هفته نیاز دارید. این تمام ارزیابی است.
  3. بریف‌ها را به داخل ایجنت منتقل کنید — یک صحنه به‌ازای هر اسلات، نوشته‌شده از پیش‌نویس، هرگز از عنوان.
  4. ستون photo_id را اضافه کنید قبل از اینکه چیزی را در حجم منتشر کنید.
  5. آن را روی ردیف رایگان اجرا کنید — 5,000 جست‌وجو در ماه با 20 در دقیقه تا زمانی که یک پنجره‌ی بیلد، نه یک صورت‌حساب، شما را مجبور به ارتقا کند.

منابع و پانویس‌ها

1 مشخصات Model Context Protocol مورخ ۲۸ ژوئیه ۲۰۲۶: هسته‌ی بی‌حالت درخواست/پاسخ، اعتبارسنجی صادرکننده طبق RFC 9207، اسناد متادیتای شناسه‌ی کلاینت جایگزین ثبت‌نام پویای کلاینت، و نام‌های متد/ابزار حمل‌شده در هدرهای HTTP برای مسیریابی گیت‌وی.

2 اتاق خبر Getty Images، ۱۲ آگوست ۲۰۲۶ — «Getty Images Launches MCP Server to Connect Creative and Editorial Content to AI Workflows and Products». صفحه‌ی دسترسی بیان می‌کند که استفاده نیازمند یک قرارداد فعال Getty Images است، مانند Premium Access، و پذیرش شرایط Web Service.

3 کاتالوگ Shutterstock از طریق یک سرور MCP در دسترس است که ۲۴ ابزار (جست‌وجو، مجموعه‌ها، مجوزدهی) ارائه می‌دهد، توزیع‌شده از طریق یک پلتفرم MCP شخص ثالث به‌جای اعلام‌شده روی پورتال توسعه‌دهندگان خودِ Shutterstock در زمان نگارش؛ مجوزدهی و دانلود نیازمند حسابی با اشتراک فعال است.

4 Getty Images Holdings، نتایج کامل سال ۲۰۲۵ (گزارش‌شده در ۱۶ مارس ۲۰۲۶): درآمد ۹۸۱.۳ میلیون دلار، افزایش ۴.۵٪ نسبت به سال قبل.

5 Mordor Intelligence، بازار عکاسی استوک: ۵.۴۴ میلیارد دلار در ۲۰۲۶، با نرخ رشد مرکب سالانه‌ی ۶.۸۶٪. برآوردهای اندازه‌ی بازار بسته به روش‌شناسی متفاوت هستند؛ اینجا فقط برای دادن مقیاس بزرگی نقل شده است.

6 سیاست‌های اسپم جست‌وجوی گوگل — سوءاستفاده‌ی محتوای مقیاس‌پذیر: تولید صفحات زیاد که عمدتاً برای دستکاری رتبه‌بندی‌ها هستند و ارزش کمی برای کاربران دارند، چه از طریق خودکارسازی، تلاش انسانی یا ترکیبی از این دو ایجاد شده باشند.

پرسش‌های پرتکرار

چرا APIهای عکس استوک وقتی یک ایجنت هوش مصنوعی جستجو می‌کند، چیزی برنمی‌گردانند؟
چون ایجنت یک جمله می‌فرستد و API برچسب‌ها را ایندکس می‌کند. وقتی عیناً به یک API تصویر کلیدواژه‌ای فرستاده شد، چهار درخواست به سبک ایجنت — برای مثال «یک زوج مسن که در کنار هم از بازنشستگی آرامی لذت می‌برند» — هر کدام صفر نتیجه برگرداندند؛ وقتی به دو کلیدواژه کوتاه شد (elderly couple)، همان کاتالوگ صدها نتیجه داد. Pixabay طول کوئری را به ۱۰۰ کاراکتر محدود می‌کند، که بیشتر درخواست‌های ایجنتی به‌تنهایی از آن فراتر می‌روند. یک موتور معنایی کل جمله را embed می‌کند، بنابراین عباراتی مثل «خسته» یا «شب» رتبه‌بندی را تغییر می‌دهند نه اینکه تطبیق را بشکنند.
آیا سرور MCP رسمی برای Unsplash، Pexels یا Pixabay وجود دارد؟
خیر. یک خزش کامل از رجیستری رسمی MCP در ۱۸ اوت ۲۰۲۶ نشان داد ۱۱ سرور وجود دارد که عکس استوک یا رایگان جستجو می‌کنند، و هیچ‌کدام توسط خود Unsplash، Pexels، Pixabay یا Openverse منتشر نشده‌اند — یکی از رَپرها حتی خودش را «Unofficial» برچسب می‌زند. هفت‌تا به‌صورت محلی روی stdio اجرا می‌شوند و باید کلید API خودِ آن کتابخانه را وارد کنید؛ چهار سرور از راه دور، دروازه‌های تک‌منبعی هستند که توسط شخص ثالثی جلوی همان APIهای کلیدواژه‌ای اداره می‌شوند.
سرور MCP گتی ایمیجز چقدر هزینه دارد و آیا هرکسی می‌تواند از آن استفاده کند؟
Getty سرور MCP خود را در ۱۲ اوت ۲۰۲۶ برای توسعه‌دهندگان، تیم‌های سازمانی و سازندگان پلتفرم‌های هوش مصنوعی راه‌اندازی کرد که جستجو و دانلود خلاقانه، خبری و آرشیوی را پوشش می‌دهد. دسترسی نیازمند یک قرارداد فعال Getty Images است، مانند Premium Access، به‌علاوه پذیرش شرایط Web Service؛ هیچ سطح رایگانی ارائه نمی‌شود و قیمت‌گذاری توسط یک نماینده حساب انجام می‌شود. محتوای Shutterstock نیز به‌طور مشابه از طریق MCP در دسترس است، با مجوزدهی که پشت یک اشتراک فعال قفل شده.
یک API جستجوی تصویر برای اینکه توسط یک ایجنت هوش مصنوعی قابل استفاده باشد به چه چیزی نیاز دارد؟
چهار چیز. بازیابی معنایی، به‌طوری که یک جمله کامل یک صفحه رتبه‌بندی‌شده برگرداند نه یک مجموعه خالی. نتایجی به‌اندازه کافی غنی برای استدلال — id، اندازه‌ها، ابعاد، جهت‌گیری، رنگ، مجوز، عکاس، credit آماده — چون هرچه ابزار برمی‌گرداند تمام چیزی است که ایجنت می‌داند. یک سرور میزبانی‌شده با ورود اختصاصی خودش، به‌طوری که هیچ فرآیند محلی برای نصب و هیچ کلید شخص ثالثی برای چسباندن وجود نداشته باشد. و یک سطح رایگان که یک ماشین بتواند به‌تنهایی آن را تکمیل کند: بدون بررسی اسکرین‌شات، بدون قرارداد، یک سهمیه ماهانه به‌علاوه یک محدودیت نرخ در دقیقه که یک worker بتواند خودش با آن هماهنگ شود.
آیا یک job در CI یا یک worker headless می‌تواند از یک سرور تصویر MCP که به OAuth نیاز دارد استفاده کند؟
بستگی به سرور دارد، و ارزش دارد قبل از ساختن روی آن بررسی شود. سرور Pexafy در آدرس mcp.pexafy.com/mcp دو‌حالته است: ورود از طریق مرورگر برای کلاینت‌های تعاملی، و همان endpoint که یک کلید API پکسافای را به‌صورت Authorization: Bearer <key> یا x-api-key برای کلاینت‌هایی که هیچ فرآیند OAuth پیاده‌سازی نمی‌کنند می‌پذیرد — همین چیزی است که آن را از یک cron job یا یک build runner قابل‌استفاده می‌کند، جایی که کسی نمی‌تواند روی «Allow» کلیک کند. سه ابزار فقط-خواندنی هستند، بنابراین یک کلید runner دزدیده‌شده نمی‌تواند یک حساب را تغییر دهد. سروری که فقط OAuth تعاملی را می‌فهمد اصلاً نمی‌تواند به‌صورت headless اجرا شود.
چطور می‌توانم بفهمم کدام سرورهای MCP تصویر وجود دارند و هرکدام چه چیزی نیاز دارد؟
رجیستری رسمی را کوئری بگیرید و دو فیلد را بخوانید. GET registry.modelcontextprotocol.io/v0/servers?search=photo&limit=100 سرورهایی که با یک عبارت مطابقت دارند را برمی‌گرداند؛ با مقدار nextCursor در metadata صفحه‌بندی کنید (به camel case توجه کنید — next_cursor بی‌سروصدا فقط یک صفحه برمی‌گرداند). در هر ورودی، remotes به شما می‌گوید آیا سرور میزبانی‌شده است یا یک فرآیند محلی، و packages[].environmentVariables کلیدهای API شخص ثالثی که باید خودتان تهیه کنید را فهرست می‌کند. تکرار این کار برای photo، image، stock و نام‌های کتابخانه‌ها در ۱۸ اوت ۲۰۲۶ در مجموع ۲۲٬۶۰۷ سرور را برگرداند، که ۱۱ تای آن‌ها جستجوی عکس استوک انجام می‌دهند.

دست از شکار کلمات کلیدی بردارید. آنچه را منظور دارید توصیف کنید.

9M+ تصویر رایگان را بر اساس معنا جست‌وجو کنید — به هر زبانی، در کمتر از ۱۰۰ میلی‌ثانیه.