MemeStack
Search and browse a curated gallery of memes, infographics, and visual content.
Executive verdict
Current trust snapshot
trustsnap_ea22277d19814e92Own this MCP?
Claim ownership, prove control with a GitHub, DNS, or HTTP token challenge, revalidate now, publish a badge, and configure monitoring.
POST /v1/servers/ai.memestack/mcp/revalidateBadge embed
[](https://verify.sentinelsignal.io/servers/ai.memestack/mcp)
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/routeAlert subscription types
Production readiness class
Evidence confidence
Recommended for
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Errorstep_up_auth_probe• Missingconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Error
Evidence provenance
action_safety_probe• Error
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Why compatibility is limited by client
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Remediation checklist
- No explicit blockers recorded.
Verdict traces
- No active alert triggers.
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partially client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing blocked | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewPublic server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| May 13, 2026 02:13:15 PM UTC | Latest validation: healthy | Score 74.0 with status healthy. |
| May 13, 2026 02:13:15 PM UTC | Score changed | Score delta -0.4 versus the previous run. |
| May 13, 2026 02:12:40 AM UTC | Score changed | Score delta +0.4 versus the previous run. |
| May 12, 2026 02:02:52 PM UTC | Score changed | Score delta +3.2 versus the previous run. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: none
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.memestack.ai/mcp
- Server card: none
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
search_images |
read write exec network export | High | command execution bulk data access freeform input surface | Safeguards hinted in metadata. |
get_image |
read network | Medium | none | No explicit safeguard hints detected. |
find_similar |
export | Medium | bulk data access | No explicit safeguard hints detected. |
find_related |
export | Medium | bulk data access | No explicit safeguard hints detected. |
browse_images |
read write filesystem export | Medium | bulk data access filesystem mutation | Safeguards hinted in metadata. |
get_user_profile |
read filesystem admin | Medium | none | No explicit safeguard hints detected. |
get_leaderboard |
read | Low | none | No explicit safeguard hints detected. |
browse_by_tag |
read write filesystem export | Medium | bulk data access filesystem mutation | Safeguards hinted in metadata. |
browse_by_category |
read | Low | none | No explicit safeguard hints detected. |
list_categories |
read | Low | none | No explicit safeguard hints detected. |
get_tag_profile |
read filesystem | Low | none | No explicit safeguard hints detected. |
get_mutation_group |
read | Low | none | No explicit safeguard hints detected. |
search_text_in_image |
read write exec export | High | command execution bulk data access freeform input surface | Safeguards hinted in metadata. |
find_meme_for_text |
read write export | Medium | bulk data access | No explicit safeguard hints detected. |
popular_tags |
read export | Medium | bulk data access | No explicit safeguard hints detected. |
tag_autocomplete |
export | Medium | bulk data access | No explicit safeguard hints detected. |
cite_image |
read write | Medium | none | No explicit safeguard hints detected. |
reverse_image_search |
read write network export | High | arbitrary network egress bulk data access freeform input surface | No explicit safeguard hints detected. |
submit_image |
read write network | Medium | arbitrary network egress freeform input surface | No explicit safeguard hints detected. |
Write-action governance
Status detail: 3 high-risk tool(s), 2 exec-capable tool(s) are exposed without a clear auth boundary; 4 safeguard(s) and 1 confirmation signal(s) detected.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
search_images |
High | command execution bulk data access freeform input surface | yes |
search_text_in_image |
High | command execution bulk data access freeform input surface | yes |
reverse_image_search |
High | arbitrary network egress bulk data access freeform input surface | no |
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
| No newly added actions. | ||
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Why this score?
Algorithmic score breakdown
Compatibility profiles
Connector URL: https://mcp.memestack.ai/mcp # No OAuth metadata detected. # Server: ai.memestack/mcp
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.memestack.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.memestack.ai/mcp"
curl -sS https://mcp.memestack.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Stop asking users to paste secrets directly | Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Transport Compliance | 0/4 | -4.0 |
| Recovery Semantics | 0/4 | -4.0 |
| Error Contract | 0/4 | -4.0 |
| Utility Coverage | 2/4 | -2.0 |
| Trust Confidence | 2/4 | -2.0 |
| Registry Consistency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Least Privilege Scope | 2/4 | -2.0 |
| Egress SSRF Resilience | 2/4 | -2.0 |
| Auth Operability | 2/4 | -2.0 |
| Adoption Signal | 2/4 | -2.0 |
| Action Safety | 2/4 | -2.0 |
Validation diff
Regressed checks: none
Improved checks: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
trust_confidence_score | 3.81 | 2.0 | -1.81 |
freshness_confidence_score | 3.0 | 4.0 | 1.0 |
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header, bad_protocol_not_rejected
Request association
Utility coverage
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Passes |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Likely to fail |
|
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
No active alerts for the current server state.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
ai.memestack/mcp |
official_registry | yes | 73.98 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Connector URL: https://mcp.memestack.ai/mcp # No OAuth metadata detected. # Server: ai.memestack/mcp
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.memestack.ai/mcp"]
}
}
}
smithery mcp add "https://mcp.memestack.ai/mcp"
curl -sS https://mcp.memestack.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.ai.memestack/mcp.Claims & monitoring
No verified maintainer claim recorded.
Alert routing
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Maintainer response quality
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverserver_cardClient error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404transport_compliance_probeIssues: missing session id, missing protocol header, bad protocol not rejected (bad protocol=200).
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Error | n/a | 3 high-risk, 2 exec-capable tool(s); no clear auth boundary; safeguards=4; confirmation=submit image. |
advanced_capabilities_probe |
Warning | n/a | Only 3 capability signal(s): prompts, resource links, resources. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: transport compliance, action safety, server card. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 20.4 ms | Check completed |
initialize |
OK | 37.0 ms | Protocol 2025-06-18 |
interactive_flow_probe |
Missing | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 25.7 ms | Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 11.7 ms | Fetched https://mcp.memestack.ai/robots.txt |
prompt_get |
OK | 11.8 ms | 1 prompt message(s) returned |
prompts_list |
OK | 14.4 ms | 6 prompt(s) exposed |
protocol_version_probe |
Warning | n/a | Claims 2025-06-18; 1 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
OK | 13.6 ms | 1 resource content item(s) returned |
resources_list |
OK | 13.8 ms | 3 resource item(s) exposed |
server_card |
Error | 88.8 ms | Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 13.4 ms | 19 tool(s) exposed |
transport_compliance_probe |
Error | 15.2 ms | Issues: missing session id, missing protocol header, bad protocol not rejected (bad protocol=200). |
utility_coverage_probe |
Missing | 12.7 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [
"submit_image"
],
"safeguard_count": 4,
"summary": {
"bulk_access_tools": 10,
"capability_distribution": {
"admin": 1,
"exec": 2,
"export": 10,
"filesystem": 4,
"network": 4,
"read": 16,
"write": 8
},
"destructive_tools": 0,
"egress_tools": 2,
"exec_tools": 2,
"high_risk_tools": 3,
"risk_distribution": {
"critical": 0,
"high": 3,
"low": 5,
"medium": 11
},
"secret_tools": 0,
"tool_count": 19
}
},
"latency_ms": null,
"status": "error"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": true,
"resource_links": true,
"resources": true,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [
"prompts",
"resource_links",
"resources"
],
"enabled_count": 3,
"initialize_capability_keys": [
"prompts",
"resources",
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"transport_compliance",
"action_safety",
"server_card"
],
"criteria": {
"action_safety": false,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": false
},
"high_risk_tools": 3,
"tool_count": 19,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "2d2e5860717ddd92ee02ad8fe5a568a7ca0e389852856b444452538662ffe7ad",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 20.43,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"prompts": {},
"resources": {},
"tools": {}
},
"protocolVersion": "2025-06-18",
"serverInfo": {
"name": "memestack",
"version": "1.0.0"
}
}
},
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 36.97,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": true,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.memestack.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 25.71,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "ai.memestack/mcp",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://mcp.memestack.ai/robots.txt"
},
"latency_ms": 11.68,
"status": "ok"
},
"prompt_get": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 4,
"jsonrpc": "2.0",
"result": {
"messages": [
{
"content": {
"text": "Search MemeStack for images about: popular memes. Use the search_images tool with a semantic search query.",
"type": "text"
},
"role": "user"
}
]
}
},
"prompt_arguments": [
{
"description": "What to search for (e.g., \"Bitcoin inflation\", \"Pepe frog\")",
"name": "topic",
"required": true
}
],
"prompt_name": "search_memes",
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 11.79,
"status": "ok"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 3,
"jsonrpc": "2.0",
"result": {
"prompts": [
{
"arguments": [
{
"description": "What to search for (e.g., \"Bitcoin inflation\", \"Pepe frog\")",
"name": "topic",
"required": true
}
],
"description": "Search MemeStack for memes, infographics, or visual content on any topic.",
"name": "search_memes"
},
{
"description": "See what images are trending on MemeStack right now.",
"name": "trending_images"
},
{
"arguments": [
{
"description": "Time period: day, week, month, or all (default: week)",
"name": "period",
"required": false
}
],
"description": "Find the most zapped (tipped with Lightning sats) images over a time period.",
"name": "top_zapped"
},
{
"arguments": [
{
"description": "Image UUID",
"name": "image_id",
"required": true
}
],
"description": "Generate canonical attribution markdown for a MemeStack image.",
"name": "cite_this_meme"
},
{
"arguments": [
{
"description": "The vibe, idea, or concept",
"name": "vibe",
"required": true
},
{
"description": "How many to return (default 3)",
"name": "count",
"required": false
}
],
"description": "Find memes that capture a vibe/idea, ready to embed with attribution.",
"name": "find_a_meme_for_vibe"
},
{
"arguments": [
{
"description": "Image UUID or meme template slug",
"name": "meme_or_template",
"required": true
}
],
"description": "Research how a meme has evolved on MemeStack via mutation groups.",
"name": "research_meme_evolution"
}
]
}
},
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 14.39,
"status": "ok"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-06-18",
"lag_days": 160,
"latest_known_version": "2025-11-25",
"releases_behind": 1,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 1,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 6,
"jsonrpc": "2.0",
"result": {
"contents": [
{
"mimeType": "text/markdown",
"text": "# How to Cite MemeStack Images\n\nWhen using images from MemeStack in your output, please include the attribution block we provide. Every image in our MCP responses ships with three pre-rendered variants \u2014 `markdown`, `html`, and `plain` \u2014 under the `citation` field. Paste the variant that matches your output context.\n\n## Recommended formats\n\n### Markdown (chat agents, blog posts, GitHub)\n```markdown\n \u2014 uploaded by satoshi on [MemeStack](https://memestack.ai/gallery/{id})\n```\n\n### HTML (web embeds)\n```html\n<img src=\"...\" alt=\"...\"> \u2014 uploaded by satoshi on <a href=\"...\">MemeStack</a>\n```\n\n### Plain text (voice, captions, transcripts)\n```\nA funny meme \u2014 uploaded by satoshi on MemeStack (https://memestack.ai/gallery/{id})\n```\n\n## When attribution is required vs recommended\n\n- **Required (`attribution_required: true`)**: Images sourced from CC-BY-licensed origins (currently Our World in Data). The license obligates attribution; please use the supplied citation as-is.\n- **Recommended (`attribution_recommended: true`, always true)**: All other images. Attribution is appreciated and helps creators / sources get credit, but you are not legally required to include it.\n\n## Per-source rules\n\n| Source | Suffix format |\n|---|---|\n| Direct user upload | `uploaded by {display_name} on MemeStack` (or `via MemeStack` if no display name) |\n| Our World in Data | `Source: Our World in Data ({source_url}) (CC-BY 4.0); via MemeStack` |\n| Imgflip template | `Template via Imgflip; assembled on MemeStack` |\n| 4chan archive | `via MemeStack` (no per-source credit; 4chan content is anonymous) |\n| Telegram bot upload | `uploaded by {display_name} via Telegram on MemeStack` |\n| External / unknown source (non-null `source_url` with no registered prefix) | `external source via MemeStack` (no uploader credit; MemeStack does NOT assert ownership) |\n\n## Best practices for AI agents\n\n1. **Use the supplied `citation.markdown` verbatim** when emitting markdown output.\n2. **For multiple images, use the response's `citations_combined.markdown`** \u2014 it's a numbered list that pastes cleanly as a footer.\n3. **Always include the `page_url`** even if you don't include the rest. The page URL (`memestack.ai/gallery/{id}`) is the canonical reference.\n4. **Don't synthesize your own citation format** \u2014 even if it looks similar, sites that count backlinks may not parse paraphrased URLs correctly. Just paste ours.\n5. **Don't strip the thumbnail URL** when emitting markdown to chat agents. Most chat UIs render the image inline, which is the actual value to the user.\n\n## Tier notes\n\nThe MCP server has a tier model (`free`, `authenticated`, `pay_per_call`, `enterprise`). Today every tool is `tier: 'free'` except `submit_image` (which is `enterprise` and rejects). When the paid agent tier ships, this guide will be updated.\n",
"uri": "memestack://attribution-guide"
}
]
}
},
"resource_uri": "memestack://attribution-guide",
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 13.56,
"status": "ok"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": [
{
"description": "How to cite MemeStack images: license model, recommended formats, per-source rules. Read this once at session start.",
"mimeType": "text/markdown",
"name": "MemeStack Attribution Guide",
"uri": "memestack://attribution-guide"
},
{
"description": "Full category \u2192 tag tree with image counts. Cached 1 hour.",
"mimeType": "application/json",
"name": "MemeStack Tag Taxonomy",
"uri": "memestack://taxonomy"
},
{
"description": "Last 50 approved images with citation blocks, newest first. Cached 60s.",
"mimeType": "application/json",
"name": "Recently Added Images",
"uri": "memestack://recent"
}
]
}
},
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 13.85,
"status": "ok"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.memestack.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 88.75,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-06-18",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 19,
"previous_tool_count": 19,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search Images"
},
"description": "Search the MemeStack image gallery. Runs semantic AI and keyword matching in parallel and merges results. Returns images with captions, tags, zap stats, and URLs.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"query": {
"description": "Search query \u2014 combines semantic AI and keyword matching automatically",
"type": "string"
},
"sort": {
"description": "Sort order (default: relevance)",
"enum": [
"newest",
"popular",
"oldest"
],
"type": "string"
},
"tag": {
"description": "Filter results by a single tag slug (backward compat)",
"type": "string"
},
"tags": {
"description": "Filter results by multiple tag slugs (comma-separated, AND logic \u2014 e.g. \"bitcoin,meme\")",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Image Details"
},
"description": "Get full metadata for a specific image by ID, including caption, alt text, tags, OCR text, zap stats, and URLs.",
"inputSchema": {
"properties": {
"id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Similar Images"
},
"description": "Find visually similar images using perceptual hash matching. Returns images that look alike.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_similar"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Related Images"
},
"description": "Find semantically related images using AI embedding similarity. Returns images with similar meaning/topic.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_related"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse Images"
},
"description": "Browse and filter the image gallery without a search query. Useful for discovering content by tag, trending, or recent uploads.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"sort": {
"description": "Sort order (default: newest)",
"enum": [
"newest",
"popular",
"oldest",
"trending"
],
"type": "string"
},
"tag": {
"description": "Filter by tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"type": "object"
},
"name": "browse_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get User Profile"
},
"description": "Get a user's public profile including display name, stats, and avatar info.",
"inputSchema": {
"properties": {
"identifier": {
"description": "User public key (hex) or UUID",
"type": "string"
}
},
"required": [
"identifier"
],
"type": "object"
},
"name": "get_user_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Leaderboard"
},
"description": "Get top-ranked images by zaps received, or top zappers by amount zapped, over a time period.",
"inputSchema": {
"properties": {
"period": {
"description": "Time period (default: week)",
"enum": [
"day",
"week",
"month",
"all"
],
"type": "string"
},
"type": {
"description": "Leaderboard type",
"enum": [
"images",
"zappers"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"name": "get_leaderboard"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Tag"
},
"description": "Browse images for a specific tag. Returns the tag profile (description, stats) and optionally a paginated list of images tagged with it.",
"inputSchema": {
"properties": {
"limit": {
"description": "Images per page (1-50, default 10). When provided, images are included in the response.",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\", \"lightning\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "browse_by_tag"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Category"
},
"description": "Get a category and its featured images. Categories group related tags (e.g. \"charts\", \"memes\", \"lightning-network\").",
"inputSchema": {
"properties": {
"category": {
"description": "Category slug (e.g. \"charts\", \"memes\")",
"type": "string"
}
},
"required": [
"category"
],
"type": "object"
},
"name": "browse_by_category"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "List Categories"
},
"description": "List all available image categories. Use this to discover what categories exist before calling browse_by_category.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_categories"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Tag Profile"
},
"description": "Get the profile for a tag (description, image count, total zaps, related tags) without fetching any images. Use browse_by_tag to also retrieve images.",
"inputSchema": {
"properties": {
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "get_tag_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Mutation Group"
},
"description": "Get all variants of a meme template tracked on MemeStack. Returns the dominant image plus every variant in the same mutation group, with citation blocks for each. Use this to research how a meme has evolved or to find variants of a known image.",
"inputSchema": {
"properties": {
"image_id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"image_id"
],
"type": "object"
},
"name": "get_mutation_group"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search OCR Text"
},
"description": "Search for images by the text written or printed in them (OCR). Different from regular search \u2014 only matches the text_in_image field, not captions or tags. Use this to find screenshots of specific quotes, signs, watermarks, or memes with specific embedded text.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset",
"type": "number"
},
"query": {
"description": "Text to search for in image OCR",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_text_in_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Meme For Text"
},
"description": "Find a meme that captures a vibe, idea, or concept. Returns ready-to-embed images with citation blocks. Use this when writing posts, articles, or social content and you need a meme to illustrate a point.",
"inputSchema": {
"properties": {
"limit": {
"description": "How many memes to return (1-20, default 5)",
"type": "number"
},
"vibe": {
"description": "The vibe, topic, or idea you want a meme for",
"type": "string"
}
},
"required": [
"vibe"
],
"type": "object"
},
"name": "find_meme_for_text"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Popular Tags"
},
"description": "List the most-used tags on MemeStack by all-time usage count. (Time-period filtering is not yet supported \u2014 tag usage is currently counted across the full lifetime of each tag.)",
"inputSchema": {
"properties": {
"limit": {
"description": "How many tags to return (1-100, default 20)",
"type": "number"
}
},
"type": "object"
},
"name": "popular_tags"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Tag Autocomplete"
},
"description": "Suggest tag slugs matching a prefix. Use this to verify a tag exists before filtering by it, or to discover related tags. Prefix must be \u2265 2 characters.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max suggestions (1-50, default 10)",
"type": "number"
},
"prefix": {
"minLength": 2,
"type": "string"
}
},
"required": [
"prefix"
],
"type": "object"
},
"name": "tag_autocomplete"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Cite Image"
},
"description": "Generate canonical attribution blocks for one or more MemeStack images. Returns markdown, HTML, and plain-text citation strings ready to paste into your output, plus a combined block for citing multiple images at once.",
"inputSchema": {
"properties": {
"image_ids": {
"description": "Up to 50 image UUIDs",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"image_ids"
],
"type": "object"
},
"name": "cite_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Reverse Image Search"
},
"description": "Find MemeStack images that look visually similar to a given image. Accepts an HTTPS image URL or a `data:image/...;base64,...` URL for bytes pasted into agent context. Returns visually-similar matches via perceptual-hash (dHash) hamming distance, with citation blocks. Heavily rate-limited (10/min/IP) since each call hashes the input.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
},
"url": {
"description": "HTTPS image URL, or data:image/(jpeg|png|webp);base64,... URL",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "reverse_image_search"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"tier": "enterprise",
"title": "Submit Image"
},
"description": "Submit an image to MemeStack. Currently in preview \u2014 see https://memestack.ai/mcp/agent-tier for access details.",
"inputSchema": {
"properties": {
"caption": {
"type": "string"
},
"image_url": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"image_url"
],
"type": "object"
},
"name": "submit_image"
}
]
}
},
"url": "https://mcp.memestack.ai/mcp"
},
"latency_ms": 13.43,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search Images"
},
"description": "Search the MemeStack image gallery. Runs semantic AI and keyword matching in parallel and merges results. Returns images with captions, tags, zap stats, and URLs.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"query": {
"description": "Search query \u2014 combines semantic AI and keyword matching automatically",
"type": "string"
},
"sort": {
"description": "Sort order (default: relevance)",
"enum": [
"newest",
"popular",
"oldest"
],
"type": "string"
},
"tag": {
"description": "Filter results by a single tag slug (backward compat)",
"type": "string"
},
"tags": {
"description": "Filter results by multiple tag slugs (comma-separated, AND logic \u2014 e.g. \"bitcoin,meme\")",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Image Details"
},
"description": "Get full metadata for a specific image by ID, including caption, alt text, tags, OCR text, zap stats, and URLs.",
"inputSchema": {
"properties": {
"id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Similar Images"
},
"description": "Find visually similar images using perceptual hash matching. Returns images that look alike.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_similar"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Related Images"
},
"description": "Find semantically related images using AI embedding similarity. Returns images with similar meaning/topic.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_related"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse Images"
},
"description": "Browse and filter the image gallery without a search query. Useful for discovering content by tag, trending, or recent uploads.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"sort": {
"description": "Sort order (default: newest)",
"enum": [
"newest",
"popular",
"oldest",
"trending"
],
"type": "string"
},
"tag": {
"description": "Filter by tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"type": "object"
},
"name": "browse_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get User Profile"
},
"description": "Get a user's public profile including display name, stats, and avatar info.",
"inputSchema": {
"properties": {
"identifier": {
"description": "User public key (hex) or UUID",
"type": "string"
}
},
"required": [
"identifier"
],
"type": "object"
},
"name": "get_user_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Leaderboard"
},
"description": "Get top-ranked images by zaps received, or top zappers by amount zapped, over a time period.",
"inputSchema": {
"properties": {
"period": {
"description": "Time period (default: week)",
"enum": [
"day",
"week",
"month",
"all"
],
"type": "string"
},
"type": {
"description": "Leaderboard type",
"enum": [
"images",
"zappers"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"name": "get_leaderboard"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Tag"
},
"description": "Browse images for a specific tag. Returns the tag profile (description, stats) and optionally a paginated list of images tagged with it.",
"inputSchema": {
"properties": {
"limit": {
"description": "Images per page (1-50, default 10). When provided, images are included in the response.",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\", \"lightning\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "browse_by_tag"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Category"
},
"description": "Get a category and its featured images. Categories group related tags (e.g. \"charts\", \"memes\", \"lightning-network\").",
"inputSchema": {
"properties": {
"category": {
"description": "Category slug (e.g. \"charts\", \"memes\")",
"type": "string"
}
},
"required": [
"category"
],
"type": "object"
},
"name": "browse_by_category"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "List Categories"
},
"description": "List all available image categories. Use this to discover what categories exist before calling browse_by_category.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_categories"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Tag Profile"
},
"description": "Get the profile for a tag (description, image count, total zaps, related tags) without fetching any images. Use browse_by_tag to also retrieve images.",
"inputSchema": {
"properties": {
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "get_tag_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Mutation Group"
},
"description": "Get all variants of a meme template tracked on MemeStack. Returns the dominant image plus every variant in the same mutation group, with citation blocks for each. Use this to research how a meme has evolved or to find variants of a known image.",
"inputSchema": {
"properties": {
"image_id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"image_id"
],
"type": "object"
},
"name": "get_mutation_group"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search OCR Text"
},
"description": "Search for images by the text written or printed in them (OCR). Different from regular search \u2014 only matches the text_in_image field, not captions or tags. Use this to find screenshots of specific quotes, signs, watermarks, or memes with specific embedded text.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset",
"type": "number"
},
"query": {
"description": "Text to search for in image OCR",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_text_in_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Meme For Text"
},
"description": "Find a meme that captures a vibe, idea, or concept. Returns ready-to-embed images with citation blocks. Use this when writing posts, articles, or social content and you need a meme to illustrate a point.",
"inputSchema": {
"properties": {
"limit": {
"description": "How many memes to return (1-20, default 5)",
"type": "number"
},
"vibe": {
"description": "The vibe, topic, or idea you want a meme for",
"type": "string"
}
},
"required": [
"vibe"
],
"type": "object"
},
"name": "find_meme_for_text"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Popular Tags"
},
"description": "List the most-used tags on MemeStack by all-time usage count. (Time-period filtering is not yet supported \u2014 tag usage is currently counted across the full lifetime of each tag.)",
"inputSchema": {
"properties": {
"limit": {
"description": "How many tags to return (1-100, default 20)",
"type": "number"
}
},
"type": "object"
},
"name": "popular_tags"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Tag Autocomplete"
},
"description": "Suggest tag slugs matching a prefix. Use this to verify a tag exists before filtering by it, or to discover related tags. Prefix must be \u2265 2 characters.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max suggestions (1-50, default 10)",
"type": "number"
},
"prefix": {
"minLength": 2,
"type": "string"
}
},
"required": [
"prefix"
],
"type": "object"
},
"name": "tag_autocomplete"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Cite Image"
},
"description": "Generate canonical attribution blocks for one or more MemeStack images. Returns markdown, HTML, and plain-text citation strings ready to paste into your output, plus a combined block for citing multiple images at once.",
"inputSchema": {
"properties": {
"image_ids": {
"description": "Up to 50 image UUIDs",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"image_ids"
],
"type": "object"
},
"name": "cite_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Reverse Image Search"
},
"description": "Find MemeStack images that look visually similar to a given image. Accepts an HTTPS image URL or a `data:image/...;base64,...` URL for bytes pasted into agent context. Returns visually-similar matches via perceptual-hash (dHash) hamming distance, with citation blocks. Heavily rate-limited (10/min/IP) since each call hashes the input.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
},
"url": {
"description": "HTTPS image URL, or data:image/(jpeg|png|webp);base64,... URL",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "reverse_image_search"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"tier": "enterprise",
"title": "Submit Image"
},
"description": "Submit an image to MemeStack. Currently in preview \u2014 see https://memestack.ai/mcp/agent-tier for access details.",
"inputSchema": {
"properties": {
"caption": {
"type": "string"
},
"image_url": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"image_url"
],
"type": "object"
},
"name": "submit_image"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-06-18",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 15.16,
"status": "error"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": {
"argument_name": "topic",
"name": "search_memes",
"type": "prompt"
}
},
"initialize_capability_keys": [
"prompts",
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 12.71,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.memestack.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.memestack.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.memestack.ai/.well-known/mcp/server-card.json"
},
"transport_compliance_probe": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json"
},
"bad_protocol_payload": {
"id": 410,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search Images"
},
"description": "Search the MemeStack image gallery. Runs semantic AI and keyword matching in parallel and merges results. Returns images with captions, tags, zap stats, and URLs.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"query": {
"description": "Search query \u2014 combines semantic AI and keyword matching automatically",
"type": "string"
},
"sort": {
"description": "Sort order (default: relevance)",
"enum": [
"newest",
"popular",
"oldest"
],
"type": "string"
},
"tag": {
"description": "Filter results by a single tag slug (backward compat)",
"type": "string"
},
"tags": {
"description": "Filter results by multiple tag slugs (comma-separated, AND logic \u2014 e.g. \"bitcoin,meme\")",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Image Details"
},
"description": "Get full metadata for a specific image by ID, including caption, alt text, tags, OCR text, zap stats, and URLs.",
"inputSchema": {
"properties": {
"id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Similar Images"
},
"description": "Find visually similar images using perceptual hash matching. Returns images that look alike.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_similar"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Related Images"
},
"description": "Find semantically related images using AI embedding similarity. Returns images with similar meaning/topic.",
"inputSchema": {
"properties": {
"id": {
"description": "Source image UUID",
"type": "string"
},
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "find_related"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse Images"
},
"description": "Browse and filter the image gallery without a search query. Useful for discovering content by tag, trending, or recent uploads.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"sort": {
"description": "Sort order (default: newest)",
"enum": [
"newest",
"popular",
"oldest",
"trending"
],
"type": "string"
},
"tag": {
"description": "Filter by tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"type": "object"
},
"name": "browse_images"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get User Profile"
},
"description": "Get a user's public profile including display name, stats, and avatar info.",
"inputSchema": {
"properties": {
"identifier": {
"description": "User public key (hex) or UUID",
"type": "string"
}
},
"required": [
"identifier"
],
"type": "object"
},
"name": "get_user_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Leaderboard"
},
"description": "Get top-ranked images by zaps received, or top zappers by amount zapped, over a time period.",
"inputSchema": {
"properties": {
"period": {
"description": "Time period (default: week)",
"enum": [
"day",
"week",
"month",
"all"
],
"type": "string"
},
"type": {
"description": "Leaderboard type",
"enum": [
"images",
"zappers"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"name": "get_leaderboard"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Tag"
},
"description": "Browse images for a specific tag. Returns the tag profile (description, stats) and optionally a paginated list of images tagged with it.",
"inputSchema": {
"properties": {
"limit": {
"description": "Images per page (1-50, default 10). When provided, images are included in the response.",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\", \"lightning\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "browse_by_tag"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Browse by Category"
},
"description": "Get a category and its featured images. Categories group related tags (e.g. \"charts\", \"memes\", \"lightning-network\").",
"inputSchema": {
"properties": {
"category": {
"description": "Category slug (e.g. \"charts\", \"memes\")",
"type": "string"
}
},
"required": [
"category"
],
"type": "object"
},
"name": "browse_by_category"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "List Categories"
},
"description": "List all available image categories. Use this to discover what categories exist before calling browse_by_category.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_categories"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Tag Profile"
},
"description": "Get the profile for a tag (description, image count, total zaps, related tags) without fetching any images. Use browse_by_tag to also retrieve images.",
"inputSchema": {
"properties": {
"tag": {
"description": "Tag slug (e.g. \"bitcoin\", \"meme\")",
"type": "string"
}
},
"required": [
"tag"
],
"type": "object"
},
"name": "get_tag_profile"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Get Mutation Group"
},
"description": "Get all variants of a meme template tracked on MemeStack. Returns the dominant image plus every variant in the same mutation group, with citation blocks for each. Use this to research how a meme has evolved or to find variants of a known image.",
"inputSchema": {
"properties": {
"image_id": {
"description": "Image UUID",
"type": "string"
}
},
"required": [
"image_id"
],
"type": "object"
},
"name": "get_mutation_group"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Search OCR Text"
},
"description": "Search for images by the text written or printed in them (OCR). Different from regular search \u2014 only matches the text_in_image field, not captions or tags. Use this to find screenshots of specific quotes, signs, watermarks, or memes with specific embedded text.",
"inputSchema": {
"properties": {
"limit": {
"description": "Results per page (1-50, default 10)",
"type": "number"
},
"offset": {
"description": "Pagination offset",
"type": "number"
},
"query": {
"description": "Text to search for in image OCR",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_text_in_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Find Meme For Text"
},
"description": "Find a meme that captures a vibe, idea, or concept. Returns ready-to-embed images with citation blocks. Use this when writing posts, articles, or social content and you need a meme to illustrate a point.",
"inputSchema": {
"properties": {
"limit": {
"description": "How many memes to return (1-20, default 5)",
"type": "number"
},
"vibe": {
"description": "The vibe, topic, or idea you want a meme for",
"type": "string"
}
},
"required": [
"vibe"
],
"type": "object"
},
"name": "find_meme_for_text"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Popular Tags"
},
"description": "List the most-used tags on MemeStack by all-time usage count. (Time-period filtering is not yet supported \u2014 tag usage is currently counted across the full lifetime of each tag.)",
"inputSchema": {
"properties": {
"limit": {
"description": "How many tags to return (1-100, default 20)",
"type": "number"
}
},
"type": "object"
},
"name": "popular_tags"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Tag Autocomplete"
},
"description": "Suggest tag slugs matching a prefix. Use this to verify a tag exists before filtering by it, or to discover related tags. Prefix must be \u2265 2 characters.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max suggestions (1-50, default 10)",
"type": "number"
},
"prefix": {
"minLength": 2,
"type": "string"
}
},
"required": [
"prefix"
],
"type": "object"
},
"name": "tag_autocomplete"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Cite Image"
},
"description": "Generate canonical attribution blocks for one or more MemeStack images. Returns markdown, HTML, and plain-text citation strings ready to paste into your output, plus a combined block for citing multiple images at once.",
"inputSchema": {
"properties": {
"image_ids": {
"description": "Up to 50 image UUIDs",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"type": "array"
}
},
"required": [
"image_ids"
],
"type": "object"
},
"name": "cite_image"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true,
"readOnlyHint": true,
"tier": "free",
"title": "Reverse Image Search"
},
"description": "Find MemeStack images that look visually similar to a given image. Accepts an HTTPS image URL or a `data:image/...;base64,...` URL for bytes pasted into agent context. Returns visually-similar matches via perceptual-hash (dHash) hamming distance, with citation blocks. Heavily rate-limited (10/min/IP) since each call hashes the input.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max results (1-20, default 10)",
"type": "number"
},
"url": {
"description": "HTTPS image URL, or data:image/(jpeg|png|webp);base64,... URL",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "reverse_image_search"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false,
"tier": "enterprise",
"title": "Submit Image"
},
"description": "Submit an image to MemeStack. Currently in preview \u2014 see https://memestack.ai/mcp/agent-tier for access details.",
"inputSchema": {
"properties": {
"caption": {
"type": "string"
},
"image_url": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"image_url"
],
"type": "object"
},
"name": "submit_image"
}
]
}
},
"bad_protocol_status_code": 200,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-06-18",
"session_id_present": false,
"transport": "streamable-http"
}
},
"remote_url": "https://mcp.memestack.ai/mcp",
"server_card_payload": null,
"server_identifier": "ai.memestack/mcp"
}
Known versions
1.0.0
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| May 13, 2026 02:13:15 PM UTC | Healthy | 74.0 | 318.9 ms | 19 |
| May 13, 2026 02:12:40 AM UTC | Healthy | 74.4 | 314.8 ms | 19 |
| May 12, 2026 02:02:52 PM UTC | Healthy | 74.0 | 412.0 ms | 19 |
| May 12, 2026 02:02:37 AM UTC | Healthy | 70.8 | 247.9 ms | 19 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| May 13, 2026 02:13:15 PM UTC | Healthy | 74.0 | 2025-06-18 | public | 19 | 3 | none |
| May 13, 2026 02:12:40 AM UTC | Healthy | 74.4 | 2025-06-18 | public | 19 | 3 | none |
| May 12, 2026 02:02:52 PM UTC | Healthy | 74.0 | 2025-06-18 | public | 19 | 3 | none |
| May 12, 2026 02:02:37 AM UTC | Healthy | 70.8 | 2025-06-18 | public | 19 | 3 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| May 13, 2026 02:13:15 PM UTC | Completed | Healthy | 318.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 13, 2026 02:12:40 AM UTC | Completed | Healthy | 314.8 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 12, 2026 02:02:52 PM UTC | Completed | Healthy | 412.0 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 12, 2026 02:02:37 AM UTC | Completed | Healthy | 247.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |